Python 教程 / 循环

循环

循环是程序的基本结构之一,让我们能够重复执行一段代码。本章将详细介绍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 在线代码编辑器
📝 运行结果