For-Else循环在另一个For循环中

时间:2014-02-20 15:51:06

标签: python algorithm program-structure for-else

我对另一个for循环中的for-else循环有一些疑问。所以这是一个例子:

primelist = []
for p in range (2, x+1):
    print 'in first for'
    raw_input()
    for i in range(2, p):
        print 'in second for'
        if p%i == 0:
            print 'in if'
            raw_input()
            break
    else:
        print 'in else'
        raw_input()
        primelist = primelist + [p]
return primelist

如您所见,这是用于确定素数并将它们存储到列表中,以便以后检索它们。所以我的问题是第一个for循环。当我运行程序时,它输入如下:第一个FOR循环,ELSE,第一个FOR循环,第二个FOR循环,依此类推。为什么它第一次跳到ELSE? 此外,如果我要求获得第1000个数字:7919带

for i in range(2, p)

和7907与

for i in range(2, p/2).

为什么? 希望你能帮我解决这个问题,但是请不要提供其他方法来实现Prime Number算法!

1 个答案:

答案 0 :(得分:1)

Python的range不包含结束值。

range[start, end)

因此,在第一次迭代中,p的值为2,range(2, 2)为空列表。这就是输入else部分的原因。

print range(2, 2)  # []