我是python的新手,已经遇到了这个问题。该程序的作用是询问用户他或她的年龄。年龄必须是数字,否则它将返回值错误。我使用了try / except方法来响应该错误,但我也希望它能够使用户输入的年龄低于特定值(例如200)。
while True:
try:
age=int(input('Please enter your age in years'))
break
except ValueError:
print ('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')
except:
if age>=200:
print ('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')
print (f'Your age is {age}')
我尝试了这个以及其他一些东西。有人可以帮忙吗?
答案 0 :(得分:2)
您首先需要检查输入的值是否为整数,请在try子句中执行此操作。
然后,您需要检查该值是否在范围内,请在else子句中执行此操作,该子句仅在try块成功时才执行。
如果该值在范围内,则中断。
下面的代码显示了这一点。
while True:
try:
age=int(input('Please enter your age in years'))
except ValueError:
print ('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')
else:
if age>=200:
print ('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')
else:
break
print (f'Your age is {age}')
答案 1 :(得分:1)
可能的解决方案:
while True:
age_input = input("Please enter your age in years: ")
# Check both if the string is an integer, and if the age is below 200.
if age_input.isdigit() and int(age_input) < 200:
print("Your age is {}".format(age_input))
break
# If reach here, it means that the above if statement evaluated to False.
print ("That's not a valid Number.\nPlease try Again.")
在这种情况下,您不需要进行异常处理。
isdigit()
是String对象的一种方法,它告诉您给定的String是否仅包含数字。
答案 2 :(得分:0)
您可以在if
之后执行input()
语句,但仍然保留except ValueError
,例如:
while True:
try:
age=int(input('Please enter your age in years'))
if age < 200:
# age is valid, so we can break the loop
break
else:
# age is not valid, print error, and continue the loop
print('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')
except ValueError:
print('\n\n\n\nThat\'s not a valid Number.\nPlease try Again.\n\n\n\n')