第 02 章 · 一年级(小学三年级) 下学期

数据集合与函数封装

学会用列表、字典组织数据,用函数封装逻辑,写出结构清晰、可复用的程序。

12 课时 17 个知识点 4 大易错点 3 档分层作业
一年级上一年级下二年级上二年级下三年级上三年级下四年级上四年级下五年级上五年级下六年级上六年级下七年级上七年级下
01

情景导航

用故事和生活类比打开这学期的大门,先「知其所以然」再学语法。

小强的程序越写越长,同样的代码复制了一遍又一遍,改一处要改十处,bug 满天飞。老师教了他一个魔法词:函数——把一段逻辑打包、起个名字、随叫随到。这个学期学会列表、字典、函数这「三大件」,你写出来的程序才真正称得上「作品」。

💯生活类比:把新知识挂在旧经验上
📋

列表 = 火车

一节节车厢按顺序装货,随时加挂车厢(append)、摘除车厢(remove)。

有序容器
📖

字典 = 通讯录

按名字查电话,不用从头翻到尾,一秒直达。

键值对
🍱

函数 = 预制菜

工序封装做一次,加热即食吃无数次,改配方只改一处。

逻辑复用
🎁

递归 = 俄罗斯套娃

打开一层里面还有一层,直到最小的那层(终止条件)为止。

自己调用自己
核 心 口 诀列表有序可重复,字典按键查数据;
函数封装一遍写,多次调用顶呱呱;
try-except兜住错,程序健壮不崩溃!
02

知识探究

数据集合与函数封装 —— 共 12 课时,全部知识点一网打尽。

📋数据容器(4 课时)
第1课列表入门
🎯 趣味项目:我的购物清单📚 教学目标:掌握list基础操作,在项目实战中巩固运用
list基础操作
Python列表入门:购物清单
shopping = ["牛奶", "面包"]
shopping.append("鸡蛋")        # 加一件
shopping.remove("面包")       # 删一件
shopping[0] = "酸奶"          # 改第一件
print("共", len(shopping), "件:", shopping)
运 行 结 果
共 2 件: ['酸奶', '鸡蛋']
第2课列表进阶
🎯 趣味项目:学生成绩管理系统📚 教学目标:掌握列表增删改查、排序,在项目实战中巩固运用
列表增删改查排序
Python列表排序:成绩统计
scores = [88, 92, 75, 60, 95]
scores.sort()                       # 从小到大
print("最低分:", scores[0])
print("最高分:", scores[-1])       # -1 表示最后一个
scores.sort(reverse=True)           # 从大到小
print("前三名:", scores[:3])       # 切片取前3
运 行 结 果
最低分: 60
最高分: 95
前三名: [95, 92, 88]
第3课字典
🎯 趣味项目:通讯录程序📚 教学目标:掌握dict字典操作,在项目实战中巩固运用
dict字典操作
Python字典:通讯录
contacts = {"小明": "138xxxx1234"}
contacts["小红"] = "139xxxx5678"     # 新增
contacts["小明"] = "137xxxx0000"     # 修改
for name, tel in contacts.items():   # 遍历
    print(f"{name}: {tel}")
print("查无此人时:", contacts.get("小刚", "未记录"))
运 行 结 果
小明: 137xxxx0000
小红: 139xxxx5678
查无此人时: 未记录
第4课元组与集合
🎯 趣味项目:去重小工具📚 教学目标:掌握tuple、set,在项目实战中巩固运用
tupleset
Python元组与集合:去重
nums = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(nums))         # 集合一键去重
print("去重后:", unique)
point = (3, 5)                   # 元组:不可改的坐标
print("x =", point[0], "y =", point[1])
运 行 结 果
去重后: [1, 2, 3, 4]
x = 3 y = 5
🍱函数与递归(3 课时)
第5课函数入门
🎯 趣味项目:面积计算器📚 教学目标:掌握函数定义、参数,在项目实战中巩固运用
函数定义参数
Python函数:面积计算器
def area(w, h=1):            # h 有默认值
    return w * h

