Python基础 : while循环
文章目录
一、知识点详解
1.1 基础语法
while 条件:
# 当条件为True时重复执行的语句
1.2 执行的过程
- 检查条件是否为
True
- 如果为
True
,执行循环体代码 - 重复步骤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. 循环体的代码块可以是空的,表示循环体内没有任何操作
说明:
- 外层循环体和内层循环体的代码块是相互独立的,内层循环结束后会继续执行外层循环体的代码
- 缩进决定了代码体的归属,内层循环体的缩进比外层循环体多一层
- 代码块的缩进可以使用空格或制表符(TAB键),但不能混用
1.5 死循环的原因与如何规避
- 可能的原因:
循环条件始终为True
,常见于:- 没有正确更新条件变量(如忘记
count += 1
) - 代码逻辑错误导致条件无法变为
False
(如while num > 0
但num
初始值为负数)
- 没有正确更新条件变量(如忘记
- 如何规避:
- 强制退出条件:设置最大循环次数(计数器),达到最大循环次数,循环自动结束
- 用户输入监控:通过
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
三、知识点总结
-
核心规则
- 循环条件需在循环体内被修改(如
count += 1
),要确保循环能正常终止 break
和continue
用于精准地控制循环的执行流程
- 循环条件需在循环体内被修改(如
-
常见应用
- 用户输入验证、数值累加、菜单交互系统
-
易错点
- 忘记更新循环条件变量导致无限循环(死循环)
- 错误缩进导致代码逻辑错误(如
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