Python第一周复习:思维导图 + 10道练习题,检测学习成果
·
Python第一周复习:思维导图 + 10道练习题,检测学习成果
一周的时间,我们从零开始学了Python基础。每天3篇文章,共计17篇(实际完成15篇)。这篇文章做一个系统复习,画出思维导图,再出10道练习题检测掌握程度。
一句话概括
这篇文章解决一个问题:用思维导图梳理第一周知识框架,通过10道练习题检测学习成果。
第一周知识思维导图
Python基础(第一周)
│
├── 环境搭建
│ ├── Anaconda安装
│ ├── Conda环境管理
│ └── PyCharm配置
│
├── 基础语法
│ ├── 变量与数据类型
│ │ ├── int/float/str/bool
│ │ ├── 类型转换
│ │ └── f-string格式化
│ │
│ ├── 运算符
│ │ ├── 算术运算符
│ │ ├── 比较运算符
│ │ └── 逻辑运算符
│ │
│ └── 字符串
│ ├── 索引与切片
│ ├── 常用方法
│ └── 格式化输出
│
├── 控制流
│ ├── 条件判断:if/elif/else
│ └── 循环:for/while
│ ├── break
│ ├── continue
│ └── range()
│
├── 数据结构
│ ├── 列表 List
│ │ ├── 增删改查
│ │ ├── 切片
│ │ └── 列表推导式
│ │
│ ├── 字典 Dict
│ │ ├── 键值对
│ │ ├── get()方法
│ │ └── defaultdict
│ │
│ ├── 集合 Set
│ │ ├── 去重
│ │ └── 集合运算
│ │
│ └── 元组 Tuple
│ ├── 不可变性
│ └── 元组拆包
│
├── 函数
│ ├── def定义
│ ├── 参数:位置/默认/*args/**kwargs
│ ├── 返回值:return
│ ├── 作用域
│ └── lambda匿名函数
│
└── 文件与OOP
├── 文件读写
│ ├── with open
│ ├── 文本文件
│ └── CSV文件
│
└── 面向对象
├── class定义
├── __init__
├── 继承
└── 封装
10道练习题
练习1:猜数字游戏(必做题)
实现一个猜数字游戏,计算机会随机想一个1-100的数,用户来猜,告诉用户猜大了还是猜小了,统计猜了几次。
import random
def guess_game():
answer = random.randint(1, 100)
count = 0
print("我想了一个1-100之间的数字,你来猜!")
while True:
guess = int(input("请输入你猜的数字:"))
count += 1
if guess > answer:
print("猜大了!")
elif guess < answer:
print("猜小了!")
else:
print(f"🎉 恭喜猜对了!你一共猜了 {count} 次。")
break
# 运行
guess_game()
练习2:九九乘法表
用循环打印九九乘法表(上三角格式)。
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}*{i}={i*j}", end="\t")
print()
练习3:列表去重
写一个函数,去除列表中的重复元素,同时保持原来的顺序。
def unique(lst):
seen = set()
result = []
for item in lst:
if item not in seen:
seen.add(item)
result.append(item)
return result
# 测试
print(unique([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])) # [1, 2, 3, 4]
练习4:统计单词出现频率
统计一段文本中每个单词出现的次数,按频率从高到低排序。
from collections import defaultdict
def word_frequency(text):
words = text.lower().split()
freq = defaultdict(int)
for word in words:
freq[word] += 1
return sorted(freq.items(), key=lambda x: x[1], reverse=True)
text = "python is great python is easy python is fun"
for word, count in word_frequency(text):
print(f"{word}: {count}")
练习5:CSV成绩统计
读取一个CSV文件(姓名,数学,英语),计算每个学生的总分和平均分,输出到新文件。
import csv
def calc_scores(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
rows = list(reader)
with open(output_file, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '数学', '英语', '总分', '平均分'])
for row in rows:
math = int(row['数学'])
english = int(row['英语'])
total = math + english
avg = total / 2
writer.writerow([row['姓名'], math, english, total, f'{avg:.1f}'])
练习6:lambda和filter
用一行lambda和filter,从一个数字列表中找出所有偶数。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens) # [2, 4, 6, 8, 10]
练习7:银行账户类
定义一个银行账户类,支持存钱、取钱、查看余额。
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
if amount > 0:
self.balance += amount
return f"存款成功,余额:{self.balance}"
return "存款失败"
def withdraw(self, amount):
if amount > self.balance:
return "余额不足"
self.balance -= amount
return f"取款成功,余额:{self.balance}"
def show(self):
return f"{self.owner},余额:{self.balance}"
练习8:文件词频统计
读取一个文本文件,统计出现频率最高的5个单词。
def top_words(filename, n=5):
with open(filename, 'r', encoding='utf-8') as f:
text = f.read().lower()
# 提取单词(只保留字母)
import re
words = re.findall(r'[a-z]+', text)
# 统计
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
# 排序
sorted_words = sorted(freq.items(), key=lambda x: x[1], reverse=True)
return sorted_words[:n]
练习9:嵌套列表展开
把嵌套列表 [[1,2], [3,4], [5,6]] 展开成 [1,2,3,4,5,6]。
nested = [[1, 2], [3, 4], [5, 6]]
# 方法1:列表推导式
flat = [item for sublist in nested for item in sublist]
# 方法2:sum
flat = sum(nested, [])
# 方法3:itertools
from itertools import chain
flat = list(chain.from_iterable(nested))
练习10:学生成绩排序
有一个学生列表,每个学生是 {"name": "小明", "score": 85} 这种格式,按成绩从高到低排序。
students = [
{"name": "小明", "score": 85},
{"name": "小红", "score": 92},
{"name": "小李", "score": 78},
{"name": "小刚", "score": 90},
]
# 方法1:lambda
sorted_students = sorted(students, key=lambda x: x["score"], reverse=True)
# 方法2:运算符模块
from operator import itemgetter
sorted_students = sorted(students, key=itemgetter("score"), reverse=True)
学习建议
已经掌握的:
- Python基本语法(变量、运算符、条件判断、循环)
- 常用数据结构(列表、字典、集合)
- 函数定义和调用
- 文件读写基础
- 面向对象入门
还需要加强的(第二周建议):
- 更复杂的算法思维
- 模块和包的使用
- 错误处理和调试技巧
- 简单项目实战
写在最后
恭喜你完成了Python基础的第一周学习!
这一周我们覆盖了Python最核心的基础知识:语法、数据类型、控制流、数据结构、函数、文件、OOP。
学习编程没有捷径,只有多写多练。第二周会继续深入,包括:
- 模块与包
- 异常处理进阶
- 装饰器
- 生成器
- 常用标准库(os、sys、datetime等)
有问题欢迎评论区交流,我们下周一见!
参考资料:
更多推荐


所有评论(0)