print(area(3, 4))     # 传两个参数
print(area(5))        # h 用默认值 1
运 行 结 果
12
5
第6课函数进阶
🎯 趣味项目:掷骰子1000次统计📚 教学目标:掌握返回值、默认参数,在项目实战中巩固运用
返回值默认参数
Python函数返回值:掷骰子统计
import random
def roll_dice(times=1000):
    counts = {}                 # 记录每个点数出现次数
    for _ in range(times):
        n = random.randint(1, 6)
        counts[n] = counts.get(n, 0) + 1
    return counts

result = roll_dice(10000)       # 掷一万次
print("每个点数出现次数:", result)
运 行 结 果
每个点数出现次数: {3: 1712, 1: 1648, 5: 1655, 6: 1687, 4: 1639, 2: 1659}
第7课递归初探
🎯 趣味项目:斐波那契数列📚 教学目标:掌握递归思想,在项目实战中巩固运用
递归思想
Python递归:斐波那契数列
def fib(n):
    if n <= 2:          # 终止条件(出口)
        return 1
    return fib(n-1) + fib(n-2)   # 自己调用自己

for i in range(1, 8):
    print(fib(i), end=" ")
运 行 结 果
1 1 2 3 5 8 13 
🛠️工程化能力(4 课时)
第8课文件读写
🎯 趣味项目:日记本程序📚 教学目标:掌握open文件操作,在项目实战中巩固运用
open文件操作
Python文件读写:日记本
# 写日记(追加模式)
with open("diary.txt", "a", encoding="utf-8") as f:
    f.write("今天学会了文件读写!\n")

# 读日记
with open("diary.txt", "r", encoding="utf-8") as f:
    print(f.read())
运 行 结 果
今天学会了文件读写!
第9课异常处理
🎯 趣味项目:健壮的计算器📚 教学目标:掌握try-except,在项目实战中巩固运用
try-except
Python异常处理:健壮的计算器
try:
    a = int(input("第一个数:"))
    b = int(input("第二个数:"))
    print("商 =", a / b)
except ValueError:
    print("请输入数字!")
except ZeroDivisionError:
    print("除数不能为 0!")
finally:
    print("计算结束")
运 行 结 果
第一个数:10
第二个数:0
除数不能为 0!
计算结束
第10课模块使用
🎯 趣味项目:时间显示工具📚 教学目标:掌握import、datetime,在项目实战中巩固运用
importdatetime
Python模块与时间
from datetime import datetime, timedelta

now = datetime.now()
print("现在:", now.strftime("%Y年%m月%d日 %H:%M"))
future = now + timedelta(days=100)     # 100 天后
print("100天后:", future.date())
运 行 结 果
现在: 2026年09月04日 15:30
100天后: 2026-12-13
第11课列表推导式
🎯 趣味项目:快速生成数据📚 教学目标:掌握推导式语法,在项目实战中巩固运用
推导式语法
Python列表推导式
squares = [x * x for x in range(1, 11)]
print("平方表:", squares)

evens = [x for x in range(1, 21) if x % 2 == 0]
print("1~20 的偶数:", evens)
运 行 结 果
平方表: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
1~20 的偶数: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
🏆综合实战(1 课时)
🏆 期末项目期末项目
🎯 趣味项目:学生信息管理系统📚 教学目标:掌握综合运用,在项目实战中巩固运用
综合运用
Python期末项目:学生信息管理系统
# 简易信息管理系统:增删查
students = []
def add(name, score):
    students.append({"name": name, "score": score})

add("小明", 92)
add("小红", 88)
found = [s for s in students if s["score"] >= 90]
print("90分以上:", [s["name"] for s in found])
print("平均分:", sum(s["score"] for s in students) / len(students))
运 行 结 果
90分以上: ['小明']
平均分: 90.0
03

实践应用

每个知识点都要落到能跑、能玩、能演示的作品上。

🏆 期末项目学生信息管理系统

期末项目是整学期知识点的综合检验场:综合运用。学生将独立完成需求拆解 → 功能实现 → 调试打磨 → 上台演示的完整闭环。

