3 回答

TA貢獻2016條經驗 獲得超9個贊
for 循環永遠不會運行到最后,因為無論a % i == 0您是否會打破循環。您應該將您的代碼移到print("YES")循環之外并使用return代替break來確保您的函數在循環中斷時不會運行此代碼。嘗試這個:
def main():
try:
a = int(input())
if isinstance(a, int):
a = int(a)
if a ==2:
print('YES')
if a > 1:
for i in range(2, a):
if a % i == 0:
print('NO')
return
print('YES')
return
else:
print('NO')
else:
print('NO')
except EOFError:
print('NO')
except ValueError:
print('NO')
main()

TA貢獻2012條經驗 獲得超12個贊
您的代碼實際上從一開始就是不正確的。
在一次“if”檢查之后,您在循環內使用“break”,所以基本上您只檢查一次。所以你的代碼所做的就是判斷這個數字是否能被 2 整除。
try:
a = int(input())
flag = 0
if isinstance(a, int):
a = int(a)
if a==1:
print('Neither')
elif a ==2:
print('YES')
else:
for i in range(2, a):
if a % i == 0:
flag=1
break
else:
print('NO')
except EOFError:
print('NO')
except ValueError:
print('NO')
if flag:
print('NO')
else:
print('YES')

TA貢獻1847條經驗 獲得超11個贊
你在第一次運行時打破了循環,
假設你把 9 放進去,想想它
會失敗 == 2 條件
,然后達到 % i ==0 條件,并且 9%2 = 1,它會返回是
除此之外,該程序還有很多錯誤,但主要問題是在第一次運行后中斷,這沒有任何意義,如果您刪除了中斷并在 else 上打印 if a%i==0 它將起作用,但是您可以在那里進行許多優化。
添加回答
舉報