核心概念
continue 是 Python 中的一个控制流语句,它的作用非常明确:立即终止当前循环的本次迭代,并跳转到下一次迭代的开始处。

你可以把它想象成在跑步比赛中,当你跑到一个检查点时,决定“跳过这个检查点的任务,直接跑向下一个检查点”,你并没有退出整个比赛,只是跳过了当前的一个步骤。
continue 的工作原理
continue 只能用在 for 循环和 while 循环内部。
当程序执行到 continue 语句时:
- 循环体内
continue语句之后的所有代码都将被跳过,不执行。 - 程序会立即判断循环的控制条件(对于
while循环)或获取下一个元素(对于for循环)。 - 如果循环条件仍然满足(或
for循环还有元素),则开始下一次迭代;否则,循环结束。
代码示例
让我们通过几个例子来直观地理解 continue 的作用。

示例 1:在 for 循环中使用 continue
这个例子会打印 1 到 10 之间的所有数字,但跳过所有能被 3 整除的数字。
print("开始打印 1 到 10 之间的数字(跳过3的倍数):")
for number in range(1, 11):
# number 能被 3 整除,就执行 continue
if number % 3 == 0:
print(f"发现 {number},是3的倍数,跳过!")
continue # 跳过本次循环的剩余部分,直接进入下一次循环
# 这行代码只有在没有被 continue 跳过时才会执行
print(f"当前数字是: {number}")
print("\n循环结束。")
输出结果:
开始打印 1 到 10 之间的数字(跳过3的倍数):
当前数字是: 1
当前数字是: 2
发现 3,是3的倍数,跳过!
当前数字是: 4
当前数字是: 5
发现 6,是3的倍数,跳过!
当前数字是: 7
当前数字是: 8
发现 9,是3的倍数,跳过!
当前数字是: 10
循环结束。
分析:
当 number 的值是 3, 6, 9 时,if 条件成立,print(f"当前数字是: {number}") 这行代码被跳过,直接进入下一次循环。
示例 2:在 while 循环中使用 continue
这个例子会模拟一个简单的用户登录过程,允许用户最多尝试 3 次,如果用户输入了 "quit",则提前退出循环。

attempts = 0
max_attempts = 3
while attempts < max_attempts:
password = input("请输入密码(或输入 'quit' 退出): ")
# 用户选择退出
if password.lower() == 'quit':
print("用户选择退出登录。")
break # 使用 break 完全退出循环
# 密码错误
if password != "secret123":
attempts += 1
remaining_attempts = max_attempts - attempts
if remaining_attempts > 0:
print(f"密码错误!你还有 {remaining_attempts} 次机会。")
continue # 跳过本次循环的剩余部分(即下面的成功提示),直接进入下一次尝试
# 密码正确
print("登录成功!欢迎!")
break # 登录成功后,也退出循环
else:
# 这个 else 块与 while 循环关联,当循环条件变为 False 时执行(即 attempts >= max_attempts)
print("尝试次数已达上限,账户已锁定。")
分析:
- 当用户输入错误的密码时,
if password != "secret123":成立,程序会更新attempts,打印错误信息,然后执行continue。print("登录成功!欢迎!")这行代码被跳过,循环进入下一次迭代。 - 当用户输入正确的密码或 "quit" 时,
break语句被执行,整个循环被终止。 - 如果用户 3 次都输错,
while attempts < max_attempts这个条件最终会变为False,循环正常结束,else块中的代码会被执行。
continue vs. break vs. pass
这是一个非常重要的区别,初学者很容易混淆。
| 关键字 | 作用 | 形象比喻 |
|---|---|---|
continue |
跳过本次迭代,继续下一次迭代。 | 跑步比赛中,跳过当前检查点的任务。 |
break |
完全终止整个循环。 | 跑步比赛中,因伤退赛。 |
pass |
什么都不做,是一个空操作语句,它只是占位符,让代码能顺利运行。 | 跑步比赛中,在检查点站了一会儿,然后继续跑。 |
代码对比示例
# --- continue 示例 ---
print("--- continue ---")
for i in range(5):
if i == 2:
continue
print(i)
# 输出: 0, 1, 3, 4 (跳过了 2)
# --- break 示例 ---
print("\n--- break ---")
for i in range(5):
if i == 2:
break
print(i)
# 输出: 0, 1 (遇到 2 时,整个循环结束)
# --- pass 示例 ---
print("\n--- pass ---")
for i in range(5):
if i == 2:
pass # 什么都不做,只是占个位置
print(i)
# 输出: 0, 1, 2, 3, 4 (pass 没有任何影响)
最佳实践和注意事项
-
避免过度使用:虽然
continue很方便,但滥用它会使代码逻辑变得难以理解,形成所谓的“箭头代码”(代码向右缩进过多),如果循环体开头就有一个复杂的if判断并跟continue,可以考虑重构代码,将“正常逻辑”放在前面,将“异常处理”放在后面,这样代码会更清晰。不推荐(过度使用 continue):
for item in items: if not item.is_valid(): continue if item.is_special(): continue # ... 处理普通 item 的复杂逻辑 ...推荐(逻辑前置):
for item in items: if item.is_valid() and not item.is_special(): # ... 处理普通 item 的复杂逻辑 ... # ... 其他情况(无效或特殊)在这里可以统一处理或忽略 ... -
与
else子句的配合:for和while循环都有一个可选的else子句,这个else块只在循环正常结束时执行(即循环条件变为False),如果循环是因为break语句而终止的,else块不会执行。continue不会影响else块的执行,只要循环不是因为break结束,else块最终都会执行。# 示例:查找一个列表中是否包含偶数 numbers = [1, 3, 5, 7] for num in numbers: if num % 2 == 0: print(f"找到了偶数: {num}") break # 找到后,用 break 终止循环 else: # 这个 else 会在 for 循环“正常结束”后执行(即没有遇到 break) print("列表中没有找到任何偶数。") # 输出: 列表中没有找到任何偶数。
continue是一个强大的循环控制工具,用于跳过当前迭代的剩余代码。- 它和
break(终止整个循环)以及pass(空操作)有本质区别。 - 适当地使用
continue可以简化代码逻辑,但过度使用会降低代码的可读性。 - 记住它与循环
else子句的交互方式:break会阻止else执行,而continue不会。
