我是编程新手并试图让用户输入同时接受整数和字符串。我尝试了以下编码..但不知道我哪里出错了。有什么建议吗?
noAdults = input("Please enter the number of adults:")
while noAdults.isalpha():
print("Number must be valid and >= 0")
if noAdults.isdigit() and noAdults < 0:
print("Error")
noAdults = input("Please enter the number of adults:")
ValueError:基数为10的int()的无效文字:
我猜测有一个ValueError,因为我已经将变量noAdults与isalpha一起使用并且因为它在int中而发出错误?
答案 0 :(得分:2)
您需要验证输入字符串是否为有效整数,然后才能检查它是否为非负
while True:
noAdults = input("Please enter the number of adults:")
try:
noAdults = int(noAdults)
except ValueError:
print("Not a valid number")
continue
if noAdults >= 0:
break
else:
print("Number must be >= 0")
答案 1 :(得分:0)
在处理字符串输入的错误情况之前抛出异常,它在第一行失败。您可以在尝试isalpha()
之前检查int()
,或者可以捕获ValueError
例外。
要展开chepner's solution,请使用一些额外的打印行来向您展示正在发生的事情:
while True:
noAdults = input("Please enter the number of adults:")
try:
noAdults = int(noAdults)
except ValueError:
print("Not a valid number")
continue
if noAdults >= 0:
break
else:
print("Not greater than 0")
print(noAdults)
这是Python 3中一个完全正常工作的版本。