07 / 90

Day 07:每周复习——值、条件与安全的 Git

低新内容的复习日:用新的输入凭记忆提取第 04–06 天的内容(值与绑定、比较与显式条件、小差异与提交),最后独立自测。唯一的新内容是一条有脚手架的命令(git restore)和对第 08 天 for 循环的简短预览(不计评估)。提取练习、复习和独立检查共同填满 480 分钟的学习台账。

自主学习与 Python 480 分钟(8 小时专注学习)
01 120 分钟

合上笔记提取:值与绑定(第 04–05 天)

智能体协助练习:先写下自己的预测和实际输出,之后才可以请 AI 智能体解释或审阅,并且必须在证据中记录所受的协助。

先决条件

已完成第 06 天(包括其独立检查)。如果卡住,先回到第 06 天;关于值与绑定,复习第 04–05 天。

学习目标

凭记忆回想 repr、type 和 bool 如何描述一个值,以及重新绑定与修改(变异)有何不同,然后用从未见过的输入(包括空字符串和 Unicode 文本)在 Python 中验证。

操作说明

间隔复习: 第 04–05 天是两三天前的内容,所以今天先提取、再重读。先从记忆中把知识取出来再核对,比重读笔记记得更牢。本活动没有新内容。

1. 合上笔记。对第一段代码中的每个值,写下你预期的三列:repr、类型名和 bool。也预测最后一行(len 统计的是 Unicode 码位数,而不是字节数)。
2. 运行代码,标出所有与预测不符的行。
3. 对绑定代码同样先预测两行,再运行。
4. 对每处不符,用一句话写出你忘记的规则以及讲授它的那一天(值见第 04 天,变异与同一性见第 05 天)。

def show(value):
    print(repr(value), type(value).__name__, bool(value))
show(0.0)
show("0.0")
show("")
show("猫")
show([""])
show(None)
print(len("猫"), len("café"))
a = ["猫"]
b = a
a.append("犬")
print(b, a is b)
c = ["猫"]
d = c
c = c + ["犬"]
print(d, c is d)

练习与预测记录

制作预测表:每个值一行(0.0、"0.0"、""、"猫"、[""]、None),列为 repr / type / bool,并加上对 len("猫") 和 len("café") 的预测。然后预测绑定代码打印的两行,并说明哪个名字被修改了对象、哪个名字被重新绑定。

独立掌握标准

预测在运行前写好,覆盖全部六个值、两个 len 结果和绑定代码的两行;每处不符都有一句规则和一个恢复日(第 04 天或第 05 天)。

来源资源与出处

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

作者 / 机构: Python Software Foundation | 原始出处链接 ↗

对应章节 / 时间戳: 第 4.2–4.10 节(for、range、定义函数);数据结构见同一教程第 5 章

验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)

入选理由:

用于查阅 Python 迭代、函数和容器的第一手参考资料。

来源前置条件:

第 01–06 天的 Python 表达式与文件系统基础

安全回退方案(离线弹性):

教材内已讲解所有必需的行为,可以离线完成。

对比候选资源与选型分析 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

在语法层面定义相同的结构;选择教程章节是因为它循序渐进。

以讲座节奏讲解相同的控制流;由于本课程已通过终端练习推进这些概念,暂不采用。

02 120 分钟

提取练习:比较与显式条件(第 05–06 天)

智能体协助练习:先写下自己的预测和实际输出,之后才可以请 AI 智能体解释或审阅,并且必须在证据中记录所受的协助。

先决条件

今天的活动 1。如果对比较感到陌生,复习第 05 天;条件与输入规范化请复习第 06 天。

学习目标

回想 == 与 is 的区别,并凭记忆重写一个第 06 天风格的分类函数,用显式条件处理空输入、纯空白输入、十进制数字和 Unicode 数字。

操作说明

间隔复习: 本活动用新输入复习第 05 天(比较)和第 06 天(条件),所以无法依赖记住的答案。

1. 预测比较这一行打印的五个布尔值,然后运行。
2. 不看第 06 天,写出 label(raw):先 strip;结果为空字符串时返回 "missing";strip 后的文本是十进制数字时返回 "number " 加整数值;否则返回 "text " 加 strip 后的文本。运行自己的版本之前先预测六行输出。
3. 将你的函数与下面的参考实现比较,并运行两者。

print(0 == 0.0, "0" == 0, None is None, [] == [], [] is [])
def label(raw):
    text = raw.strip()
    if text == "":
        return "missing"
    if text.isdecimal():
        return "number " + str(int(text))
    return "text " + text
print(label("  猫 "))
print(label(""))
print(label("   "))
print(label("007"))
print(label("-3"))
print(label("٣"))

第 08 天预览(不计评估,有脚手架): 运行下面的循环,只需观察循环体对每个字符执行一次。明天会正式学习循环。

for ch in "猫a":
    print(ch, ch == "a")

练习与预测记录

写下五个比较的预测和你自己的 label(raw),再预测 " 猫 "、""、" "、"007"、"-3" 和 "٣"(阿拉伯-印度数字 3)的六个输出。运行后解释 "٣" 出人意料的结果。

独立掌握标准

五个比较预测和六个 label 预测都在运行前写好;你自己的 label(raw) 完全复现参考输出;能解释为什么 " " 是 missing、为什么 "٣" 是数字。

来源资源与出处

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

作者 / 机构: Python Software Foundation | 原始出处链接 ↗

对应章节 / 时间戳: 第 4.2–4.10 节(for、range、定义函数);数据结构见同一教程第 5 章

验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)

入选理由:

用于查阅 Python 迭代、函数和容器的第一手参考资料。

来源前置条件:

第 01–06 天的 Python 表达式与文件系统基础

