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 它将起作用,但是您可以在那里进行许多优化。
添加回答
举报