20_综合练习与学习检查
把输入、容器、函数、异常和文件组织成一个可测试的小程序。
Python 基础专题 20:综合练习与学习检查
学习目标:把输入、容器、函数、异常和文件组织成一个可测试的小程序。
核心知识
先实现“标题清单”:读取若干行文本,清理空白、丢弃空行、去重后按字母顺序输出。把纯数据处理放在函数里,文件读写只放在程序入口。这样函数能用普通列表测试,不必每次创建真实文件。
from pathlib import Path
def clean_titles(lines: list[str]) -> list[str]:
titles = {line.strip() for line in lines if line.strip()}
return sorted(titles)
def main() -> None:
path = Path("titles.txt")
try:
lines = path.read_text(encoding="utf-8").splitlines()
except FileNotFoundError:
print("请先创建 titles.txt")
return
for title in clean_titles(lines):
print(title)
if __name__ == "__main__":
main()
逐步验收:空文件输出为空;重复标题只出现一次;前后空格被去掉;缺文件给出可理解提示。随后把“大小写不同是否算重复”“标题最长多少字符”等规则写成明确要求,再改函数和测试。这个过程比直接增加更多语法更接近实际开发。
自查:能否解释为什么集合去重、为什么 `with` 或 `read_text` 能关闭文件、为什么异常只在入口转换成提示?若不能,回看对应专题。
逐步理解
把综合程序拆成可验证步骤:先用纯列表测试 clean_titles,再准备输入文件测试读取,最后测试命令行输出。集合会改变原输入顺序,排序让输出稳定;若需求要求保留用户输入顺序,就不能照搬当前实现。每次改规则都先写一个失败案例,例如 "Go" 与 "go" 是否视为重复,再决定代码如何处理。
动手练习
进阶练习:让用户通过命令行参数指定文件,而不是固定 titles.txt。提示:查看 sys.argv 或标准库 argparse。