《Tiny Python Projects》- 22个项目学Python

文件来源: 阿里云盘 /books/python/Tiny_Python_Projects.pdf

基本信息

  • 作者: Ken Youens-Clark(亚利桑那大学高级科学程序员,生物信息学背景)
  • 出版社: Manning Publications
  • 页数: 439 页
  • 文件大小: 11.33 MB
  • 格式: PDF(文字版)

核心观点

这是一本通过22个小型有趣项目来教授Python编程和测试驱动开发(TDD)的实践指南。每个项目都是短小精悍的命令行工具,涵盖Python的核心概念和实用技能。作者强调”边做边学”,通过实际编码来理解编程思想。

关键概念

1. 测试驱动开发(TDD)

  • 先写测试,再写代码
  • 使用 pytest 框架运行测试
  • 测试失败 → 写代码 → 测试通过 → 重构的循环
  • 每章都提供 test.py 文件,包含自动化测试

2. 命令行参数处理

  • 使用 argparse 模块处理命令行参数
  • 定义位置参数和可选参数(如 -n, --name, -h, --help)
  • 字符串图示(string diagram)可视化输入输出

3. Python核心数据结构

章节主题核心技能
第2章字符串处理字符串操作、切片、格式化、条件分支
第3章列表操作列表创建、排序、索引、切片、join
第4章字典使用字典创建、查找、编码/解码算法
第5章文件处理读写文件、STDOUT输出
第6章文件统计文件读取、迭代、格式化输出
第8章字符串替换str.replace()、str.translate()
第9章随机词生成random模块、seed控制、列表操作
第14章正则表达式re模块、押韵词生成
第19章CSV处理csv模块、数据解析、文本表格输出
第20章密码生成文件处理、列表推导、Title Case

4. 函数式编程技巧

  • 列表推导式:[ord(char) for char in word]
  • map()函数:map(lambda char: ord(char), word)
  • filter()函数:过滤符合条件的元素
  • 三个工具的对比和应用场景

5. 井字棋游戏(第21-22章)

  • 状态管理:用字符串表示棋盘状态
  • 胜负判断逻辑
  • 交互式版本:添加类型提示和交互界面
  • 算法设计:如何计算最佳移动

重要数据/结论

  • 全书22个项目,每个项目对应一个核心概念
  • 强调代码质量:格式化(YAPF/Black)、代码检查(Flake8/Pylint/mypy)
  • 所有代码来自GitHub仓库:https://github.com/kyclark/tiny_python_projects
  • 项目难度递进:从简单的”Hello World”到完整的井字棋游戏

项目列表精选

  1. hello.py - 说”Hello, World!”
  2. crowsnest.py - 字符串处理
  3. picnic.py - 列表操作
  4. jump.py - 字典编码(Jump the Five算法)
  5. howler.py - 文件处理和STDOUT输出
  6. wc.py - 文件统计
  7. gashlycrumb.py - 字典查找
  8. apples.py - 字符串替换
  9. abuse.py - 随机词生成
  10. telephone.py - 字符串突变
  11. bottles.py - 函数编写与测试
  12. ransom.py - 随机大小写
  13. christmas.py - 算法设计
  14. rhymer.py - 正则表达式押韵
  15. friar.py - 更多正则表达式
  16. scrambler.py - 单词中间重排
  17. madlibs.py - 正则表达式填空
  18. gematria.py - ASCII数值编码
  19. workout.py - CSV解析
  20. password.py - 密码生成
  21. tictactoe.py - 状态管理
  22. tictactoe_redux.py - 交互式版本

可行动点

  1. 学习TDD实践:在每个项目开始前先运行测试
  2. 掌握argparse:所有项目都使用命令行参数
  3. 理解函数式编程:列表推导、map、filter的综合应用
  4. 正则表达式实战:第14-17章的系统学习
  5. 代码质量工具链:pytest + Black + Flake8 + mypy

关联知识

SICP - 同样强调计算思维和编程实践 The C++ Programming Language - 参考书籍结构 Effective C++ - 类似的”条目式”学习结构 程序员修炼之道 - 软件测试理念相通

备注

  • 这是一本非常实用的Python入门到进阶书籍
  • 每个项目都可以独立学习,也可按顺序完成
  • 作者背景是生物信息学,项目中包含大量文本处理场景
  • GitHub仓库提供所有项目的源代码和测试文件
  • 适合有一定编程基础,想系统学习Python的人