我最近開始編碼,並且在Codecademy上嘗試學習Python時遇到了一些我不完全理解的內容。函數中的Python錯誤[Beginner]
任務是創建一個函數,告訴它是否被調用,數字是否是質數或不是。
因此,這裏是我的第一個解決方案:
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range(2, x-1):
if x % n == 0:
return False
else:
return True
print is_prime(5)
運行後,它會不停地給該is_prime(3)提供虛假,而不是給人一種真正的消息。 所以在Codecademy網站論壇上,我發現,如果碼的最後一位被alterd搜索到後一點點:
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for n in range(2, x-1):
if x % n == 0:
return False
return True
print is_prime(5)
它開始正常工作。 任何人都可以向我解釋這種改變如何導致代碼工作? 在此先感謝。
想想你的第一個版本何時會返回true。用紙和鉛筆舉例說明。這應該是非常明顯的,那麼錯誤是什麼(儘管在計算素數時,你絕不會是第一個犯這個錯誤的人,即使只是在今天發佈Python SO問題,所以不用擔心)。 – jonrsharpe
我看不到'is_prime(3)'會爲第一個版本返回True或False,因爲'range(2,3-1)'爲空,因此代碼永遠不會有機會返回默認的「None」以外的任何內容。 – TigerhawkT3
@ TigerhawkT3我猜平地機看到'None'爲false-y – jonrsharpe