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
块,并且没有被执行。有人可以指导我为什么它不执行吗?
答案 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