CS50 Python 编程导论
这门课学什么
这门课只讲 Python,面向零基础。内容有函数、条件、循环、异常、单元测试、第三方库、文件读写、正则表达式、面向对象。每周有自动评分练习,最后做 1 个项目。
内容摘要
CS50P 是 CS50 系列里专讲 Python 的入门课。它不讲计算机底层,只讲怎么用 Python 写出正确、好读、可测试的程序。课程适合零基础的人,也适合学过别的语言、想系统补 Python 的人。
课程按“语法 → 健壮性 → 工程化”3 个阶段展开。第 1 阶段是 Week 0–2,讲函数、变量、条件和循环,以及列表和字典。第 2 阶段是 Week 3–5,讲异常处理、第三方库和单元测试,教学生写出不容易崩溃、可以自动验证的代码。第 3 阶段是 Week 6–9,讲文件读写、正则表达式和面向对象编程,最后一讲补齐类型提示、生成器、推导式这些进阶写法。
每周有 1 套习题,每套 4–6 道小题,全部由自动评测程序打分。题目贴近日常:计算小费、做自动售货机、校验车牌、解析日期、调用比特币价格接口、处理 CSV 文件、用正则表达式校验 IP 地址、生成带文字的 T 恤图片。从 Week 5 开始,学生还要给自己的代码写 pytest 测试。课程最后是期末项目,要求用 Python 写一个程序,至少包含 3 个带测试的函数。
学完以后,学生能独立写 Python 命令行程序,会读文档、装库、写测试,能处理文本和文件数据,并能看懂中等规模的面向对象代码。这些能力可以直接衔接 CS50 的数据科学、人工智能和 Web 课程。
讲课人是大卫·马兰(David J. Malan)。他在每讲里边讲边写代码,常常先写一个有问题的版本,再一步步改好,让学生看到程序员真实的思考过程。每讲配有讲义、源代码和多段短视频(Shorts)。
为什么值得学
这是 CS50 家族里最容易入门的一门。学完可以直接接 CS50AI 和数据科学课。
课程信息
- 学校
- 哈佛(Harvard)
- 课程号
- CS50P
- 讲师
- 大卫·马兰(David J. Malan)
- 学期
- 2022 (videos); self-paced
- 平台
- 课程官网 + edX + YouTube
- 费用
- 免费
- 难度
- 入门
- 学时
- 10 周(Week 0–9),每周 1 讲加 1 套习题
- 先修
- 无。
- 材料
- 视频、讲义、作业、代码
- 许可证
- CC BY-NC-SA 4.0
课程大纲 · 共 11 节
大纲依据:CS50P 课程官网周列表(Week 0–9)与各周 Problem Set 页面,配合 YouTube 播放列表(查看原始页面 ↗)
- 0函数与变量Functions, Variables
讲函数、参数、返回值、变量、字符串、整数和浮点数,并自己定义函数。作业是大小写转换、表情替换和小费计算这类小程序。
- 1条件Conditionals
讲 if、elif、else、布尔表达式和 match 语句。作业包括判断文件类型、解析算式和按时间判断用餐时段。
- 2循环Loops
讲 while 和 for 循环,以及列表、字典和 range。作业包括驼峰命名转换、自动售货机找零和车牌号校验。
- 3异常Exceptions
讲 try、except、else 和 raise,让程序在用户输错时不会崩溃。作业包括油量表换算、点餐计价和日期格式转换。
- 4库Libraries
讲模块、命令行参数、pip 安装第三方包、调用网络 API 和解析 JSON。作业包括猜数字游戏、算术练习和查询比特币价格。
- 5单元测试Unit Tests
讲 assert 和 pytest,教学生把代码拆成可测试的函数。作业是给前几周写过的程序补上测试。
- 6文件读写File I/O
讲打开、读取和写入文件,处理 CSV 数据,并用 Pillow 库处理图片。作业包括统计代码行数、把 CSV 转成表格和给图片叠加 T 恤图案。
- 7正则表达式Regular Expressions
讲正则表达式的语法、捕获组,以及 re 模块的查找、匹配和替换函数。作业包括校验 IPv4 地址、提取 YouTube 链接和转换时间格式。
- 8面向对象编程Object-Oriented Programming
讲类、对象、属性、方法、property 装饰器、类方法、静态方法、继承和运算符重载。作业包括计算年龄分钟数、实现饼干罐类和生成 PDF 证书。
- 9其他进阶主题Et Cetera
补充集合、全局变量、类型提示与 mypy、文档字符串、argparse、可变参数、推导式、map 与 filter、生成器。本周没有习题。
- 期末期末项目Final Project
学生自选题目写一个 Python 程序,必须有 main 函数和至少 3 个配 pytest 测试的函数。
哈佛的其他经典课
- CS50 计算机科学导论 · CS50's Introduction to Computer Science
- 公正:该如何做是好? · Justice: What's the Right Thing to Do?
- 概率论(Stat 110) · Statistics 110: Probability
- 幸福之路:中国哲学教我们如何过好生活 · The Path to Happiness: What Chinese Philosophy Teaches Us about the Good Life
- ChinaX 中国通史系列(第 1 部分:从圣王到孔子) · ChinaX: China's Political and Intellectual Foundations: From Sage Kings to Confucius (Part 1 of the China series)
- 莎士比亚的《哈姆雷特》:鬼魂 · Shakespeare's Hamlet: The Ghost