def A(num):
while True:
try:
if num == int(): #int()的值是0,而num是input传入的字符串,永远都不会相等,会跳过中间的内容,又没有触发错误,所以下一步是重新回到while True,不会运行break,这就是一个死循环。
print(num, '输入正确')
break
except ValueError:
print('请重新输入')
num = input('请输入一个整数')
print(A(num)
然后谈谈你的思路,你在函数里只有判断,没有输入,结果就是输入错误的时候,print了'请重新输入',然后While True,然有又循环,不停打印。所以正确的做法要么在函数的循环里input,要么在程序主体里循环,函数只判读。
方案1:def A():
while True:
num = input('请输入一个整数:')
try:
num = int(num)
except ValueError:
print('请重新输入!')
else:
print(num, '输入正确!')
break
return num
print(A())
方案2:def A(num):
try:
num = int(num)
except ValueError:
print('请重新输入!')
return False
else:
print(num, '输入正确!')
return num
while True:
num = input('请输入一个整数:')
a=A(num)
if a==False:
continue
else:
print(a)
break
|