课程库 › AI 主线 › Python 第一步 › 第 8 课
单元测验 + 编程挑战:FizzBuzz 变体
里程碑约 45 分钟
本课导读
Python 第一步的关卡:8 道综合测验 + 1 道编程挑战。挑战题是 FizzBuzz——一道在程序员面试里出镜几十年的经典题,今天你会发现自己已经能独立拿下它。测验全对 + 挑战跑通即通关。
赛前热身:本单元的知识地图
| 课 | 一句话回顾 |
|---|---|
| 1. 第一行代码 | print();英文标点;报错是朋友 |
| 2. 变量与数据类型 | = 赋值;int / float / str / bool;引号定类型 |
| 3. 输入与输出 | f-string 填空;input 进来永远是字符串,先转型 |
| 4. 条件判断 | if/elif/else;缩进即语法;and/or/not;% 求余 |
| 5. 循环(上) | for + range(含头不含尾);累加器三步 |
| 6. 循环(下) | while"直到为止";防死循环自查;break/continue |
| 7. 猜数字游戏 | 拆解 → V1 → 迭代;二分法;import random |
关卡测验
1. print(type("3.14")) 的输出表明这个值是什么类型?
2. 用户通过 input() 输入了 7,想计算“输入的数加 3”,正确的写法是?
3. if 分支里的代码行忘了缩进,会发生什么?
4. score = 88。表达式 score >= 90 or score >= 80 and score < 90 的结果是?
5. for i in range(2, 8, 2) 会让 i 依次取哪些值?
6. 下面的累加求和代码错在哪?for n in range(1, 4): total = 0; total = total + n
7. while 循环和 for 循环,选择的基本依据是?
8. 循环中 break 与 continue 的区别是?
编程挑战:FizzBuzz 变体「拍手游戏」
聚会游戏规则:从 1 数到 30——
- 碰到 3 的倍数,不说数字,说「拍手」
- 碰到 5 的倍数,说「跺脚」
- 碰到 既是 3 又是 5 的倍数(如 15),说「拍手跺脚」
- 其他数字正常报数
写一个程序替你玩这个游戏,每个数一行输出。开始前先自己想 30 秒:哪条规则必须最先判断?
💡 提示 1(卡住 15 分钟后再看)
骨架:for n in range(1, 31): + 一组 if/elif/elif/else。判断"3 的倍数"用 n % 3 == 0。
💡 提示 2(关键陷阱)
「既是 3 又是 5」必须放在第一个判断。如果先判断"3 的倍数",15 会被它拦截(15 % 3 == 0 成立,命中即跳过),永远轮不到"拍手跺脚"。elif 链的顺序:最特殊的条件排最前。
✅ 参考答案
for n in range(1, 31):
if n % 3 == 0 and n % 5 == 0:
print("拍手跺脚")
elif n % 3 == 0:
print("拍手")
elif n % 5 == 0:
print("跺脚")
else:
print(n)
自查三处:15 和 30 是否输出「拍手跺脚」?3、6、9 是否「拍手」?5、10、20 是否「跺脚」?都对,恭喜通关。
顺带一提:这道题(原版叫 FizzBuzz)曾长期用于程序员面试第一轮——你现在正式越过了这道门槛。
通关之后
盘点一下你现在的兵器库:变量与类型、输入输出、条件、循环、拆解问题、迭代开发、二分法、import 工具箱——顺序、分支、循环三大结构全部集齐,任何程序拆到底都是它们的组合。
下一单元「程序思维基础」补上最后几块基石:列表(装一串数据)、字典(装带标签的数据)、函数(把代码打包复用),然后用一个项目课收官整个阶段 0。
提示
通关小仪式:把拍手游戏的代码改成你自己的规则(换倍数、换词),跑通后发给一个朋友看——"我写的程序"这五个字,值得庆祝一下。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…