首页 > 解决方案 > 我做了这个算法来告诉你一个数字是否是素数,但我不明白为什么不同缩进级别的“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',但我不知道。

标签: pythonif-statementprimes

解决方案


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

for blah:
    do stuff
else:
    do more

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


推荐阅读