Python循环机制深度解析,一篇搞定!

for循环基本语法

for 变量 in 可迭代对象:
    # 循环体,每次迭代执行的代码
    代码块
  • 变量:每次迭代时,会从可迭代对象中取出一个元素并赋值给这个变量。
  • 可迭代对象:可以被遍历的对象,例如列表、元组、字符串等。
  • 代码块:每次迭代时要执行的代码,需要有适当的缩进(通常是 4 个空格)。
  • 执行流程

    1. 从可迭代对象中取出第一个元素,将其赋值给变量。
    2. 执行循环体中的代码块。
    3. 从可迭代对象中取出下一个元素,再次赋值给变量,然后执行循环体代码。
    4. 重复步骤 3,直到可迭代对象中的元素全部被遍历完。

    示例代码及解释

    遍历列表
    fruits = ["apple", "banana", "cherry"]
    for fruit in fruits:
        print(fruit)
    
  • 这里的 fruits 是一个列表,属于可迭代对象。
  • 每次循环时,fruit 变量会依次被赋值为列表中的元素,然后打印出来。
  • 输出结果:
  • apple
    banana
    cherry
    
    遍历字符串
    message = "Hello"
    for char in message:
        print(char)
    
  • message 是一个字符串,也是可迭代对象。
  • 每次循环,char 变量会依次被赋值为字符串中的字符并打印。
  • 输出结果:
  • H
    e
    l
    l
    o
    
    结合 range() 函数

    range() 函数常用于生成一个整数序列,常与 for 循环搭配使用来控制循环次数。

    for i in range(5):
        print(i)
    
  • range(5) 会生成一个从 0 到 4 的整数序列。
  • 每次循环,i 变量会依次被赋值为序列中的整数并打印。
  • 输出结果:
  • 0
    1
    2
    3
    4
    

    for 循环的其他用法

    遍历字典
    person = {"name": "John", "age": 30, "city": "New York"}
    for key in person:
        print(key, ":", person[key])
    
  • 遍历字典时,默认遍历的是字典的键。
  • 通过键可以访问对应的值。
  • 输出结果:
  • name : John
    age : 30
    city : New York
    
    for-else 结构
    numbers = [1, 2, 3, 4, 5]
    for num in numbers:
        if num == 6:
            print("找到了 6")
            break
    else:
        print("没有找到 6")
    
  • for-else 结构中,else 子句会在 for 循环正常结束(即没有通过 break 语句提前退出)时执行。
  • 此例中,由于列表里没有 6,循环正常结束,所以会执行 else 子句的代码。
  • 输出结果:
  • 没有找到 6

    while 循环的基本语法

    while 条件表达式:
        # 循环体(条件为 True 时执行的代码块)
        代码1
        代码2
        ...  # 可以包含任意合法的 Python 代码
    

    while 循环的执行流程

    1. 判断条件:首先计算 条件表达式 的值,得到一个布尔值(True 或 False)。
    2. 执行循环体:如果条件为 True,则执行循环体内的代码。
    3. 重复判断:循环体执行完毕后,再次回到条件表达式进行判断,若仍为 True,则重复执行循环体;若为 False,则退出循环。

    核心逻辑:只要条件为真,就重复执行循环体,直到条件为假时停止。

    示例代码与解析

    示例 1:简单计数循环
    count = 0  # 初始化计数器
    while count < 5:  # 条件:count 小于 5 时执行循环
        print(f"当前计数:{count}")
        count = count + 1  # 计数器自增(避免无限循环)
    
  • 执行过程
    1. count = 0,条件 0 < 5 为 True,打印 0count 变为 1
    2. count = 1,条件 1 < 5 为 True,打印 1count 变为 2
    3. 以此类推,直到 count = 5 时,条件为 False,循环终止。
  • 输出结果

    plaintext

    当前计数:0
    当前计数:1
    当前计数:2
    当前计数:3
    当前计数:4
    
  • 示例 2:处理用户输入(直到输入正确为止)
    while True:  # 无限循环(条件永远为 True,需手动退出)
        user_input = input("请输入数字(输入 'q' 退出):")
        if user_input == 'q':
            print("退出循环!")
            break  # 强制退出循环
        elif user_input.isdigit():  # 检查是否为数字
            print(f"你输入的数字是:{user_input}")
        else:
            print("输入无效,请重新输入!")
    
  • 关键点
  • while True 会形成一个无限循环,必须通过 break 语句退出。
  • break 用于立即终止循环,continue 用于跳过本次循环剩余代码,直接进入下一次条件判断。
  • while-else 结构(进阶用法)

    Python 中的 while 循环可以搭配 else 子句使用,语法如下:

    while 条件表达式:
        循环体代码
    else:
        # 当循环 **正常结束**(未被 break 中断)时执行的代码
        代码块
    
    示例:寻找因子
    n = 10
    i = 2
    while i < n:
        if n % i == 0:
            print(f"{n} 不是质数,因子为 {i}")
            break  # 找到因子后退出循环
        i = i + 1
    else:
        # 若循环未被 break 中断(即没有找到因子),说明是质数
        print(f"{n} 是质数")
    

  • 输出结果

    plaintext

    10 不是质数,因子为 2
    
  • 逻辑说明
  • 如果循环通过 break 退出(找到因子),则不执行 else 代码。
  • 如果循环因条件为假而正常结束(未找到因子),则执行 else 代码。
  • 注意事项

    1. 避免无限循环

    2. 确保循环体内有修改条件表达式的代码(如计数器自增),否则会导致无限循环(需手动按 Ctrl+C 终止程序)。
    3. python

      # 错误示例(无限循环)
      while True:
          print("这是一个无限循环!")  # 无退出条件,需手动终止
      
    4. 条件表达式的类型

    5. 条件表达式可以是任何返回布尔值的表达式(如比较运算、逻辑运算、函数调用等)。
    6. python

      while x > 0 and y < 10:  # 多个条件组合
          ...
      while not is_valid():  # 调用函数返回布尔值
          ...
      
    7. 循环控制语句

    8. break:立即退出当前循环。
    9. continue:跳过本次循环剩余代码,直接进入下一次条件判断。
    10. pass:空操作,用于占位(避免语法错误)。

    while 循环 vs for 循环

    场景 while 循环 for 循环
    适用场景 未知循环次数,依赖条件判断 已知循环次数,遍历可迭代对象(如列表、字符串)
    语法核心 条件驱动 迭代驱动
    典型示例 用户输入验证、游戏循环、异步任务监听 遍历列表元素、字符串字符、字典键值对

    总结

    while 循环是 Python 中基于条件判断的循环语句,适用于循环次数不确定的场景。核心是通过一个布尔条件控制循环的执行,配合 breakcontinue 等语句可以实现灵活的逻辑控制。记住:使用 while 时一定要确保条件最终会变为 False,避免无限循环!

     

    作者:MHP小喇叭

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python循环机制深度解析,一篇搞定!

    发表回复