2013-03-02 83 views
-1

实在不明白这是怎么回事在这个程序中,它返回调试Python程序

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 37, 38, 41, 43, 44, 46, 47, 49] 

帮助?

def primeTest(n): 
    if n < 2: 
     return False 
    if n == 2: 
     return True 
    for x in range(3, int(n ** 0.5 + 0.5), 2): 
     if n % x == 0: 
      return False 
    return True 
def primeList(largestValue): 
    primes = [] 
     for a in range(2, largestValue): 
      if primeTest(a) == True: 
       primes.append(a) 
    return primes  
print(primeList(101)) 

我已经意识到它的第一功能primeTest,监守如果我输入print(primeTest(10))返回True

+3

你实际上并没有一个'在return'声明你的'primeList'。 – Cairnarvon 2013-03-02 13:08:12

+0

除True,False或None之外还应该返回哪些内容?方法末尾的print()语句打印输出,但不返回任何内容!你有没有听说过'回归'?如果没有,请阅读Python文档。 – 2013-03-02 13:10:13

+0

噢,现在我真的很笨! @Cairnarvon – awsomeguy 2013-03-02 13:10:44

回答

0

这里有一些问题,跳出:

1)你从来没有2检查整除。

2)primeList()应该返回primes而不是primeList

3)range(3, int(n ** 0.5 + 0.5), 2)的上限已被关闭。例如,对于n==9,从不检查3的可划分性。

一旦我修复这些问题,代码将按预期工作。

0

首先,你应该切换的内部和外部功能 然后做的主要测试正确,最后返回列表,而不是功能:

def primeList(largestValue): 
    def isPrime(n): 
     if n < 2: return False 
     if n == 2: return True 
     if n & 1 == 0: return False 
     for x in range(3, int(n ** 0.5)+1, 2): 
      if n % x == 0: 
       return False 
     return True 


    primes = [] 
    for a in range(2, largestValue): 
     if isPrime(a): 
      primes.append(a) 
    return primes 

print(primeList(101))