第 5 课 / 共 9 课15 分钟2 个闯关

for 与 while:把重复交给电脑

range 的左闭右开、累加器套路、死循环怎么避免。

重复的事交给循环

要打印 1 到 100,你不会写 100 行 print。循环就是"把同一段话说很多遍"的机制。

for i in range(5):
    print(i)

输出 0、1、2、3、4。

range 的三种用法

range(5)          # 0 1 2 3 4      —— 从 0 开始,到 5 之前停
range(1, 6)       # 1 2 3 4 5      —— 从 1 开始,到 6 之前停
range(0, 10, 2)   # 0 2 4 6 8      —— 第三个参数是步长

永远取不到右边那个数,这叫"左闭右开"。刚开始一定会因此差一个数(业界叫 off-by-one 错误),写完循环先想一想第一次和最后一次分别是几,能省很多调试时间。

遍历一串东西

for 的本质不是"数数",而是"把一堆东西挨个拿出来":

for fruit in ["苹果", "香蕉", "橘子"]:
    print(f"我吃了{fruit}")

for ch in "abc":
    print(ch)

ifruitch 都只是你给"当前这一个"起的名字,随便叫什么都行,但起个有意义的名字。

while:不知道要循环几次的时候

for 适合"循环固定次数",while 适合"满足某个条件就一直转":

password = ""
while password != "123456":
    password = input("请输入密码:")
print("登录成功")

while 最大的风险是死循环——如果循环体里没有任何东西能让条件变成 False,程序就永远卡住。写 while 时养成习惯:先问自己"什么会让它停下来?",答不上来就先别写。

count = 0
while count < 5:
    print(count)
    count += 1     # 少了这一行,程序永远打印 0

break 和 continue

for i in range(10):
    if i == 5:
        break        # 立刻跳出整个循环
    print(i)         # 打印 0 1 2 3 4

for i in range(5):
    if i % 2 == 0:
        continue     # 跳过本轮剩下的部分,直接进下一轮
    print(i)         # 打印 1 3

break 是"不玩了",continue 是"这局跳过"。

累加:循环里最常见的套路

total = 0
for i in range(1, 101):
    total += i
print(total)   # 5050

这个套路叫累加器:循环外面准备一个抽屉,循环里面不断往里加。求和、计数、找最大值都是这个模式。把它记熟。

10 秒自测

for i in range(1, 4):
    print(i * 2)

输出什么?答案是三行:2、4、6。range(1, 4) 给出 1、2、3,取不到 4。

广告位(未配置 AdSense,上线后在此展示)

动手闯关

读懂了不算会,写出来才算

0/2 已通过

闯关和判题完全免费,交错了不扣任何东西。卡住随时点「问 AI」,它能看到你正在写的代码。

关卡 01猜输出+10 点 · +15 XP

range 到底给出哪几个数

输出是什么? ```python for i in range(1, 4): print(i * 2) ```

  • 可能是多选,选错不扣点数,随便试。
登录后闯关拿点数
关卡 02写代码+15 点 · +25 XP

求 1 到 n 的和

读入一个正整数 n,输出 1 + 2 + ... + n 的结果。 要求用循环实现(不许直接套公式)。

示例输入

10

应该输出

55
pythonTab 缩进 4 空格

学完了?标记一下

标记完成会记进度、涨 20 XP,还会点亮连续学习天数。