我发现了这种打印素数的语法,我很困惑。我希望这个社区能够澄清

问题描述 投票:0回答:1
Nums = range(1,60)

def is_prime(Nums):
    for x in range(2, Nums):
        if (Nums%x) ==0:
            return False
    return True

prime_numbers = list(filter(is_prime,Nums))

Print(prime_numbers)

使用

for x in range(2, Nums)
语法,我预计会引发错误,因为 Nums 参数不是整数。然而,python 成功解释了它并移动到下一行代码。

再说一遍,

if (Nums%x) ==0
语法是什么意思

python function range integer-division
1个回答
0
投票

您会感到困惑,因为截取的代码对函数参数和全局变量使用相同的变量名。

代码可以解释如下:

Nums = range(1,60)

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

prime_numbers = list(filter(is_prime,Nums))

print(prime_numbers)

您还可以使用

type
函数查看函数内部
Nums
参数 (
n
) 的类型(它是
int
)。

我建议您阅读这里有关

filter
功能的更多信息,如果这还不够,您可以自己搜索。


表达式

if (Nums%x) ==0
检查
Nums
除以
x

时是否没有余数
© www.soinside.com 2019 - 2024. All rights reserved.