💡 验收标准:功能完整可运行、代码结构清晰、能给同学讲明白实现原理。
📊本学期课时一览表(可打印)
课次主题趣味项目知识点
1列表入门我的购物清单list基础操作
2列表进阶学生成绩管理系统列表增删改查、排序
3字典通讯录程序dict字典操作
4元组与集合去重小工具tuple、set
5函数入门面积计算器函数定义、参数
6函数进阶掷骰子1000次统计返回值、默认参数
7递归初探斐波那契数列递归思想
8文件读写日记本程序open文件操作
9异常处理健壮的计算器try-except
10模块使用时间显示工具import、datetime
11列表推导式快速生成数据推导式语法
12期末项目学生信息管理系统综合运用
04

总结提升

把一学期的知识点串成体系,看清来路与去向。

📌知识点体系图
📋 数据容器
list基础操作列表增删改查排序dict字典操作tupleset
🍱 函数与递归
函数定义参数返回值默认参数递归思想
🛠️ 工程化能力
open文件操作try-exceptimportdatetime推导式语法
🏆 综合实战
综合运用
🔄承上启下

◀ 上一章:一年级 上学期 · 认识Python,做出第一个程序

下一章 ▶:二年级 上学期 · 算法基础与Pygame入门

💪 学完这学期,你将获得

学会用列表、字典组织数据,用函数封装逻辑,写出结构清晰、可复用的程序。

结业时你将带走:3 个可玩游戏作品 + 一套算法思维 + NOAI 初赛参赛能力。

05

学习检测

避开高频易错点,再用速查表把语法焊进肌肉记忆。

易错点 1

列表越界

✗ 错误写法
lst = [1, 2, 3]
print(lst[3])  # IndexError
✓ 正确写法
print(lst[2])  # 3
💡 为什么:长度为 3 的列表,下标只有 0、1、2;取不到的下标会直接报错。
易错点 2

字典键不存在

✗ 错误写法
d = {"name": "小强"}
print(d["age"])  # KeyError
✓ 正确写法
print(d.get("age", "没填"))
💡 为什么:访问不存在的键会崩,用 .get() 可以给默认值兜底。
易错点 3

函数忘记 return

✗ 错误写法
def add(a, b):
    a + b   # 没交出结果
✓ 正确写法
def add(a, b):
    return a + b
💡 为什么:函数内部算出的值,必须 return 交出去,否则调用者拿到的是 None。
易错点 4

except 一网打尽

✗ 错误写法
try:
    x = int(input())
except:  # 什么错都吞
    pass
✓ 正确写法
try:
    x = int(input())
except ValueError:
    print("请输入数字")
💡 为什么:裸 except 会把拼写错误等 bug 也藏起来,要精确捕获异常类型。
📋语法速查表
功能写法一句话理解
加元素lst.append(x)在列表末尾追加一个元素
排序lst.sort(reverse=True)原地排序,reverse=True 从大到小
存键值d["key"] = "值"往字典里放一对键值
定义函数def area(w, h=1):h 不传时默认为 1(默认参数)
返回结果return 值把结果交还给调用者
读文件open("日记.txt", "r", encoding="utf-8")r 读 / w 写 / a 追加
异常处理try: … except ValueError:出错不崩溃,转走兜底逻辑
推导式[x * x for x in range(10)]一行生成整个列表
分 层 作 业

练习作业

按 A / B / C 三档难度自主选择:保底完成 A 组,学有余力挑战 B、C 组。

A组·基础任选其一深入完成
  1. 建一个购物清单列表,完成增、删、改、查四种操作。
  2. 写函数 max3(a, b, c) 返回三个数中的最大值。
  3. 统计列表 [3,7,2,8,5,10,6] 中偶数的个数。
B组·提高任选其一深入完成
  1. 通讯录程序:菜单式交互,支持增删查改。
  2. 掷骰子 1000 次,统计每个点数出现的次数,用字符画出柱状图。
  3. 读取一篇英语短文,统计每个单词出现的次数(词频表)。
C组·挑战任选其一深入完成
  1. 学生信息管理系统:数据用 JSON 文件存档,重启不丢。
  2. 用递归打印谢尔宾斯基三角形(字符版)。
  3. 用推导式一行生成九九乘法表的全部算式。