Python 循环结构

5.1 for 循环

for 循环用于遍历序列(列表、元组、字符串等)或其他可迭代对象。

基本语法

1
2
for 变量 in 可迭代对象:
代码块

遍历列表

1
2
3
4
5
6
7
8
9
fruits = ["apple", "banana", "orange"]

for fruit in fruits:
print(f"I like {fruit}")

# 输出:
# I like apple
# I like banana
# I like orange

遍历字符串

1
2
3
4
5
6
7
8
9
10
11
12
word = "Python"

for char in word:
print(char)

# 输出:
# P
# y
# t
# h
# o
# n

5.2 range() 函数

range() 生成数字序列,常用于控制循环次数。

基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# range(stop) - 从 0 到 stop-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4

# range(start, stop) - 从 start 到 stop-1
for i in range(2, 6):
print(i) # 2, 3, 4, 5

# range(start, stop, step) - 指定步长
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8

# 倒序
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1

实际应用

1
2
3
4
5
6
7
8
9
10
11
# 计算 1 到 100 的和
total = 0
for i in range(1, 101):
total += i
print(f"1 到 100 的和: {total}") # 5050

# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print()

5.3 while 循环

while 循环在条件为真时重复执行代码块。

基本语法

1
2
while 条件:
代码块

示例

1
2
3
4
5
6
7
8
9
10
11
# 计数循环
count = 1
while count <= 5:
print(f"Count: {count}")
count += 1

# 用户输入验证
password = ""
while password != "123456":
password = input("请输入密码: ")
print("登录成功")

无限循环

1
2
3
4
5
6
# 需要手动中断
while True:
command = input("输入命令 (quit 退出): ")
if command == "quit":
break
print(f"执行命令: {command}")

5.4 break 语句

break 用于立即终止循环。

1
2
3
4
5
6
7
8
9
10
# 找到第一个偶数就退出
for i in range(1, 10):
if i % 2 == 0:
print(f"找到偶数: {i}")
break
print(f"检查: {i}")

# 输出:
# 检查: 1
# 找到偶数: 2

实际应用:搜索

1
2
3
4
5
6
7
8
9
numbers = [3, 7, 2, 9, 5, 8]
target = 9

for i, num in enumerate(numbers):
if num == target:
print(f"找到 {target},索引为 {i}")
break
else:
print(f"未找到 {target}")

5.5 continue 语句

continue 用于跳过当前迭代,继续下一次循环。

1
2
3
4
5
6
7
# 只打印奇数
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i)

# 输出: 1, 3, 5, 7, 9

实际应用:过滤数据

1
2
3
4
5
6
7
scores = [85, 42, 90, 38, 76, 55, 92]

for score in scores:
if score < 60:
print(f"不及格: {score}")
continue
print(f"及格: {score}")

5.6 pass 语句

pass 是空语句,用于保持语法结构完整。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 占位符,稍后实现
def future_function():
pass # TODO: 实现功能

# 空循环体
for i in range(10):
pass # 暂时不处理

# 条件占位
if condition:
pass # 待实现
else:
print("条件不满足")

5.7 循环 else 子句

Python 的循环可以带 else 子句,在循环正常结束时执行(非 break 中断)。

1
2
3
4
5
6
7
8
9
10
11
12
13
# for-else
for i in range(5):
print(i)
else:
print("循环正常结束")

# while-else
count = 0
while count < 3:
print(count)
count += 1
else:
print("循环正常结束")

实际应用

1
2
3
4
5
6
7
8
9
10
# 搜索场景
numbers = [1, 3, 5, 7]
target = 4

for num in numbers:
if num == target:
print(f"找到 {target}")
break
else:
print(f"未找到 {target}") # 会执行,因为没有 break

5.8 嵌套循环

循环可以嵌套使用。

1
2
3
4
5
6
7
8
9
10
# 打印矩阵
for i in range(3):
for j in range(3):
print(f"({i}, {j})", end=" ")
print()

# 输出:
# (0, 0) (0, 1) (0, 2)
# (1, 0) (1, 1) (1, 2)
# (2, 0) (2, 1) (2, 2)

注意事项

1
2
3
4
5
6
7
8
9
10
11
# break 只中断最内层循环
for i in range(3):
for j in range(3):
if j == 1:
break # 只中断内层
print(f"i={i}, j={j}")

# 输出:
# i=0, j=0
# i=1, j=0
# i=2, j=0

5.9 枚举与解包

enumerate()

同时获取索引和值:

1
2
3
4
5
6
7
8
fruits = ["apple", "banana", "orange"]

for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

# 指定起始索引
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")

zip()

并行遍历多个序列:

1
2
3
4
5
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

for name, age in zip(names, ages):
print(f"{name} is {age} years old")

5.10 本章小结

  • for 用于遍历可迭代对象,while 用于条件循环
  • range(start, stop, step) 生成数字序列
  • break 终止循环,continue 跳过当前迭代
  • pass 是空语句,用于占位
  • 循环可带 else 子句,正常结束时执行
  • enumerate() 获取索引和值,zip() 并行遍历

练习题

  1. 使用 for 循环计算 1 到 100 所有偶数的和
  2. 使用 while 循环实现斐波那契数列前 20 项
  3. 打印以下图案:
    1
    2
    3
    4
    5
    *
    **
    ***
    ****
    *****
  4. 以下代码输出什么?
    1
    2
    3
    4
    5
    for i in range(3):
    for j in range(3):
    if i == j:
    break
    print(f"{i},{j}")
ByteFisher
分享编程技术 · 记录钓鱼乐趣
扫码关注
▸ 扫码关注 ◂
分享: