Python基础 : while循环

Python基础 : while循环



一、知识点详解

1.1 基础语法

while 条件:
    # 当条件为True时重复执行的语句

1.2 执行的过程

  1. 检查条件是否为True
  2. 如果为True,执行循环体代码
  3. 重复步骤1和2,直到条件变为False

示例

count = 1
while count <= 3:
    print(f"第{count}次循环...")
    count += 1  # 此处必须更新条件变量,否则将会陷入无限循环
# 输出:
# 第1次循环...
# 第2次循环...
# 第3次循环...

1.3 循环控制语句

  • break:执行该语句时,立即终止整个循环并退出
  • continue:执行到该语句时,会跳过本次循环continue语句之后的代码的执行,直接进入下一次循环
num = 0
while num < 5:
    num += 1
    if num == 3:
        continue  # 变量值为3时,跳过下方的print语句
    if num == 5:
        break     # 变量值为5时,直接终止并退出循环
    print(num)
# 输出:1 2 4

1.4 循环嵌套

循环中可以嵌套循环,形成多层嵌套结构

while 条件1:  # 第一层循环
    # 第一层循环体
    
    while 条件2:  # 第二层循环
        # 第二层循环体       

        while 条件3:  # 第三层循环
            # 第三层循环体
            # 理论上可以无限嵌套循环
            # 但是考虑到代码的可读性和维护性,建议不要嵌套过多层循环
            # 如非特殊需求, 循环嵌套不要超过3层循环 
            # 如果需要多层循环,建议使用函数来封装    
                    
        # 第三层循环结束后执行的代码(此时仍处于第二层循环体内)

    # 第二层循环结束后执行的代码(此时仍处于第一层循环体内)
            
# 第一层循环循环结束后执行的代码(此时已经完全退出所有循环体)

# 注意:
# 1. 循环体的代码块是由缩进来区分的,缩进决定了代码块的归属
# 2. 循环体的代码块可以是任意的代码,包括其他循环、条件语句、函数调用等
# 3. 循环体的代码块可以是空的,表示循环体内没有任何操作

说明:

  1. 外层循环体和内层循环体的代码块是相互独立的,内层循环结束后会继续执行外层循环体的代码
  2. 缩进决定了代码体的归属,内层循环体的缩进比外层循环体多一层
  3. 代码块的缩进可以使用空格或制表符(TAB键),但不能混用

1.5 死循环的原因与如何规避

  • 可能的原因
    循环条件始终为True,常见于:
    • 没有正确更新条件变量(如忘记count += 1
    • 代码逻辑错误导致条件无法变为False(如while num > 0num初始值为负数)
  • 如何规避
    • 强制退出条件:设置最大循环次数(计数器),达到最大循环次数,循环自动结束
    • 用户输入监控:通过break响应特定输入(如输入exit退出)
    • 异常处理:通过捕获意外错误防止无限循环

示例:安全计数器

# 初始化循环控制变量和计数器
running = True
counter = 0

while running:
    print(f"当前计数:{counter}")
    counter += 1  # 计数器递增
    
    # 条件判断:当计数器达到3时退出循环
    if counter >= 3:
        running = False  # 修改控制变量触发退出

print("循环正常终止")


二、说明示例

2.1 用户输入验证

start_game = True  # 初始化循环变量
while start_game:  # 游戏主循环
    # 询问用户是否继续游戏
    choice = input("是否继续游戏?(y/n): ").strip().lower()
    if choice == 'y':
        print("继续游戏...")
        # 在这里添加继续游戏的逻辑
    elif choice == 'n':
        print("退出游戏...")
        break
    else:
        print("无效输入,请输入 'y' 或 'n'。")
        continue        

2.2 打印乘法口诀表

i = 1  # 外层循环控制行数
while i <= 9:
    j = 1  # 内层循环控制每行的列数
    while j <= 9:
        print(f"{j}×{i}={i*j}", end="\t")  # 打印乘法口诀表,用制表符对齐
        j += 1
        if j > i:
            break
    print()  # 换行
    i += 1    

2.3 打印等腰三角形

# 输入等腰三角形的高度(行数)
n = int(input("请输入等腰三角形的高度(行数):"))

# 初始化外层循环变量
i = 1
while i <= n:
    # 打印左侧空格(控制等腰对称性)
    space = n - i
    while space > 0:
        print(" ", end="")
        space -= 1
    
    # 打印星号(每行星号数 = 2*i-1)
    star = 2 * i - 1
    while star > 0:
        print("*", end="")
        star -= 1
    
    print()  # 换行
    i += 1    

三、知识点总结

  1. 核心规则

    • 循环条件需在循环体内被修改(如count += 1),要确保循环能正常终止
    • breakcontinue用于精准地控制循环的执行流程
  2. 常见应用

    • 用户输入验证、数值累加、菜单交互系统
  3. 易错点

    • 忘记更新循环条件变量导致无限循环(死循环)
    • 错误缩进导致代码逻辑错误(如continue/break位置不当)

四、扩展知识

4.1 循环中的else子句

else并非if独享,循环中也可以用
用于循环正常结束(非break中断)时执行相应的语句

max_count = 3  # 最大尝试次数
count = 0     # 初始化计数器
while count < max_count:
    user_input = input("请输入验证码(输入q退出):").strip().lower()
    # 如果用户输入q退出循环,则不会执行else语句块   
    if user_input == "q":
        break
    count += 1
else:
    # 如果循环正常结束,执行else语句块
    print("你今日的错误次数已达上限,请明天再试。。。") 

五、知识点考察题

i = 0
while i < 5:
    if i == 2:
        continue
    print(i)
    i += 1

运行以上代码的结果是什么( )

  • A. 输出0,1,3,4
  • B. 输出0,1,3,4,5
  • C. 输出0,1后无限循环
  • D. 报错SyntaxError

答案:C


关注公众号「安于欣」获取更多Python技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值