安全回退方案(离线弹性):

教材内已讲解所有必需的行为,可以离线完成。

对比候选资源与选型分析 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

在语法层面定义相同的结构;选择教程章节是因为它循序渐进。

以讲座节奏讲解相同的控制流;由于本课程已通过终端练习推进这些概念,暂不采用。

03 120 分钟

安全 Git 复习:检查、校验、提交并恢复未提交的修改

智能体协助练习:先写下自己的预测和实际输出,之后才可以请 AI 智能体解释或审阅,并且必须在证据中记录所受的协助。

先决条件

今天的活动 1–2;已安装 Git。如果对 git diff 或小提交感到陌生,复习第 04 天活动 3 和第 06 天活动 3。

学习目标

在一次性仓库中复习第 04–06 天的安全修改流程(diff、diff --check、小提交、log),并用一条有脚手架的新命令 git restore 丢弃未提交的修改,再验证结果。

操作说明

间隔复习: 提交前检查差异已在第 04 天和第 06 天练习过;今天在新的练习仓库中凭记忆重复一遍。今天的新内容(有脚手架): git restore FILE 默认从索引(暂存区)恢复工作区中的已跟踪文件;它不改变索引,也不取消暂存的修改。在本练习仓库中,索引与 HEAD(最新提交)相同,因此丢弃未暂存的修改后会恢复为该已提交版本。它不能撤销提交;那是第 09 天的内容。

只在新的临时目录中操作,绝不在课程仓库中操作。每条命令之前先写下你预期的输出(“没有输出”也算一种预测)。然后运行整个序列:

cd "$(mktemp -d)"
git init -q
git config user.name "Learner"
git config user.email "[email protected]"
printf 'label: 猫\n' > notes.txt
git add notes.txt
git commit -q -m "Add notes"
printf 'label: 猫\ncount: 1\n' > notes.txt
git diff --stat
git diff --check
git add notes.txt
git commit -q -m "Add count line"
git log --format=%s
printf 'oops\n' >> notes.txt
git status --short
git restore notes.txt
git status --short
cat notes.txt

练习与预测记录

先预测 git diff --stat、git diff --check、git log --format=%s 以及两次 git status --short 的输出,再运行序列并记录实际输出。最后写出 git restore 之后的文件内容,并解释含 Unicode 的那一行 "label: 猫" 为什么保留了下来。

独立掌握标准

运行前记录了预测;实际输出与参考输出完全一致;能说明 git restore 适用的场合(已跟踪文件上未提交的修改),并说明它不能撤销提交。

来源资源与出处

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

作者 / 机构: Python Software Foundation | 原始出处链接 ↗

对应章节 / 时间戳: 第 4.2–4.10 节(for、range、定义函数);数据结构见同一教程第 5 章

验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)

入选理由:

用于查阅 Python 迭代、函数和容器的第一手参考资料。

来源前置条件:

第 01–06 天的 Python 表达式与文件系统基础

安全回退方案(离线弹性):

教材内已讲解所有必需的行为,可以离线完成。

对比候选资源与选型分析 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

在语法层面定义相同的结构;选择教程章节是因为它循序渐进。

以讲座节奏讲解相同的控制流;由于本课程已通过终端练习推进这些概念,暂不采用。

04 120 分钟

每周独立检查:第 04–06 天

独立掌握检查:提交证据之前不使用任何 AI 协助,也不查看参考答案;如实申报所受的协助。

先决条件

已完成今天的活动 1–3 并记录证据。恢复链接:第 04 天(值)、第 05 天(绑定与比较)、第 06 天(条件与安全 Git)。

学习目标

在无协助的情况下预测值、绑定和比较的结果,从零实现一个使用显式条件的小函数,并凭记忆写出安全检查命令。

操作说明

间隔复习: 这是第 04–06 天的每周巩固检查。提交证据之前,不要打开参考答案,也不要使用 AI。

1. 先书面预测这段代码打印的三行,再运行:

print(repr("0"), bool("0"), "0" == 0)
x = ["a"]
y = x
x.append("é")
print(y)
x = ["a"]
y = x
x = x + ["é"]
print(y)

2. 从零写出 describe(raw):strip 后为空时返回 "empty",是十进制数字时返回 "digits",否则返回 "text"。先预测,再用 ""、" "、"42"、"42"(全角数字)和 "猫" 测试。
3. 凭记忆列出:在一次性仓库中提交前检查修改要运行的命令,以及丢弃已跟踪文件上未提交修改的命令。

练习与预测记录

提交:三行代码的预测和实际输出;describe(raw) 的代码及五个预测、五个实测结果;安全检查与恢复的命令清单;如有不符,写出你要回顾的恢复日。

独立掌握标准

无协助:三行预测先写好;describe(raw) 通过全部五个用例(包括空、纯空白和全角 Unicode 数字);命令清单正确;每处不符都写明恢复日。

来源资源与出处

linking PSF License Version 2

The Python Tutorial: More Control Flow Tools

作者 / 机构: Python Software Foundation | 原始出处链接 ↗

对应章节 / 时间戳: 第 4.2–4.10 节(for、range、定义函数);数据结构见同一教程第 5 章

验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)

入选理由:

用于查阅 Python 迭代、函数和容器的第一手参考资料。

来源前置条件:

第 01–06 天的 Python 表达式与文件系统基础

安全回退方案(离线弹性):

教材内已讲解所有必需的行为,可以离线完成。

对比候选资源与选型分析 (2)
The Python Language Reference: Compound statements ↗ compared_alternative [PSF License Version 2]

在语法层面定义相同的结构;选择教程章节是因为它循序渐进。

以讲座节奏讲解相同的控制流;由于本课程已通过终端练习推进这些概念,暂不采用。