Python:for if-else 之间的循环,这是如何/为什么工作的?

标签 python conditional if-statement

我目前正在学习 Lynda Python 教程,在生成器部分我看到了以下代码:

def isprime(n):
    if n == 1:
        return False
    for x in range(2, n):
        if n % x == 0:
            return False
    else:
        return True

一开始我没听懂,但在查看代码时我注意到 else 关键字和 if 之间有一个完整的 for 循环> 在相同的缩进级别。令我惊讶的是,代码不仅运行了,而且还产生了正确的行为。

如果我用简单的 print("Hello, World") 语句替换 for 循环,只有这样我才会得到预期的解释器错误。

这种语法背后的原因是什么?为什么它适用于循环语句而不适用于 print() 等其他语句?

作为引用,我本以为代码会像下面这样写:

def isprime(n):
    if n == 1:
        return False     
    for x in range(2, n):
        if n % x == 0:
            return False
    return True

最佳答案

for: block 之后的 else: block 仅在循环正常完成时运行。如果您break 退出循环,它就不会运行。在这种情况下,这没有什么区别,因为您永远不会跳出循环;您可以在它结束之前返回,或者让它正常完成。

关于Python:for if-else 之间的循环,这是如何/为什么工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019794/

相关文章:

python - 如何从 OpenCV fitLine 计算残差?

python - Pandas /Python : Set value of one column based on value in another column

programming-languages - 编程语言中的链式不等式符号

php 如果表存在则删除 mysql

java - 在 print 语句中使用问号 if 条件

javascript - 如何修复 "Uncaught TypeError: Cannot set property ' innerHTML' of null"

python - 在行延续中混合普通字符串和 f 字符串

python - Sublime text 3 运行 python 脚本并在(Ubuntu)之后保持交互模式

python - pyqtgraph 与 Qt 设计器 : how to add PlotItems to GraphicsLayoutWidget

vue.js - VueJs v-for 如何在继续之前检查未定义的列表