第033讲动动手第二题
题目要求:2. 尝试一个新的函数 int_input(),当用户输入整数的时候正常返回,否则提示出错并要求重新输入。我的代码:
def A(num):
while True:
try:
if num == int():
print(num, '输入正确')
break
except ValueError:
print('请重新输入')
num = input('请输入一个整数')
print(A(num)
运行一直没反应,不明白是哪里出错了。。 少了一个小括号(复制问题吧) 本帖最后由 qiuyouzhi 于 2020-2-27 18:06 编辑
int()是一个BIF,不能用于判断,应该这样改
def A(num):
while True:
try:
if num.isdigit(): # 判断输入的字符串是否为数字
print(num, '输入正确')
break
except ValueError:
print('请重新输入')
num = input('请输入一个整数')
A(num) qiuyouzhi 发表于 2020-2-27 18:03
int()是一个BIF,不能用于判断,应该这样改
但我发现输入小数的时候他不会提示错误... 好好学不玩手机 发表于 2020-2-27 18:09
但我发现输入小数的时候他不会提示错误...
对啊
因为不会触发ValueError
建议用if和else 用try更好理解
try:
int(num)
except:
#错误代码
else:
#正确代码 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
页:
[1]