Tiny Python Projects - 22个项目学Python

作者: Ken Youens-Clark
出版社: Manning (2020)
页数: 439页
原始路径: /books/python/Tiny_Python_Projects.pdf
文件大小: 11.33 MB
处理日期: 2026-09-02
处理状态: done

核心主题

本书通过22个小型Python程序教授编程和测试驱动开发(TDD),涵盖字符串、列表、字典、文件操作、正则表达式、随机性、CSV解析等核心主题。每个项目都配有单元测试,强调”边做边学”的理念。

关键概念

1. 测试驱动开发 (TDD)

  • 先写测试,再实现功能
  • 使用 pytest 进行单元测试
  • 每个项目都有配套的测试套件可下载

2. 命令行参数解析

  • 使用 argparse 库
  • 支持位置参数和可选参数
  • 自动生成 help 和 version 信息

3. 数据结构应用

  • 字符串操作: 切片、替换、大小写转换、格式化
  • 列表操作: 索引、切片、排序、反转、元素添加删除
  • 字典操作: 键值对、查找、计数、排序

4. 正则表达式

  • 模式匹配与替换
  • 捕获组和非捕获组
  • 文本清洗和验证

5. 文件处理

  • CSV文件解析
  • 文本文件读写
  • pandas.read_csv() 替代方案

项目清单 (22个)

  1. Hello, World! - 编写第一个Python程序
  2. The Crow’s Nest - 字符串处理
  3. Going on a Picnic - 列表操作
  4. Jump the Five - 字典编码
  5. Howler - 文件操作和标准输出
  6. Words Count - 文件读取和迭代
  7. Gashlycrumb - 字典查找
  8. Apples and Bananas - 字符串查找和替换
  9. Dial-a-Curse - 随机生成侮辱词
  10. Telephone - 字符串随机变异
  11. Bottles of Beer Song - 函数编写和测试
  12. Ransom - 随机大写文本
  13. Twelve Days of Christmas - 算法设计
  14. Rhymer - 正则表达式押韵
  15. The Kentucky Friar - 更多正则表达式
  16. The Scrambler - 随机重排单词中间部分
  17. Mad Libs - 正则表达式游戏
  18. Gematria - ASCII数值编码
  19. Workout of the Day - CSV解析和表格输出
  20. Password Strength - 密码生成
  21. Tic-Tac-Toe - 状态探索
  22. Tic-Tac-Toe Redux - 交互式版本+类型提示

技术要点

argparse 核心用法

import argparse
 
parser = argparse.ArgumentParser(description="Program description")
parser.add_argument("input_file", help="Input file")
parser.add_argument("-o, --output", help="Output file")
args = parser.parse_args()

pytest 测试模板

def test_function():
    assert function(input) == expected_output

常用函数

  • str.split() - 分割字符串
  • str.replace() - 替换子串
  • str.format() / f-string - 格式化输出
  • random.choice() / random.shuffle() - 随机选择/洗牌
  • re.compile() / re.sub() - 正则表达式编译和替换
  • csv.reader() / pandas.read_csv() - CSV文件处理

作者背景

Ken Youens-Clark 是亚利桑那大学的高级科学程序员,拥有系统生物学硕士学位,编程经验超过20年。他以开发生物信息学工具和Python教程而闻名。

关联知识

可行动点

  1. 用TDD方法重写或重构现有脚本
  2. 将命令行工具全部改用argparse
  3. 为所有Python函数编写pytest测试
  4. 实践正则表达式处理文本数据
  5. 学习使用pandas替代手动CSV解析