Python 简明教程

Python for-else Loops

Python - For Else Loop

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

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

Flowchart of For Else Loop

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

forelse

Syntax of For Else Loop

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

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 语句。

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

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 语句时执行。

Example

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

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")

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

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 条件如何起作用。

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")

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

T

For-Else with break statement and if conditions

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

Example

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

# 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()

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

Positive number
Positive number
Positive number
Loop-else Executed