当前位置:首页 > Python > 正文

Python循环嵌套教程:for和while循环嵌套用法详解

Python循环嵌套教程

掌握for和while循环嵌套的用法

什么是循环嵌套?

循环嵌套是指在一个循环体内部包含另一个或多个循环的结构。在Python中,for循环和while循环都可以相互嵌套使用。

循环嵌套的应用场景:

  • 处理多维数据结构(如二维列表)
  • 生成复杂的图案或矩阵
  • 实现组合算法
  • 处理需要多层迭代的问题
  • 游戏开发(如棋盘类游戏)

for循环嵌套

在Python中,for循环嵌套是最常用的循环结构之一。

基础语法:

for 外层变量 in 外层序列:
    # 外层循环体
    for 内层变量 in 内层序列:
        # 内层循环体
        # 可以访问外层变量和内层变量

示例1:乘法表

# 打印9x9乘法表
for i in range(1, 10):  # 外层循环控制行
    for j in range(1, i+1):  # 内层循环控制列
        print(f"{j}×{i}={i*j}", end="\t")
    print()  # 换行

示例2:矩阵遍历

# 遍历二维矩阵
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:  # 外层循环遍历行
    for element in row:  # 内层循环遍历列元素
        print(element, end=" ")
    print()  # 每行结束后换行

while循环嵌套

while循环嵌套适用于需要根据条件进行多层迭代的情况。

基础语法:

while 外层条件:
    # 外层循环体
    while 内层条件:
        # 内层循环体
        # 可以修改内层条件变量
    # 修改外层条件变量

示例1:星形金字塔

# 打印星形金字塔
rows = 5
i = 1
while i <= rows:
    # 打印空格
    j = 1
    while j <= rows - i:
        print(" ", end="")
        j += 1
        
    # 打印星号
    k = 1
    while k <= 2*i - 1:
        print("*", end="")
        k += 1
        
    print()  # 换行
    i += 1

示例2:猜数字游戏

# 猜数字游戏(多层while循环)
import random

max_attempts = 3
play_again = True

while play_again:
    number = random.randint(1, 10)
    attempts = 0
    guessed = False
    
    print("\n新游戏开始!猜一个1-10之间的数字")
    
    while not guessed and attempts < max_attempts:
        guess = int(input("你的猜测: "))
        attempts += 1
        
        if guess == number:
            print(f"恭喜!你在{attempts}次尝试后猜对了!")
            guessed = True
        elif guess < number:
            print("猜小了,再试试!")
        else:
            print("猜大了,再试试!")
    
    if not guessed:
        print(f"游戏结束,正确数字是: {number}")
    
    # 询问是否再玩一次
    again = input("再玩一次?(y/n): ").lower()
    play_again = again == 'y'

for和while混合嵌套

在实际编程中,for循环和while循环可以混合使用。

示例:数据验证

# 混合循环:处理学生成绩
students = [
    {"name": "张三", "scores": [85, 92, 78]},
    {"name": "李四", "scores": [76, 88, 95]},
    {"name": "王五", "scores": [90, 92, 87]}
]

# 外层for循环遍历学生
for student in students:
    print(f"学生: {student['name']}")
    
    # 内层while循环处理成绩
    index = 0
    total = 0
    scores = student['scores']
    
    while index < len(scores):
        total += scores[index]
        index += 1
    
    average = total / len(scores)
    print(f"平均分: {average:.1f}")
    
    # 判断等级
    if average >= 90:
        print("等级: A")
    elif average >= 80:
        print("等级: B")
    elif average >= 70:
        print("等级: C")
    else:
        print("等级: D")
    
    print("-" * 30)

循环嵌套的最佳实践

使用循环嵌套时需要注意:

  • 避免过度嵌套(一般不超过3层)
  • 为循环变量使用有意义的名称
  • 确保内层循环有终止条件(尤其是while循环)
  • 考虑使用break和continue控制循环流程
  • 保持代码可读性,必要时添加注释
  • 优化性能:将计算量大的操作放在外层循环

使用break退出嵌套循环

# 在二维列表中查找元素
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
target = 5
found = False

for i, row in enumerate(matrix):
    for j, value in enumerate(row):
        if value == target:
            print(f"找到 {target} 在位置 ({i}, {j})")
            found = True
            break  # 退出内层循环
    if found:
        break  # 退出外层循环

总结

循环嵌套是Python编程中的重要概念,掌握forwhile循环的嵌套使用能有效处理复杂问题:

  1. for循环嵌套适合处理已知迭代次数的场景
  2. while循环嵌套适合处理基于条件判断的迭代
  3. 混合使用两种循环可以发挥各自的优势
  4. 合理使用break和continue控制循环流程
  5. 注意避免无限循环和过度嵌套

练习建议:

尝试编写以下程序巩固循环嵌套知识:

  • 打印不同形状的图案(三角形、菱形等)
  • 实现一个简单的井字棋游戏
  • 计算两个矩阵的乘积
  • 查找二维数组中的鞍点(行最大、列最小)

发表评论