循环
循环是程序的基本结构之一,让我们能够重复执行一段代码。本章将详细介绍Python中的两种循环语句:for循环和while循环。
for循环
for循环用于遍历任何可迭代对象(如列表、字符串等):
fruits = ['apple', 'banana', 'orange'] for fruit in fruits: print(fruit) apple banana orange
循环执行流程图
┌─────────────────────────────────────────────────────────────┐
│ for循环执行流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ fruits列表 │ ← ['apple', 'banana', 'orange'] │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 取第一个元素 │ → fruit = 'apple' │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 执行循环体 │ → print('apple') │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 取下一个元素 │ → fruit = 'banana' │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 执行循环体 │ → print('banana') │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 列表为空? │ → 否,继续取元素 │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 循环结束 │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
range函数
range()函数生成一个整数序列,常用于循环:
for i in range(5): print(i) 0 1 2 3 4
range的三种用法
| 语法 | 说明 | 示例 | 结果 |
|---|---|---|---|
range(stop) |
从0到stop-1 | range(5) |
0,1,2,3,4 |
range(start, stop) |
从start到stop-1 | range(2, 6) |
2,3,4,5 |
range(start, stop, step) |
带步长的序列 | range(0, 10, 2) |
0,2,4,6,8 |
常见用法示例
# 计算1到100的和 total = 0 for i in range(1, 101): total += i print('1+2+...+100 =', total) 1+2+...+100 = 5050 # 打印九九乘法表 for i in range(1, 10): for j in range(1, i+1): print(f'{j}x{i}={j*i}', end='\\t') print() 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 ...
while循环
while循环在条件为True时重复执行循环体:
n = 1 while n <= 5: print(n) n += 1 1 2 3 4 5
注意
while循环必须确保条件最终会变为False,否则会变成无限循环!
break和continue
break用于跳出整个循环,continue用于跳过本次循环:
break - 跳出循环
for i in range(10): if i == 5: break print(i) 0 1 2 3 4
continue - 跳过本次循环
for i in range(5): if i == 2: continue print(i) 0 1 3 4 # 注意:2被跳过了
break和continue流程图
┌─────────────────────────────────────────────────────────────┐ │ break vs continue 对比 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ break (跳出整个循环) continue (跳过本次循环) │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 循环开始 │ │ 循环开始 │ │ │ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 执行循环体 │ │ 执行循环体 │ │ │ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 遇到break? │ │ 遇到continue? │ │ │ └────────┬────────┘ └────────┬────────┘ │ │ │ Yes ↙ ↘ No │ │ ▼ │ │ │ │ ┌─────────────────┐ │ ┌────▼────┐ │ │ │ 跳出循环,结束 │ │ │ 跳过剩余 │ │ │ └─────────────────┘ │ │ 执行下一 │ │ │ │ │ 次循环 │ │ │ │ └─────────┘ │ └─────────────────────────────────────────────────────────────┘
循环的else
Python的循环可以有一个else分支,当循环正常结束(不是因为break退出)时会执行:
# 循环正常结束,执行else for i in range(3): print(i) else: print('循环正常结束') 0 1 2 循环正常结束 # 被break打断,不执行else for i in range(3): if i == 1: break print(i) else: print('循环正常结束') 0 # 注意:没有打印"循环正常结束"
循环嵌套
循环内部可以再包含循环,这就是循环嵌套:
# 打印一个简单的矩形 for i in range(3): for j in range(5): print('*', end='') print() ***** ***** ***** # 打印一个直角三角形 for i in range(1, 5): for j in range(i): print('*', end='') print() * ** *** ****
练习题
练习1:求和
使用for循环计算1+2+3+...+100的结果。
练习2:找出质数
使用循环找出100以内的所有质数。
练习3:猜数字游戏
用while循环实现一个猜数字游戏:
- 系统随机生成1-100的数字
- 玩家不断输入数字猜测
- 猜对了提示"恭喜你",并统计猜测次数
小结
- for循环用于遍历可迭代对象;
range(n)生成0到n-1的整数序列;- while循环在条件为True时重复执行;
break跳出整个循环,continue跳过本次循环;- 循环可以有
else分支,循环正常结束时执行; - 注意避免无限循环。
🐍 Python 在线代码编辑器
📝 运行结果