簡體   English   中英

python中的“ For”迭代器未返回正確答案

[英]'For' iterator in python doesn't return the right answer

我用python編寫了此代碼,以計算給定值下的素數。 當我執行代碼時,它將打印“ 0”。 誰能告訴我為什么我的代碼出錯了?

def is_prime(x):
    if x<2:
        return False
    else:    
        for value in range(2, x):
            if x%value == 0:
                return False
        else: 
            return True

def primes_in(x):
    primes = [ ]
    for value in range(2, x+1):
        if is_prime(value):
            primes.append(1)
        elif not is_prime(value):
            primes.append(0)
        else: 
            primes.append(0)
    return sum(primes)

print primes_in(25)

請參閱范圍功能
range(start, stop[, step])

 for value in range(2, x+1):
            if x%value == 0:
                return False

這意味着值從2變為x 包括在內 這意味着必定會有x%value == 0 因此,您的函數始終返回False,然后素數為0的列表。

您應該使用for value in range(2, x)

問題出在is_prime函數中,您正在從2循環到x包括兩者),因此x%x始終為0,因此它將始終返回False。

您只需要循環直到數字的平方。

示例代碼-

def is_prime(x):
    if x<2:
        return False
    else:    
        for value in range(2, int(x**(1/2))+1):
            if x%value == 0:
                return False
        else: 
            return True

另外,在其他功能中,您應該啟動

def is_prime(x):
    if x<2:
        return False
    else:
        if x == 2:
            return True
        for value in range(2, int(x**(0.5)) + 1):
            if x%value == 0:
                return False
        return True
def primes_in(x):
    primes = []
    for value in range(2, x+1):
        if is_prime(value) == True:
            primes.append(1)
        elif is_prime(value) == False:
            primes.append(0)
        else:
            primes.append(0)
    return sum(primes)
print primes_in(25)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM