Python 有 三种 主要的循环语句:
| 循环类型 | 关键字 | 适用场景 | 是否一定执行至少一次 | 是否有内置计数器 |
|---|---|---|---|---|
| for 循环 | for … in | 已知循环次数 / 遍历序列/可迭代对象 | 否 | 没有(但常用 range/enumerate) |
| while 循环 | while | 条件满足就继续(次数未知) | 否 | 没有 |
| while True循环 | while True | 死循环 + break 退出(最灵活) | 是(除非一开始break) | 没有 |
1. for 循环(最常用、最安全)
# 基本格式
for 临时变量 in 可迭代对象:
循环体...
# 常见用法举例
# 1. 遍历列表/字符串/元组
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
# 2. 用 range() 做固定次数循环(最像其他语言的 for i=0; i<n; i++)
for i in range(5): # 0 1 2 3 4
print(i)
for i in range(1, 10, 2): # 1 3 5 7 9
print(i, end=" ")
# 3. 带索引遍历(非常常用!)
for idx, fruit in enumerate(fruits):
print(f"第{idx}个水果是:{fruit}")
# 4. 遍历字典
d = {"name": "小明", "age": 18, "city": "上海"}
for k in d: # 默认遍历 key
print(k, "→", d[k])
for k, v in d.items(): # 同时拿到 key 和 value
print(k, v)
2. while 循环(条件驱动)
# 基本格式
while 条件表达式:
循环体...
# 记得让条件最终会变为 False,否则死循环!
# 经典例子:累加到 n
n = int(input("请输入 n:"))
i = 1
total = 0
while i <= n:
total += i
i += 1
print("1到", n, "的和是", total)
# 经典错误示范(死循环):
# while True:
# print("哈哈哈") # 永远停不下来
3. while True + break 写法(非常强大、Python 中超常用)
while True:
user_input = input("请输入数字(输入 q 退出):")
if user_input == 'q':
break
# 其他处理...
print("你输入了:", user_input)
break 与 continue 的区别(非常重要!)
| 语句 | 作用 | 对循环的影响 | 常用场景 |
|---|---|---|---|
| break | 立刻跳出整个循环 | 循环直接结束 | 找到目标就停止、用户输入 q 退出 |
| continue | 立刻结束本次循环,进入下一次 | 本次剩下的语句不执行,直接下一轮 | 跳过不符合条件的元素、过滤数据 |
对比代码演示
# 示例:打印 1~10 中除了 3 的倍数以外的数字
print("使用 continue:")
for i in range(1, 11):
if i % 3 == 0:
continue # 跳过本次循环,3、6、9 不会打印
print(i, end=" ") # 1 2 4 5 7 8 10
print("\n\n使用 break:")
for i in range(1, 11):
if i == 7:
break # 遇到 7 直接结束整个循环
print(i, end=" ") # 只打印 1 2 3 4 5 6
嵌套循环中的 break / continue
# 只 break 当前所在的那一层循环
for i in range(1, 4):
for j in range(1, 4):
if j == 2:
break # 只跳出内层 for,不会影响外层
print(f"i={i}, j={j}")
print("--- 内层循环结束 ---")
# 输出:
# i=1, j=1
# --- 内层循环结束 ---
# i=2, j=1
# --- 内层循环结束 ---
# i=3, j=1
# --- 内层循环结束 ---
小练习(建议自己敲代码验证)
- 用 for + range 打印 1~100 内所有 7 的倍数
- 用 while 实现:不停让用户输入数字,输入负数就结束,并输出所有输入数字的和
- 有一个列表
[1,3,0,5,0,7,0,9],用 for + continue 打印所有非零数字 - 用 while True + break 实现一个简单的猜数字游戏(随机数 1~100,猜对 break)
有哪道题想看参考答案,或者想继续深入 else 子句、for-else、while-else 的用法吗?随时告诉我~