小工具箱
到了工匠台这一章的结尾,Hoppy 已经练过函数返回值,也练过把列表整理得更紧凑。现在只补一块很小、但很实用的拼图:Python 其实自带一些现成小工具,不是每个动作都要你从零手搓。
今天我们只拿出一个够用的小工具:statistics.mean()。重点不是背模块名,而是建立一种轻松的习惯——当你需要一个常见小动作时,先想想:“Python 有没有已经准备好的工具?我能不能查一下文档?”
有时候,你只需要把列表交给一个现成工具
作为教学示例,这个动作可以先缩小来看。假设有个很小的函数已经交回一份灯笼数量列表,你可以直接把这个返回值交给标准库里的 mean(),让它负责“求平均”这一步。
import statistics
def gather_lantern_counts():
return [2, 5, 8]
lantern_counts = gather_lantern_counts()
average_count = statistics.mean(lantern_counts)
print("Lantern counts:", lantern_counts)
print("Average count:", average_count)
这里真正想让你看见的,只有“交接”这个动作:前一步给出一个列表,后一步用现成工具做汇总。等你回到真正的 starter 时,会把这个习惯用到已经准备好的分数列表上;而这里故意保持成一个更小的玩具例子,避免太早把整题直接演完。
真正要带走的,不是模块清单,而是“先找工具”意识
这节 checkpoint 课最重要的收束,不是让你背下 statistics 模块里还有什么,而是知道:当你遇到“平均值、计数、日期、路径”这种高频小任务时,可以先查一查文档,再决定要不要自己写。会查、会用,比硬记一个长名单更重要。
保留已经准备好的 collect_scores(raw_scores),让 cleaned_scores 继续来自这个函数返回值。今天不是重写清理逻辑,而是把它接到一个现成工具上。
导入 statistics,或者直接从里面导入 mean。然后把 cleaned_scores 交给它,得到 average_score。
跑起来后,你应该同时看到清理后的分数列表和平均分。这能帮你看清:函数输出可以继续被后面的工具消费,整个流程仍然很轻。
你今天只需要会用一个小工具就够了。如果以后忘了模块名,也完全没关系。先描述任务,再去查 Python 文档或搜索 “python mean statistics”,这就是成熟的小工具思维。
参考答案点击展开点击收起
import statistics
raw_scores = [" 12", "15 ", " 9 ", "18"]
def collect_scores(raw_values):
return [int(raw_value.strip()) for raw_value in raw_values if raw_value.strip()]
cleaned_scores = collect_scores(raw_scores)
average_score = statistics.mean(cleaned_scores)
print("Cleaned scores:", cleaned_scores)
print("Average score:", average_score)高级技巧想更进一步?点击展开点击收起
这一课故意不继续展开 statistics 里的别的函数,也不比较更多模块。现在的目标只是让你知道:当一个任务很常见时,不一定要自己造轮子,可以先试着看看标准库有没有轻量现成件。
这也刚好把本章前面的内容串起来了:函数可以返回结果,列表可以先被清理,而小工具可以继续消费这些结果。到这里,你已经更像是在搭一个真正的小工具,而不是只写零散语句。