我制作了这个算法来告诉你一个数字是否是素数,但我不明白为什么不同缩进级别的"if-else 语句"有效



这是代码:

def is_prime(p):
for i in range(2, p):
if p % i == 0:
break
else:
print("Prime")

def main():
p = int(input())
is_prime(p)

main()

我的问题是,如果"else语句"位于比"if"更高的缩进级别,为什么它有效?,我的猜测是,因为"for循环"与"else"在相同的缩进级别,"break语句"使"else"附加到"if",但我不知道。

代码使用的是for else子句,而不是if else子句!

for blah:
do stuff
else:
do more

当且仅当您正常退出for循环时,即在不引发错误或使用break语句的情况下,执行do more子句。

从文档中:"break语句与C中的语句一样,脱离了最内部的封闭for或while循环。

循环语句可能有else子句;当循环由于iterable(with for(耗尽而终止时,或者当条件变为false(with while(时,它会被执行,但当循环被break语句终止时,它不会被执行">

https://docs.python.org/3/tutorial/controlflow.html#break-和循环上的continue语句和else子句

相关内容

最新更新