Python 中的跳转语句 - continue 语句

17 Mar 2025 | 5 分钟阅读

前提条件: Python 中的循环,Python 中的跳转语句-break

Continue 语句是第二个跳转语句,它提供了循环控制。在本文中,我们将学习 continue 语句的功能和重要性。

我们之前已经讨论过 break 语句。如果特定条件为真,它将终止整个循环。我们讨论了我们需要循环来跳过一些迭代并为其他迭代执行,为了实现这一点,我们使用 continue 语句。

让我们以上一篇文章中的 break 语句为例

想象一下我们编写了一个程序,用户可以在定义的次数内输入值;我们不断地累加输入。如果用户输入了一个负数,我们不应该终止整个循环,而是不累加该数字,而是忽略它并请求下一个数字。

在这里,使用 break 语句被排除。我们需要某种东西来跳过负数迭代,这就是 continue 语句的功能。

定义

Continue 语句是一种跳转语句,它提供了循环控制,以便在条件满足时完全跳过或忽略循环的某次迭代。顾名思义,它会跳过整个迭代并继续下一次迭代。

  • 一旦解释器在代码中找到 continue 语句,它就会终止当前迭代,并将控制权转移回循环,以继续下一次迭代。

语法

流程图

Jump Statements in Python-continue statement

正如您所观察到的,如果执行了 continue 语句;控制权会回到循环,只跳过该特定迭代。

continue 语句在 for 和 while 循环中的工作原理

Jump Statements in Python-continue statement

要点

  1. 与 break 语句一样,continue 语句可以在所有循环中使用。
  2. 与 break 不同,它不能在 switch-case 语句中使用。
  3. "continue" 是 Python 库中的保留关键字。
  4. 它也几乎总是写在循环体内的 if 语句中。
  5. 我们不能在没有循环的情况下使用 continue 语句。它会引发错误
    "SyntaxError:'continue' outside loop"。
  6. 如果我们使用了嵌套循环的内层循环中的 continue 语句,那么内层循环的迭代将被跳过。外层循环不会受到影响。
  7. 我们不能将标签、条件或其他选项与 continue 语句一起使用。

示例情景

考虑上面的例子。我们需要在用户输入负数时跳过。我们现在应该设计一个程序来计算用户输入的 10 个随机数中仅正数的总和。

代码

输出

Enter a number: 1
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: -9
Enter a number: 6
Enter a number: 7
Enter a number: -3
Enter a number: 9
Enter a number: 10
The sum of the 10 positive numbers you gave:  42

理解

正如您所观察到的,在第 4和第 7迭代中,用户输入了负数 -9 和 -3。在循环内部,我们检查用户输入的数字是否大于 0。如果不是,则执行 "continue" 语句,并忽略(跳过)该特定迭代,然后执行 i+1 的下一次迭代。

示例程序

输出

The wrong spelling mentioned earlier: ['D', 'I', 'R', 'E', 'C', 'U', 'T', 'I', 'O', 'N']
The filtered correct spelling: ['D', 'I', 'R', 'E', 'C', 'T', 'I', 'O', 'N']

理解

在循环内部,我们检查列表拼写中的所有字符是否都是正确的拼写 "DIRECTION"。如果是,我们将这些字符追加到列表 "correct" 中。如果不是,我们使用 continue 语句。由于字符 "U" 不在单词的正确拼写中,因此该字母被跳过了。您可以在输出中观察到两个列表之间的差异。

输出

The natural numbers in the list: [3, 4, 2]

理解

我们编写了这个程序来打印列表中的自然数(如果存在)。列表中有一个 0,两个负数和一个小数,正如您在列表中看到的。我们迭代了数字中的值,并在循环内部,我们检查数字是否为正数且为整数。如果是,我们将该值追加到一个新列表 nat_num 中。如果不是,我们使用 else 块中的 continue 语句跳过迭代。

输出

* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * * 
* * * * * * * 
* * * * * * * * 
* * * * * * * * * 
	* * * * * * * * * *

理解

在这里,我们使用 continue 语句打印 '*' 直到我们打印出正确数量的 '*' 行,然后跳过下一次迭代。如果当前的星号计数小于行号,我们打印星号然后通过增加星号的值来跳过;否则,我们转到新行(新行)。

在嵌套 for 循环中

如果 if 条件为真,则执行 continue 语句,跳过内层循环中 j 的迭代,并继续 j+1 的下一次迭代。它不会影响外层循环。

带标签的 continue 语句

顾名思义,带标签的 continue 语句将在其上附加一个标签,指示要迭代哪个循环。这是一个例子

我们可以使用带标签的 continue 来跳过外层循环的迭代,而不是只跳过内层循环。但是,这在我们的 Python 语言中是不合法和未定义的。其他流行的编程语言使用这种机制,但在 Python 中不允许。

已向 Python 社区提交 PEP,要求在该语言中添加带标签的 continue 语句,但被拒绝,理由是它会增加代码和语言的不必要复杂性。


下一个主题Python Time 模块