源本科技 | 码上会

Python 循环结构

2026/01/16
8
0

学习目标

  • 掌握 forwhile 循环的基本语法与适用场景

  • 理解如何遍历各种数据类型(列表、元组、字符串、字典、集合)

  • 学会使用索引方式遍历序列

  • 掌握嵌套循环的编写方法与执行逻辑

  • 熟练运用 breakcontinuepass 控制循环流程

  • 了解无限循环的风险与合理使用方式


循环的作用

循环用于重复执行一段代码,避免冗余,提升效率。Python 提供两类主要循环:

  • for 循环:适用于已知迭代次数或遍历可迭代对象(如列表、字符串等)

  • while 循环:适用于基于条件判断的重复执行,次数可能未知


for 循环

for 循环用于遍历任何可迭代对象(iterable),包括列表、元组、字符串、字典、集合、range 等。

基本语法

for 变量 in 可迭代对象:
    # 执行语句

1. 使用 range() 进行计数循环

n = 4
for i in range(0, n):
    print(i)

输出:

0
1
2
3

range(start, stop) 生成从 startstop-1 的整数序列。

2. 遍历不同数据类型

# 列表
li = ["code", "for", "life"]
for x in li:
    print(x)

# 元组
tup = ("code", "for", "life")
for x in tup:
    print(x)

# 字符串
s = "abc"
for char in s:
    print(char)

# 字典(默认遍历键)
d = {'x': 123, 'y': 354}
for key in d:
    print(f"{key}  {d[key]}")

# 集合(无序)
set1 = {10, 30, 20}
for x in set1:
    print(x)

输出示例:

code
for
life
code
for
life
a
b
c
x  123
y  354
10
20
30

注意:集合和字典的遍历顺序在 Python 3.7+ 中对字典是插入顺序,但集合仍无序。

3. 通过索引遍历序列

当需要同时访问元素及其位置时,可结合 range(len(...))

li = ["code", "for", "life"]
for index in range(len(li)):
    print(li[index])

更推荐使用 enumerate()

for index, value in enumerate(li):
    print(f"Index {index}: {value}")

while 循环

while 循环在条件为真时持续执行,适合不确定循环次数的场景。

基本语法

while 条件:
    # 执行语句

示例:计数输出

cnt = 0
while cnt < 3:
    cnt += 1
    print("Hello Code")

输出:

Hello Code
Hello Code
Hello Code

必须确保循环体内有改变条件的语句,否则可能导致无限循环。

无限 while 循环

while True:
    user_input = input("输入 'quit' 退出: ")
    if user_input == 'quit':
        break
    print("继续运行...")

警告:纯 while True 若无退出机制将导致程序卡死,需谨慎使用。


嵌套循环

在一个循环内部包含另一个循环,常用于处理二维结构或多层逻辑。

示例:打印数字金字塔

for i in range(1, 5):
    for j in range(i):
        print(i, end=' ')
    print()  # 换行

输出:

1 
2 2 
3 3 3 
4 4 4 4 

混合嵌套

  • for 内嵌 while

  • while 内嵌 for

  • 多层任意组合

i = 1
while i <= 3:
    for j in range(i):
        print("*", end="")
    print()
    i += 1

输出:

*
**
***

循环控制语句

用于在循环中改变正常执行流程。

1. continue:跳过当前迭代

for letter in 'codeforgeeks':
    if letter == 'e' or letter == 'o':
        continue
    print('Current Letter :', letter)

输出:

Current Letter : c
Current Letter : d
Current Letter : f
Current Letter : r
Current Letter : g
Current Letter : k
Current Letter : s

用途:过滤特定元素,继续后续处理。

2. break:立即退出整个循环

for letter in 'codeforgeeks':
    if letter == 'e' or letter == 'o':
        break
    print('Current Letter :', letter)

输出:

Current Letter : c

注意:break 仅退出最内层循环。

3. pass:空操作占位符

for letter in 'codeforgeeks':
    pass  # 什么都不做,但语法合法

print('Last Letter :', letter)  # 输出 's'

用途:

  • 占位,预留未来代码

  • 满足语法要求(如空函数、类、循环)


性能与选择建议

场景

推荐循环

遍历列表、字符串、元组等

for

计数(固定次数)

for i in range(n)

条件满足即停止(如用户输入)

while

需要提前终止或跳过

结合 break/continue

处理二维数据(如矩阵)

嵌套 for


重点总结

  • for 循环用于遍历可迭代对象,简洁高效。

  • while 循环基于条件执行,需注意避免无限循环。

  • 嵌套循环可处理多维逻辑,但应控制深度。

  • break 立即退出循环,continue 跳过本次迭代,pass 是空操作。

  • 遍历字典时,使用 .keys().values().items() 更清晰。

  • 修改容器时避免在遍历过程中直接增删元素。


思考题

  1. 以下代码输出什么?为什么?

    for i in range(3):
        for j in range(3):
            if i == j:
                break
            print(i, j)
  2. 如何用 while 循环实现 for i in range(5): print(i) 的功能?

  3. 在什么情况下,使用 whilefor 更合适?请举一个实际编程场景的例子。