注意,这不是我的作业!我只是想同时理解Python(和数学,遗憾)。我知道这个程序的最终目标是获得1到20范围内的素数列表,但是,一旦它到达“for x in range ......”行,我就迷路了,教程没有不详细解释。
请您一步一步地用简单的英语解释并具体说明
a)行for x in range (2,n)
b)在for x in range (2,n),
行n
是什么?底部的“n”是否相同?
c)这n, x, n // x
到底是什么意思。请澄清//
谢谢你能提供帮助
def isprime(n):
if n == 1:
print("1 is special")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print(n, "is a prime number")
return True
for n in range(1, 20):
isprime(n)
答案 0 :(得分:7)
A)
for x in range (2,n)
与
相同for (x = 2; x < n; x++)
在其他语言中:一个循环,其中x得到包含在2和n-1之间的整数值。
b)中
for x in range (2,n):
这个n
来自第一个def isprime(n)
,是随后调用此函数的任何内容。在这种情况下,它始终与底部的n
相同。
c)中
print("{} equals {} x {}".format(n, x, n // x))
这写了以下文字:A equals B x C
其中A
为n
,B
为x
且C
为n/x
四舍五入到最接近的小整数。它被称为整数除法(例如9 // 2 = 4
)
答案 1 :(得分:3)
a)在提示符下尝试:
help(range)
它会告诉你范围(a,b)返回一个列表aarting为a,结束于b-1,所以
range(2,10)
是
[2, 3, 4, 5, 6, 7, 8, 9]
在提示符下播放,输入range(2,2)
,range(2,-1)
,range(2,3)
并查看结果。你会发现n == 1不是唯一的特例。
现在,像for x in y
这样的东西遍历y的元素,在你的情况下,它将是一个列表。您也可以在提示符下验证:
for x in range(2,10) :
print x
b)以def isprime(n)
开头的块是一个函数,参数为n。您可以为任何n:isprime(100)
调用它。在代码的底部,您正在迭代range(1,20)
(如果有疑问将其输入到提示中)并为每个值调用isprime,即1,2,3,4,...,19。
请注意,在此示例中,无需使用range
创建和返回列表,您可以使用xrange
这是一个生成器。在提示符中输入help(xrange)...
答案 2 :(得分:0)
a)x接受从2
到n-1
的值(因为range
排除了上限)
b)不,它与方法定义中的n
相同(即方法参数)
c)整数除法