响应python中的错误

时间:2018-07-05 06:56:18

标签: python

我是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}')

我尝试了这个以及其他一些东西。有人可以帮忙吗?

3 个答案:

答案 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')