← 返回 Day 35 正文

Day 35 · 练习与清单

Day 035 — 特殊方法:检查清单

✅ 完成后勾选,标记为 [x]

📚 概念理解

💻 代码实践

🧪 练习题

请完成以下练习,每题创建一个单独的 .py 文件。

练习 1:自定义字符串类

创建一个 SmartString 类,封装字符串并提供更多功能:

python
s = SmartString("hello")
print(len(s))           # 5(实现 __len__)
print(s[0], s[-1])      # h, o(实现 __getitem__)
print(s[::-1])          # olleh(支持切片)
print('h' in s)         # True(__contains__ 或退化)
print(str(s))           # HELLO(__str__ 返回大写)
print(repr(s))          # SmartString('hello')

练习 2:复数计算器

实现一个 Complex 类(不要使用内置的 complex 类型):

提示: 复数的共轭:(a + bi) 的共轭 = (a - bi)

练习 3:缓存计算器

创建一个可调用类 CachedCalculator,实现计算斐波那契数的功能并缓存结果:

python
calc = CachedCalculator()
calc(10)  # 计算并缓存
calc(10)  # 从缓存返回,不重新计算
calc.hits    # 命中次数
calc.misses  # 未命中次数
calc.clear() # 清空缓存

练习 4:时间范围迭代器

创建一个 TimeRange 类,表示一个时间范围,支持迭代:

python
from datetime import time, timedelta

tr = TimeRange(time(9, 0), time(17, 0), timedelta(hours=1))
for t in tr:
    print(t)  # 09:00, 10:00, ..., 17:00

print(len(tr))    # 9(不是 8!包括首尾)
print(tr[0])      # 09:00
print(tr[-1])     # 17:00
print(time(12, 0) in tr)  # True

练习 5:矩阵类

实现一个简单的 Matrix 类(2D 矩阵):

示例:

python
m1 = Matrix([[1, 2], [3, 4]])
m2 = Matrix([[5, 6], [7, 8]])
print(m1 + m2)     # [[6, 8], [10, 12]]
print(m1 @ m2)     # [[19, 22], [43, 50]]
print(m1.T)        # [[1, 3], [2, 4]]

📊 进度追踪

项目 完成情况
阅读 README.md [ ]
运行 01-basic-usage.py [ ]
运行 02-advanced-usage.py [ ]
运行 03-vector-class.py [ ]
练习 1:SmartString [ ]
练习 2:Complex 类 [ ]
练习 3:缓存计算器 [ ]
练习 4:TimeRange [ ]
练习 5:Matrix 类 [ ]
完成检查清单 [ ]