一、while循环简介:
while 循环会重复执行一段代码块,直到指定的条件不再满足为止。与for循环不同,while循环适用于那些循环次数不确定,需要根据条件判断来决定是否继续循环的场景。
二、基本语法:
🌳语法说明:
三、流程图:
四、while 循环示例:
示例 1:密码验证系统
以下是一个密码验证系统的示例,用户有3次尝试机会输入正确的密码:
①. 密码验证系统correct_password = 'securePass123'attempts = 0max_attempts = 3print("欢迎使用安全系统!")print(f"您有 {max_attempts} 次尝试机会。")while attempts < max_attempts: user_input = input("请输入密码: ") if user_input == correct_password: print("密码正确!系统已解锁。") break else: attempts += 1 remaining = max_attempts - attempts if remaining > 0: print(f"密码错误!您还有 {remaining} 次尝试机会。") else: print("密码错误!尝试次数已用尽,系统已锁定。")print("感谢使用安全系统。")
⏩执行流程说明:
程序启动,显示欢迎信息和尝试次数
进入 while 循环,检查尝试次数是否小于最大尝试次数
如果条件为 True,提示用户输入密码
检查输入的密码是否正确
如果正确,显示解锁信息并退出循环
如果错误,增加尝试次数并提示剩余尝试次数
当尝试次数达到最大值时,显示系统锁定信息并退出循环
最后显示感谢信息
🌱示例输出:
欢迎使用安全系统!您有 3 次尝试机会。请输入密码: wrongPass密码错误!您还有 2 次尝试机会。请输入密码: pass123密码错误!您还有 1 次尝试机会。请输入密码: securePass123密码正确!系统已解锁。感谢使用安全系统。
示例 2:斐波那契数列生成器
以下是一个生成斐波那契数列的示例,直到数列的值超过100:
# 生成斐波那契数列a, b = 0, 1print("斐波那契数列 (小于100):")while a < 100: print(a, end=' ') a, b = b, a + bprint("\n数列生成完成。")
🚪执行流程说明:
初始化两个变量 a 和 b,分别代表斐波那契数列的前两个数字
进入 while 循环,检查 a 是否小于 100
如果条件为 True,打印当前的 a 值
更新 a 和 b 的值,a 变成原来的 b,b 变成 a + b
重复步骤 2-4,直到 a 大于等于 100
显示数列生成完成信息
🔄示例输出:
斐波那契数列 (小于100):0 1 1 2 3 5 8 13 21 34 55 89 数列生成完成。
五、无限循环
while循环的条件如果始终为True,就会形成无限循环(死循环)。无限循环通常需要配合break语句来退出。
示例1:简易计算器
以下是一个简易计算器的示例,可以进行加法和减法运算:
①. 简易计算器print("简易计算器 (输入 'q' 退出)")print("支持的操作: +, -")while True: operation = input("\n请选择操作 (+ 或 -): ") if operation == 'q': print("感谢使用计算器,再见!") break if operation not in ['+', '-']: print("无效操作,请选择 + 或 -") continue try: num1 = float(input("请输入第一个数字: ")) num2 = float(input("请输入第二个数字: ")) if operation == '+': result = num1 + num2 print(f"{num1} + {num2} = {result}") elif operation == '-': result = num1 - num2 print(f"{num1} - {num2} = {result}") except ValueError: print("输入无效!请输入数字。")
👁执行流程说明:
显示计算器欢迎信息和可用操作
进入无限循环(while True)
提示用户选择操作
检查用户是否输入 'q' 退出
检查输入的操作是否有效
提示用户输入两个数字
根据选择的操作执行计算
显示计算结果
如果输入无效,显示错误信息并继续循环
用户输入 'q' 时,退出循环并显示感谢信息
💡示例输出:
简易计算器 (输入 'q' 退出)支持的操作: +, -请选择操作 (+ 或 -): +请输入第一个数字: 15.5请输入第二个数字: 4.215.5 + 4.2 = 19.7请选择操作 (+ 或 -): -请输入第一个数字: 20请输入第二个数字: 820.0 - 8.0 = 12.0请选择操作 (+ 或 -): q感谢使用计算器,再见!
六、while-else语句
在Python中,while循环可以有一个可选的else子句。当while循环的条件变为False时,else子句会被执行。但如果在循环中使用了break语句跳出循环,else子句不会被执行。
🧪while-else语句语法
while 条件表达式: 循环体语句else: else语句块
📖语法说明:
🎭while-else语句流程图
⚙️示例:查找质数
①. 查找质数示例print("质数检测器")print("输入一个大于1的整数,我将判断它是否为质数")while True: num = input("\n请输入一个整数(输入'退出'结束):") if num.lower() == '退出': print("程序结束!") break try: num = int(num) if num <= 1: print("请输入大于1的整数") continue # 检测是否为质数 is_prime = True divisor = 2 # 使用while循环检测 while divisor * divisor <= num: if num % divisor == 0: is_prime = False print(f"{num} 可以被 {divisor} 整除,不是质数") break divisor += 1 else: # 只有在while循环正常结束时(没有break)才会执行 print(f"{num} 是质数!") except ValueError: print("错误:请输入有效的整数")
🔍输出示例:
质数检测器输入一个大于1的整数,我将判断它是否为质数请输入一个整数(输入'退出'结束):1717 是质数!请输入一个整数(输入'退出'结束):2121 可以被 3 整除,不是质数请输入一个整数(输入'退出'结束):退出程序结束!
七、嵌套while循环
while循环可以嵌套使用,即在一个while循环内部包含另一个while循环。
🧭嵌套while循环语法
while 外层条件表达式: 外层循环体语句 while 内层条件表达式: 内层循环体语句
🎯语法说明:
外层循环每执行一次,内层循环会完整地执行一遍
内层循环可以有自己的循环条件和循环变量
循环层次不宜过深,一般建议不超过3层嵌套
💡嵌套while循环流程图
📌示例:乘法表
①. 打印乘法表示例print("乘法表生成器")rows = int(input("请输入行数:"))cols = int(input("请输入列数:"))print("\n乘法表:")print(" ", end="")for j in range(1, cols + 1): print(f"{j:4}", end="")print()i = 1while i <= rows: print(f"{i:2} |", end="") j = 1 while j <= cols: print(f"{i*j:4}", end="") j += 1 print() i += 1
💭输出示例:
乘法表生成器请输入行数:5请输入列数:5乘法表: 1 2 3 4 5 1 | 1 2 3 4 5 2 | 2 4 6 8 10 3 | 3 6 9 12 15 4 | 4 8 12 16 20 5 | 5 10 15 20 25
八、总结
1、while循环是Python中非常重要且灵活的控制流结构,特别适合以下场景:
当循环次数不确定,需要根据条件判断时
当需要创建无限循环(配合break退出)时
当需要根据用户输入或其他动态条件控制循环时
2、使用while循环的注意事项:
在循环体内要有改变循环条件的语句(除非是有意创建无限循环)
注意使用break和continue时对程序逻辑的影响
在嵌套循环中,注意内层循环的变量不要影响到外层循环
避免无限循环:确保循环条件最终会变为 False,否则程序将陷入无限循环。
循环控制:可以使用 break 语句提前退出循环,使用 continue 语句跳过当前迭代。
初始化变量:在进入循环之前,确保所有用于条件判断的变量都已正确初始化。
循环变量更新:在循环体内,确保有更新循环条件的代码,否则可能导致无限循环。