2026-09-23
Python 入门系列(五):循环——重复劳动交给程序
while 与 for 两种循环、range 三件套、break 撂挑子与 continue 跳过这件,循环嵌套打印九九乘法表,实战猜数字游戏。
循环:重复劳动交给程序
预计学习时间:60 分钟 · 本系列第 5 / 10 课
一、让电脑干它最擅长的事:重复
要打印 100 遍"我爱学习",难道写 100 行 print?电脑最擅长的就是不知疲倦地重复,**循环(Loop)**就是指挥它重复的指令。Python 有两种循环:while 和 for。
二、循环就是一个圈
┌──────────────────────────┐
▼ │
┌ 条件成立? ──True──► 执行循环体 ─┤ 回到门口再检查一遍
└ False ✗ ──► 跳出循环,继续往下
关键认知:循环体执行完后会回到门口重新检查条件。条件一旦不成立,循环才结束。如果条件永远成立,就成了"死循环"——程序卡住出不来。
三、while 循环:"只要……就一直……"
count = 1
while count <= 5: # 条件成立就继续
print("第", count, "遍")
count = count + 1 # 别忘了推进!
print("循环结束,count =", count)
第 1 遍
第 2 遍
第 3 遍
第 4 遍
第 5 遍
循环结束,count = 6
死循环警告:如果漏掉 count = count + 1,count 永远是 1,条件永远成立,程序永远停不下来(命令行里按 Ctrl + C 强制停止)。while 循环体内必须有让条件最终不成立的变化。
四、for 循环 + range:"重复固定次数"
已知要重复几次时,for 更顺手。range(n) 生成 0 到 n-1 的整数序列:
for i in range(5): # i 依次是 0,1,2,3,4
print(i, "来了")
for i in range(1, 6): # 1 到 5(含头不含尾)
print(i)
for i in range(0, 10, 2): # 步长为 2:0,2,4,6,8
print(i)
range 三件套:range(起, 止, 步长)——含头不含尾!range(1, 11) 是 1 到 10,不是 1 到 11。
for 还能逐个取出字符串里的字符:
for ch in "Python":
print(ch, end=" ") # end=" " 表示用空格代替换行
P y t h o n
五、break 与 continue:控制圈的节奏
# break:立即跳出整个循环
for i in range(1, 10):
if i == 4:
print("找到 4,不找了")
break
print(i)
# continue:跳过本次,继续下一次
for i in range(1, 6):
if i % 2 == 0: # 偶数
continue # 跳过下面的 print
print(i, "是奇数")
1
2
3
找到 4,不找了
1 是奇数
3 是奇数
5 是奇数
记忆口诀:break = 撂挑子(整个不干了),continue = 跳过这一件(下一件接着干)。
六、循环嵌套:九九乘法表
循环里还能套循环。外层走一步,内层走完整圈:
for i in range(1, 10): # 外层:第 1~9 行
for j in range(1, i + 1): # 内层:每行 i 个算式
print(f"{j}x{i}={i*j}", end="\t")
print() # 每行结束换行
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
...(共 9 行)
七、实战:猜数字游戏
把循环 + 判断组合起来,做一个经典小游戏:
import random # 导入随机数工具包
secret = random.randint(1, 100) # 1~100 的随机整数
while True: # 故意写死循环,靠 break 跳出
guess = int(input("猜一个 1~100 的数:"))
if guess == secret:
print("猜对了!")
break
elif guess < secret:
print("小了,往大猜")
else:
print("大了,往小猜")
八、避坑指南
- ❌ while 忘记更新计数器 → 死循环
- ❌
range(1, 5)以为会输出 5 → 含头不含尾,只到 4 - ❌ 在循环里误改循环变量导致逻辑混乱;for 循环的 i 交给 range 管理,不要在体内手动改
九、动手练习
练习 1:用循环计算 1+2+3+…+100 的和。
练习 2:打印倒三角星号(输入 4,打印 4 行,每行递减)。
# 练习1
total = 0
for i in range(1, 101):
total = total + i
print("总和是", total) # 5050
# 练习2
n = int(input("行数:"))
for i in range(n, 0, -1): # 从 n 倒数到 1
print("*" * i)
下一课预告:一个变量装不下一整个班级——列表与元组。