学径XUEJING · 个人学习平台通知设置

课程库 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

关卡测验

随堂测验0 / 8 题正确

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 秒:哪条规则必须最先判断?

Python
💡 提示 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。

提示

通关小仪式:把拍手游戏的代码改成你自己的规则(换倍数、换词),跑通后发给一个朋友看——"我写的程序"这五个字,值得庆祝一下。

划选正文任意文字可高亮、批注或加入复习卡

讨论

载入中…