详细讲解 Python 中用于循环控制 (for 和 while) 的关键字。
循环允许我们重复执行一段代码多次,是自动化处理任务的核心。Python 提供了两种主要的循环方式,并配有控制循环流程的关键字。
功能:用于遍历任何可迭代对象(如列表、元组、字符串、字典、集合等)中的每个元素。
特点:循环次数一般由可迭代对象的长度决定。
语法:
for 变量 in 可迭代对象: # 循环体代码
.示例:
# 遍历列表fruits = ["苹果", "香蕉", "橙子"]for fruit in fruits: print(f"我喜爱吃{fruit}")# 输出: 我喜爱吃苹果, 我喜爱吃香蕉, 我喜爱吃橙子# 遍历字符串for char in "Hello": print(char)# 输出: H, e, l, l, o# 遍历字典的键person = {"name": "小明", "age": 20, "city": "北京"}for key in person: print(f"{key}: {person[key]}")
功能:只要给定的条件为 True,就会一直重复执行代码块。
特点:循环次数不确定,取决于条件何时变为 False。
语法:
while 条件: # 循环体代码
# 计数器循环count = 5while count > 0: print(f"倒计时: {count}") count -= 1 # 重大:必须改变条件,否则会无限循环# 输出: 5, 4, 3, 2, 1# 用户输入验证password = ""while password != "secret": password = input("请输入密码: ") print("密码正确!")
这些关键字用于在循环内部控制循环的执行流程。
功能:立即完全退出当前所在的最近一层循环,不再执行循环中剩余的代码,也不再进行下一次迭代。
用途:当满足某个特定条件时,提前结束循环。
示例:
# 在列表中查找数字,找到后立即退出numbers = [1, 3, 5, 7, 9, 2, 4, 6, 8] target = 5for num in numbers: print(f"检查: {num}") if num == target: print("找到了!") break # 找到后立即退出循环# 输出: 检查: 1, 检查: 3, 检查: 5, 找到了!# while循环中的breakwhile True: # 看似无限循环 user_input = input("输入'quit'退出: ") if user_input == "quit": break # 退出循环 print(f"你输入了: {user_input}")
功能:跳过当前迭代的剩余代码,直接进入循环的下一次迭代。
用途:当遇到某些不需要处理的情况时,跳过当前循环。
示例:
# 只打印奇数for i in range(10): if i % 2 == 0: # 如果是偶数 continue # 跳过后续代码,直接下一轮循环 print(i) # 只打印奇数: 1, 3, 5, 7, 9# 处理列表时跳过空值data = [1, None, 3, "", 5, "hello"]for item in data: if not item: # 如果item为空、None、False等 continue print(f"处理: {item}")# 输出: 处理: 1, 处理: 3, 处理: 5, 处理: hello
功能:当循环正常完成(即不是通过 break 语句退出)时,执行 else 块中的代码。
用途:常用于搜索场景,判断是否找到了目标。
示例:
# 在列表中查找元素,如果没找到则提示 numbers = [1, 2, 3, 4, 5] target = 6for num in numbers: if num == target: print("找到了!") breakelse: # 注意:else与for对齐,不是与if对齐 print(f"{target} 不在列表中") # 这会执行 # while循环的elsecount = 3while count > 0: print(count) count -= 1else: print("循环正常结束") # 这会执行
功能:什么都不做,只是一个占位符,用于语法上需要语句但逻辑上不需要任何操作的地方。
用途:在循环中暂时跳过某些情况,或者为未来功能预留位置。
示例:
for i in range(5): if i == 2: pass # 暂时不做任何处理,但保持语法正确 else: print(i)# 输出: 0, 1, 3, 4 (跳过了2,但不是由于pass,而是由于没执行print)
# 综合使用各种循环关键字numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = []for num in numbers: # 跳过大于8的数字 if num > 8: continue # 如果是偶数,添加到列表 if num % 2 == 0: even_numbers.append(num) print(f"添加偶数: {num}") # 如果已经收集到3个偶数,就停止 if len(even_numbers) >= 3: print("已收集到3个偶数,停止收集") breakelse: print("循环正常完成,未达到3个偶数")print(f"最终收集的偶数: {even_numbers}")# 输出: 添加偶数: 2, 添加偶数: 4, 添加偶数: 6, 已收集到3个偶数,停止收集# 最终收集的偶数: [2, 4, 6]
关键字 | 功能描述 | 适用循环类型 | 示例 |
for | 迭代遍历序列 | for循环 | for item in list: |
while | 条件循环 | while循环 | while condition: |
break | 完全退出循环 | 两者都适用 | break |
continue | 跳过本次迭代 | 两者都适用 | continue |
else | 循环正常完成后执行 | 两者都适用 | for...: else: |
pass | 空操作占位符 | 两者都适用 | pass |
重大提醒:
使用 while 循环时,确保条件最终会变为 False,否则会造成无限循环。
break 和 continue 只影响最近的一层循环。
循环的 else 子句只有在循环正常完成(未遇到break)时才会执行。
这些关键字让你能够准确控制程序的循环行为,实现复杂的重复任务处理逻辑。