3 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
for 循環(huán)永遠(yuǎn)不會(huì)運(yùn)行到最后,因?yàn)闊o論a % i == 0您是否會(huì)打破循環(huán)。您應(yīng)該將您的代碼移到print("YES")循環(huán)之外并使用return代替break來確保您的函數(shù)在循環(huán)中斷時(shí)不會(huì)運(yùn)行此代碼。嘗試這個(gè):
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貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
您的代碼實(shí)際上從一開始就是不正確的。
在一次“if”檢查之后,您在循環(huán)內(nèi)使用“break”,所以基本上您只檢查一次。所以你的代碼所做的就是判斷這個(gè)數(shù)字是否能被 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貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
你在第一次運(yùn)行時(shí)打破了循環(huán),
假設(shè)你把 9 放進(jìn)去,想想它
會(huì)失敗 == 2 條件
,然后達(dá)到 % i ==0 條件,并且 9%2 = 1,它會(huì)返回是
除此之外,該程序還有很多錯(cuò)誤,但主要問題是在第一次運(yùn)行后中斷,這沒有任何意義,如果您刪除了中斷并在 else 上打印 if a%i==0 它將起作用,但是您可以在那里進(jìn)行許多優(yōu)化。
添加回答
舉報(bào)