為什么下面的代碼給了我錯誤的結果?當我給它像 2 和 3 這樣的數字時,它說它們不是素數。只有一些數字有效,但在大多數情況下它給出了錯誤的答案。
def prompt_input(input_msg, error_msg):
while True:
userinput = input(input_msg)
try:
integer = int(userinput)
if integer > 1:
return integer
print(error_msg)
except ValueError:
print(error_msg)
def check_prime(number):
for i in range(2, number):
if number % i == 0:
return False
return True
primenum = prompt_input(
"Give an integer that's bigger than 1: ",
"You had one job"
)
if check_prime(primenum):
print("This is a prime.")
else:
print("This is not a prime.")
uj5u.com熱心網友回復:
第一個問題:您的 for 回圈在一次迭代后回傳,因此正確的回傳邏輯是:
def check_prime(number):
for i in range(2, number):
if number % i == 0:
return False
return True
但是,您也錯誤地實作了這一點,回圈需要迭代到數字的 sqrt。
def check_prime(number):
for i in range(2, int(sqrt(number)) 1):
if number % i == 0:
return False
return True
希望這可以幫助!
uj5u.com熱心網友回復:
需要取消縮進return True.
def check_prime(number):
for i in range(2, number):
if number % i == 0:
return False
return True
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518286.html
上一篇:R中帶有回圈的摘要資料框
下一篇:在R中回圈使用表名
