调试Python程序
问题描述:
实在不明白这是怎么回事在这个程序中,它返回调试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
。
答
这里有一些问题,跳出:
1)你从来没有2
检查整除。
2)primeList()
应该返回primes
而不是primeList
。
3)range(3, int(n ** 0.5 + 0.5), 2)
的上限已被关闭。例如,对于n==9
,从不检查3
的可划分性。
一旦我修复这些问题,代码将按预期工作。
答
首先,你应该切换的内部和外部功能 然后做的主要测试正确,最后返回列表,而不是功能:
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))
你实际上并没有一个'在return'声明你的'primeList'。 – Cairnarvon 2013-03-02 13:08:12
除True,False或None之外还应该返回哪些内容?方法末尾的print()语句打印输出,但不返回任何内容!你有没有听说过'回归'?如果没有,请阅读Python文档。 – 2013-03-02 13:10:13
噢,现在我真的很笨! @Cairnarvon – awsomeguy 2013-03-02 13:10:44