python:程序挂! (打印问题可能?)

时间:2014-03-16 20:16:09

标签: python list primes

所以,我在python上非常高兴。我决定制作一个制作素数的程序。我知道可能有一个内置功能可以做到这一点,但我决定自己做。

number = 1
numlist = list()
for x in range (0, 1000):
    numlist.append("")
    print "Created list entry " + str(x)
while True:
    number = number + 1
    if number % 2 != 0:
        numscrollerA = 1
        numscrollerB = 1
        while numscrollerA <= number:
            if float(number) / float(numscrollerA) == float(int(number)):
                numlist[numscrollerA] = "true"
            if float(number) / float(numscrollerA) != float(int(number)):
                numlist[numscrollerA] = "false"
            numscrollerA = numscrollerA + 1
        while numscrollerB <= number:
            if numscrollerB != 1 and numscroller != number and numlist[numscrollerB] == "true":
                primestatus = "false"
            else:
                primestatus = "true"
        if primestatus == "true":
            print number

我得到了“创建列表条目 x ”1000次。然后该程序就会挂起。

2 个答案:

答案 0 :(得分:0)

   while numscrollerB <= number:
        if numscrollerB != 1 and numscroller != number and numlist[numscrollerB] == "true":
            primestatus = "false"
        else:
            primestatus = "true"

您不会在此循环中增加numscrollerB,因此它会无限运行。无论如何,你应该使用'for loop':

for numscrollerB in range(1, number+1):
    pass  # do something

答案 1 :(得分:0)

你的代码非常单一。典型的新手在不同的编码风格中经历过。 你的清单是不必要的。 在python中,您可以像这样创建列表

def check_even(val):
    #this contains your logic
    return val % 2 == 0

evenslist = [check_even(i) for i in xrange(1, 1001)]

print numlist