调试Python程序

2024-10-01 17:36:53 发布

您现在位置: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。你知道吗


Tags: in程序falsetrueforreturnifdef
2条回答

首先,你应该切换内部和外部的功能 然后执行基本测试并更正,最后返回列表,而不是函数:

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))

下面是一些突然出现的问题:

1)从不检查2的可除性。你知道吗

2)primeList()应该返回primes,而不是primeList。你知道吗

3)range(3, int(n ** 0.5 + 0.5), 2)中的上限为1。例如,对于n==9,从不检查被3整除的可能性。你知道吗

一旦我修复了这些问题,代码就会按预期工作。你知道吗

相关问题 更多 >

    热门问题