小强的程序越写越长,同样的代码复制了一遍又一遍,改一处要改十处,bug 满天飞。老师教了他一个魔法词:函数——把一段逻辑打包、起个名字、随叫随到。这个学期学会列表、字典、函数这「三大件」,你写出来的程序才真正称得上「作品」。
学会用列表、字典组织数据,用函数封装逻辑,写出结构清晰、可复用的程序。
用故事和生活类比打开这学期的大门,先「知其所以然」再学语法。
小强的程序越写越长,同样的代码复制了一遍又一遍,改一处要改十处,bug 满天飞。老师教了他一个魔法词:函数——把一段逻辑打包、起个名字、随叫随到。这个学期学会列表、字典、函数这「三大件」,你写出来的程序才真正称得上「作品」。
一节节车厢按顺序装货,随时加挂车厢(append)、摘除车厢(remove)。
有序容器按名字查电话,不用从头翻到尾,一秒直达。
键值对工序封装做一次,加热即食吃无数次,改配方只改一处。
逻辑复用打开一层里面还有一层,直到最小的那层(终止条件)为止。
自己调用自己数据集合与函数封装 —— 共 12 课时,全部知识点一网打尽。
shopping = ["牛奶", "面包"]
shopping.append("鸡蛋") # 加一件
shopping.remove("面包") # 删一件
shopping[0] = "酸奶" # 改第一件
print("共", len(shopping), "件:", shopping)共 2 件: ['酸奶', '鸡蛋']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]contacts = {"小明": "138xxxx1234"}
contacts["小红"] = "139xxxx5678" # 新增
contacts["小明"] = "137xxxx0000" # 修改
for name, tel in contacts.items(): # 遍历
print(f"{name}: {tel}")
print("查无此人时:", contacts.get("小刚", "未记录"))小明: 137xxxx0000
小红: 139xxxx5678
查无此人时: 未记录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 = 5def area(w, h=1): # h 有默认值
return w * h
print(area(3, 4)) # 传两个参数
print(area(5)) # h 用默认值 112
5import 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}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 # 写日记(追加模式)
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())今天学会了文件读写!try:
a = int(input("第一个数:"))
b = int(input("第二个数:"))
print("商 =", a / b)
except ValueError:
print("请输入数字!")
except ZeroDivisionError:
print("除数不能为 0!")
finally:
print("计算结束")第一个数:10
第二个数:0
除数不能为 0!
计算结束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-13squares = [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]# 简易信息管理系统:增删查
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每个知识点都要落到能跑、能玩、能演示的作品上。
期末项目是整学期知识点的综合检验场:综合运用。学生将独立完成需求拆解 → 功能实现 → 调试打磨 → 上台演示的完整闭环。
| 课次 | 主题 | 趣味项目 | 知识点 |
|---|---|---|---|
| 1 | 列表入门 | 我的购物清单 | list基础操作 |
| 2 | 列表进阶 | 学生成绩管理系统 | 列表增删改查、排序 |
| 3 | 字典 | 通讯录程序 | dict字典操作 |
| 4 | 元组与集合 | 去重小工具 | tuple、set |
| 5 | 函数入门 | 面积计算器 | 函数定义、参数 |
| 6 | 函数进阶 | 掷骰子1000次统计 | 返回值、默认参数 |
| 7 | 递归初探 | 斐波那契数列 | 递归思想 |
| 8 | 文件读写 | 日记本程序 | open文件操作 |
| 9 | 异常处理 | 健壮的计算器 | try-except |
| 10 | 模块使用 | 时间显示工具 | import、datetime |
| 11 | 列表推导式 | 快速生成数据 | 推导式语法 |
| 12 | 期末项目 | 学生信息管理系统 | 综合运用 |
把一学期的知识点串成体系,看清来路与去向。
◀ 上一章:一年级 上学期 · 认识Python,做出第一个程序
下一章 ▶:二年级 上学期 · 算法基础与Pygame入门
学会用列表、字典组织数据,用函数封装逻辑,写出结构清晰、可复用的程序。
结业时你将带走:3 个可玩游戏作品 + 一套算法思维 + NOAI 初赛参赛能力。
避开高频易错点,再用速查表把语法焊进肌肉记忆。
lst = [1, 2, 3]
print(lst[3]) # IndexErrorprint(lst[2]) # 3d = {"name": "小强"}
print(d["age"]) # KeyErrorprint(d.get("age", "没填"))def add(a, b):
a + b # 没交出结果def add(a, b):
return a + btry:
x = int(input())
except: # 什么错都吞
passtry:
x = int(input())
except ValueError:
print("请输入数字")| 功能 | 写法 | 一句话理解 |
|---|---|---|
| 加元素 | 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 组。