title: Python的For/Else语句
tags:

  • python
  • 自学记录
    abbrlink: 78b59d9f
    date: 2021-05-21 18:05:39

知识点

首先我们知道可以像下面这样使用循环:

  1. fruits = ['apple', 'banana', 'mango']
  2. for fruit in fruits:
  3. print(fruit.capitalize())

这是 for 循环的基本结构,现在让我们继续讨论 python 的 for 循环中的一个鲜为人知的特性—— else 子句。

for 循环也有一个大多数人都不熟悉 else 子句,该 else 子句在循环正常完成时执行,这意味着循环没有遇到任何 break 语句。当你明白了在哪里使用它们,就会非常有用。

常见的状况是运行一个循环并搜索一个项,如果找到该项目,我们使用 break 跳出循环。有两种情况可能会导致循环结束。第一个是找到该项并 break ,第二种情况是循环自然结束。现在我们可能想知道其中的哪一个是循环完成的原因,一种方法是设置一个标志,然后在循环结束时检查它,另一个是使用该 else 子句。

下面是一个for/else循环的基本结构:

  1. for item in container:
  2. if search_something(item):
  3. # Found it!
  4. process(item)
  5. break
  6. else:
  7. # Didn't find anything..
  8. not_found_in_container()

下面这个简单的例子来自官方文档:

  1. for n in range(2, 10):
  2. for x in range(2, n):
  3. if n % x == 0:
  4. print(n, 'equals', x, '*', n/x)
  5. break

它找出 2 到 10 之间因数。现在开始有趣的部分,我们可以添加一个额外的 else 子句块来捕捉素数并打印:

  1. for n in range(2, 10):
  2. for x in range(2, n):
  3. if n % x == 0:
  4. print( n, 'equals', x, '*', n/x)
  5. break
  6. else:
  7. # loop fell through without finding a factor
  8. print(n, 'is a prime number')

例题

输出指定范围内的素数:

  1. lower = int(input())
  2. upper = int(input())
  3. for num in range(lower, upper+1):
  4. if num>1:
  5. for i in range(2, num):
  6. if(num%i)==0:
  7. break
  8. else:
  9. print(num)