Python 简明教程

Python for-else Loops

Python - For Else Loop

Python 支持将可选的 else blockfor loop 关联。如果将 else blockfor loop 一起使用,它仅在 for 循环正常终止时执行。

Python supports an optional else block to be associated with a for loop. If a else block is used with a for loop, it is executed only when the for loop terminates normally.

在不遇到 break statement 的情况下完成所有迭代时,for 循环正常终止,这让我们可以在满足某个条件时退出循环。

The for loop terminates normally when it completes all its iterations without encountering a break statement, which allows us to exit the loop when a certain condition is met.

Flowchart of For Else Loop

以下流程图说明了 for-else loop 的使用:

The following flowchart illustrates use of for-else loop

forelse

Syntax of For Else Loop

以下是具有可选 else 块的 for 循环的语法:

Following is the syntax of for loop with optional else block −

for variable_name in iterable:
 #stmts in the loop
 .
 .
 .
else:
 #stmts in else clause
 .
 .

Example of For Else Loop

以下示例说明了在 Python 中将 else 语句与 for 语句相结合。在计数少于 5 时,将打印迭代计数。当它变为 5 时,将在将控制传递到主程序中的下一条语句之前,执行 else 块中的 print 语句。

The following example illustrates the combination of an else statement with a for statement in Python. Till the count is less than 5, the iteration count is printed. As it becomes 5, the print statement in else block is executed, before the control is passed to the next statement in the main program.

for count in range(6):
   print ("Iteration no. {}".format(count))
else:
   print ("for loop over. Now in else block")
print ("End of for loop")

执行后,此代码将会产生以下 output

On executing, this code will produce the following output

Iteration no. 1
Iteration no. 2
Iteration no. 3
Iteration no. 4
Iteration no. 5
for loop over. Now in else block
End of for loop

For-Else Construct without break statement

如本教程前文所述,else 块仅在循环正常终止时执行,即在未使用 break 语句时执行。

As mentioned earlier in this tutorial, the else block executes only when the loop terminates normally i.e. without using break statement.

Example

在以下程序中,我们使用了不带 break 语句的 for-else 循环。

In the following program, we use the for-else loop without break statement.

for i in ['T','P']:
   print(i)
else:
   # Loop else statement
   # there is no break statement in for loop, hence else part gets executed directly
   print("ForLoop-else statement successfully executed")

执行后,上述程序将生成以下输出 −

On executing, the above program will generate the following output −

T
P
ForLoop-else statement successfully executed

For-Else Construct with break statement In case of forceful termination (by using break statement) of the loop, else statement is overlooked by the interpreter and hence its execution is skipped.

Example

以下程序展示了在使用 break 语句时,else 条件如何起作用。

The following program shows how else conditions work in case of a break statement.

for i in ['T','P']:
   print(i)
   break
else:
   # Loop else statement
   # terminated after 1st iteration due to break statement in for loop
   print("Loop-else statement successfully executed")

执行后,上述程序将生成以下输出 −

On executing, the above program will generate the following output −

T

For-Else with break statement and if conditions

如果我们将 for-else 结构与 break 语句和 if 条件一起使用,则 for 循环会迭代遍历迭代器,而且在此循环中,你可以使用 if 块来检查特定条件。如果循环完成时未遇到 break 语句,则将执行 else 块中的代码。

If we use for-else construct with break statement and if condition, the for loop will iterate over the iterators and within this loop, you can use an if block to check for a specific condition. If the loop completes without encountering a break statement, the code in the else block is executed.

Example

以下程序展示了在使用 break 语句和 conditional statements 时,else 条件如何起作用。

The following program shows how else conditions works in case of break statement and conditional statements.

# creating a function to check whether the list item is a positive
# or a negative number
def positive_or_negative():
   # traversing in a list
   for i in [5,6,7]:
   # checking whether the list element is greater than 0
      if i>=0:
         # printing positive number if it is greater than or equal to 0
         print ("Positive number")
      else:
         # Else printing Negative number and breaking the loop
         print ("Negative number")
         break
   # Else statement of the for loop
   else:
      # Statement inside the else block
      print ("Loop-else Executed")
# Calling the above-created function
positive_or_negative()

执行后,上述程序将生成以下输出 −

On executing, the above program will generate the following output −

Positive number
Positive number
Positive number
Loop-else Executed