是否在for循环之外,如果是,为什么不执行?

时间:2019-10-24 22:04:30

标签: python loops for-loop indentation

numbers = [10, 20, 33, 55, 39, 55, 75, 37, 21, 23, 41, 13]

for num in numbers:
    if num % 2 == 0:
       print(num)
       break
else:
   print(num)

在上面的代码中,我确实有与else循环相对应的for块,并且没有被执行。有人可以指导我为什么它不执行吗?

4 个答案:

答案 0 :(得分:3)

是的,else块对应于for循环,但是只有从不执行break时,它才会执行。由于您在numbers中拥有偶数,因此执行了列表中断,这就是为什么不执行else的原因

for num in numbers:
  if num % 2 == 0:
     print(num)
     break
else:
  print(num)

尝试使用此列表number=[11,22,33]else块将被执行,以获取更多信息 4.4. break and continue Statements, and else Clauses on Loops

Python具有不同的语法,其中Loop语句可能具有else子句

  

循环语句可以包含else子句;当循环通过穷尽迭代器而终止时(带有for),或者当条件变为假时(带有while时),则执行该语句;但是,当循环由break语句终止时,则不执行该语句。以下循环示例搜索质数:

答案 1 :(得分:0)

没有其他“ if”。我认为您需要这样的东西:

numbers = [10, 20, 33, 55, 39, 55, 75, 37, 21, 23, 41, 13]

for num in numbers:
    if num % 2 == 0:
        print(num)
        break
print(num)

答案 2 :(得分:0)

缩进似乎是错误的,请尝试此操作。

for num in numbers:
    if num % 2 == 0:
        print(num)
        break
    else:
        print(num)

答案 3 :(得分:0)

我认为最好通过各种测试来证明这一点。因此,for循环可以有一个else块。仅在循环正常完成时才执行else块。即,循环中没有break。如果我们创建一个接受列表和分隔符的函数。我们可以看到,如果if条件匹配并且我们先打印然后中断,则else块将永远不会运行。仅当我们在没有break的情况下一直运行循环时,else才会被执行

def is_divisable_by(nums, divider):
    for num in nums:
        if num % divider == 0:
            print(num, "is divsiable by ", divider)
            break
    else:
        print("none of the numbers", nums, "were divisable by", divider)

numbers = [1, 6, 3]
numbers2 = [7, 8, 10]
is_divisable_by(numbers, 2)
is_divisable_by(numbers, 7)
is_divisable_by(numbers2, 4)
is_divisable_by(numbers2, 6)

输出

6 is divsiable by  2
none of the numbers [1, 6, 3] were divisable by 7
8 is divsiable by  4
none of the numbers [7, 8, 10] were divisable by 6