边读边产出

补全生成器 numbers(lines):用 yield 逐个产出每行里的整数,跳过不是整数的行,不要先攒成列表。输出 是否生成器/总和。

开始练习 →

大文件一读就内存不够

场景:一个统计脚本在测试数据上好好的,一上线跑几十万行的日志就 MemoryError——那台机器给它的内存很少。 任务:改 ~/work/big/count.py,让它在内存很紧时也能处理大文件,输出 行数/5xx 个数/最大耗时 不变。

开始练习 →

找到热点并提速

场景:一个去重统计脚本在几千行上还行,线上几万行时慢得没法用。先别猜,让分析器告诉你时间花在哪。 任务:先用 python3 -m cProfile -s cumtime dedup.py ids.txt 找到热点,再改掉它。输出必须和原来

开始练习 →

错误提示写到哪

命令行工具的错误提示应该写到【0】,这样用管道接它的输出时数据不会被弄脏。

开始练习 →

好测试的标准

一条好的单元测试,最重要的是【0】。

开始练习 →

日志里的三个数

逐行统计日志:字段数不是 5、或状态码/耗时不是整数的算坏行。统计好行数、状态码 ≥ 500 的行数、坏行数和出现最多的路径,输出 好行|错误|坏行|路径。

开始练习 →

日志统计命令行工具

场景:运维同事每天要看好几份访问日志:总共多少请求、多少 5xx、哪些路径最热。他想要一个能在任何机器上直接用的命令行工具。 任务:从空文件写起 ~/work/logstat.py:python3 logstat.py 日志文件… [--t

开始练习 →

写出能抓住错误的测试

场景:money.py 已经写好而且是对的,但它没有测试。以后谁改坏了它,现在没有任何东西能发现。 任务:给 ~/work/lib/money.py 写 unittest 测试 ~/work/lib/test_money.py:在原版上全部

开始练习 →

-o 后面那个名字

命令 gcc -std=c11 -o stat stat.c 里,-o stat 的作用是【0】。

开始练习 →

改了源码没重编

改了 stat.c,却忘了重新编译就运行 ./stat,实际跑的是【0】。

开始练习 →