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等)

有问题欢迎评论区交流,我们下周一见!


参考资料

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