Harvard Python Programming
LovisMind · 阅读与思考

Harvard Python Programming

CS50P 全课程笔记:从函数、条件与循环起步,延伸到测试、文件读写、正则表达式与面向对象,强调写出能被测试、也能被读懂的代码。

10 章

目录

  1. 01函数与变量:从 hello, world 到自己的函数中 / ENCS50P 第一讲:用文本编辑器与终端写出第一个 Python 程序,理解函数、参数与副作用,掌握变量、字符串方法、int 与 float 的转换和格式化,最后用 def、return 与作用域写出自己的函数。2023.05.01
  2. 02条件语句:让代码在岔路口做选择中 / ENCS50P 第 1 周:用比较运算符构造布尔表达式,靠 if / elif / else 控制执行路径,用 and、or 与链式比较简化条件,再用取模与布尔返回值写出 is_even,最后用 match / case 替代冗长的分支。2023.05.01
  3. 03循环:让重复变成结构中 / ENCS50P 第 2 周:用 while 与 for 把重复劳动变成循环,理解计数、无限循环与输入校验,再借列表、字典与嵌套循环写出行列与方块,最后用函数把问题层层抽象。2023.05.01
  4. 04异常:为出错的那一天提前写代码中 / ENCS50P 第 3 周:区分语法错误与运行时错误,用 try / except 捕获 ValueError,理解 else 与 try 的最小区间,再借 while True 与自定义 get_int 把「反复追问直到输入正确」封装成可复用函数。2023.05.01
  5. 05库、包与 API:站在别人的代码上中 / ENCS50P 第 4 周:用 import 引入 random 与 statistics,用 sys.argv 读取命令行参数并做边界检查,用 pip 安装第三方包,用 requests 调用 iTunes API 并解析 JSON,最后把常用函数做成自己的模块并用 __main__ 保护入口。2023.05.01
  6. 06单元测试:从 assert 到 pytest中 / EN先手写 if/print 测试,再用 assert 与 try/except 简化,最后由 pytest 接管样板代码;通过 calculator.py 与 hello.py 两个例子,讲清测试返回值、测试异常、以及为什么可测试性要求函数少用副作用。2023.05.01
  7. 07文件读写:从 names.txt 到 CSV 与图片中 / EN内存随程序退出而清空,文件让数据留下来。本章从写一行名字开始,讲清 w 与 a 的区别、with 自动关闭、逐行读取与多余的换行;再用 CSV 演示为什么手写 split 会崩、csv.reader 与 DictReader 如何解决,最后用 Pillow 生成一张动图,说明二进制文件同样只是「打开—读/写—保存」。2023.05.01
  8. 08正则表达式:把「格式」写成模式中 / EN从手工检查邮箱地址出发,逐步引入 re.search、量词、转义、锚点、字符集与捕获组;用校验邮箱、整理姓名格式、提取 Twitter 用户名三个例子,讲清正则如何验证、清洗与抽取数据,以及为什么复杂正则需要一步步搭。2023.05.01
  9. 09面向对象:从元组、字典到自己的类中 / EN同一个「学生」问题,从元组、列表、字典一路尝试到类:用 __init__ 构造与校验,用 raise 拒绝非法数据,用 __str__ 控制打印,用 property 守住属性,用 classmethod 表示「只此一个」的排序帽,再用继承和 super() 消除重复,最后用 __add__ 让两个金库相加。2023.05.01
  10. 10收尾工具箱:集合、类型提示、argparse 与生成器中 / EN最后一章补齐散落的工具:用 set 去重、用 global 处理模块级状态、用常量与类型提示防错、用 docstring 写文档、用 argparse 解析命令行,再用 * 与 ** 解包、推导式、enumerate 收紧代码;最后用 yield 解决「一百万只羊」的内存问题。2023.05.01