真实输入的真值表
独立掌握检查(不使用 AI 辅助)。
前置要求
已完成 Day 05 的比较检查;能用 python3 运行 Python 文件并读懂其输出。
学习目标
预测并验证空值、零和空白输入的 bool() 结果,并解释为什么 `if value:` 分支可能把真实数据判错。
操作指引
必做:在运行任何代码之前,针对 []、[0]、""、" "、0、"0" 逐一写下你对 bool(value) 以及分支 presence(value)(值为真时返回 "present",否则返回 "missing")结果的预测。然后运行程序,原样复制输出,并标出所有与预测不符的行。
复盘:每处不符都用一句话写出规则:空容器和数值零为假;任何非空字符串(包括 " " 和 "0")都为真。
选做:只有在必做证据完整之后,才把 None 和 [[]] 加入列表,先预测再运行。
自主演练与记录
创建 truthiness.py,定义 presence(value)(value 为真时返回 "present",否则返回 "missing"),并按 []、[0]、""、" "、0、"0" 的顺序,把每个值的 repr(value)、bool(value) 和 presence(value) 打印在同一行。
字符串只有在长度为 0 时才为假,所以 " "(一个空格)和 "0" 都为真。列表只有为空时才为假,所以即使 [0] 唯一的元素为假,它本身仍为真。
参考答案(truthiness.py):
def presence(value):
if value:
return "present"
return "missing"
for value in [[], [0], "", " ", 0, "0"]:
print(repr(value), bool(value), presence(value))
精确输出(Python 3.13 与 3.14):
[] False missing
[0] True present
'' False missing
' ' True present
0 False missing
'0' True present
解析:[]、"" 和 0 为假,因此分支报告为 "missing"。[0]、" " 和 "0" 为真,因此报告为 "present"。有两行具有误导性:只含空白的文本没有任何数据,却被报告为 present;数字 0 是真实存在的值,却被报告为 missing。当含义很重要时,请显式判断(例如 text.strip() == "" 或 value is None),不要依赖真值。
客观知识测验与诊断追踪
请回答以下题目检验掌握情况。提交前请诚实声明你的辅助条件。
在真值表中,哪个输入虽然不含任何可见数据,却为真,因而被 presence(value) 报告为 "present"?
该字符串长度为 1,所以 bool(" ") 为 True。"" 和 [] 为空,因此为假,被报告为 "missing"。
字符串的真值只取决于长度,与字符看起来是什么无关。
作答应证与历史记录
在不使用 AI 辅助的情况下,在运行前写下全部 6 个输入的预测,实际输出与参考答案完全一致,并能正确解释两行误导性结果(`" "` 被判为 present,`0` 被判为 missing)。必做与选做内容分开,证据中注明为独立完成。
权威源资源与权利证明
Python Standard Library: Built-in Types
对应章节 / 时间戳: “真值测试”“比较”和“可变序列类型”各节
验证版本与日期: Python 3.12 文档(核验日期:2026-10-30)
用于查阅真值、比较、绑定和对象修改行为的规范性参考资料。
Day 03 恢复演练
运行教材中提供的 Python 示例,并查阅已安装解释器的帮助。
对比候选资源与选型分析 (2)
该参考资料更深入地讲解对象语义,超出了表达式层面练习所需的范围;stdtypes 能将内容限定在运算符层面。
以叙述方式介绍相同的运算符;库参考文档则被选为查阅规范签名的资料。
Git User Manual: Recording Changes
对应章节 / 时间戳: 将更改记录到仓库
验证版本与日期: 核验日期:2026-10-30
用于在安全提交前检查小范围差异的第一手参考资料。
Git 基础知识
在本地使用 git diff 和 git status;理解差异之后再提交。
对比候选资源与选型分析 (2)
提供命令级别的选项参考;选择 Pro Git 章节,是因为它逐步讲解了如何在提交前检查更改。
易于理解的商业教程;对于同样的检查习惯,书籍章节更深入地解释了暂存和索引的语义。