首页 > 解决方案 > 如何验证用户的输入并确保它是正确的类型并在给定范围内?

问题描述

我正在尝试编写一个程序,该程序将帮助我在工作中编写有关治疗程序中十几岁男孩的行为报告。目标是让写日常期望(饮食、卫生、上学等)变得更容易,这样我就可以写出独特的行为并更快地完成报告。我目前正在研究男孩白天吃了多少顿饭,并试图让它验证用户输入是正确的输入类型并且在正确的范围内(0-3)。之后我想根据给出的答案更改变量,以便打印一个字符串,说明他们吃了多少顿饭。我已经能够让程序验证类型以确保用户给出和整数,但我无法确保给定的答案在所需的范围内。任何帮助将不胜感激我一个月前才开始学习python和编程,所以非常缺乏经验。这是我的代码到目前为止的样子,以及我希望变量根据给定答案更改的内容。

Name=input('Student Name:')

while True:
    try:
        Meals=int(input('Number of Meals(between 0-3):'))
    except ValueError:
            print ('Sorry your response must be a value between 0-3')
            continue
    else:
        break

    while True:
        if 0<= Meals <=3:
            break
        print('not an appropriate choice please select a number between 0-3')
        #if Meals== 3:
        #Meals= 'ate all 3 meals today'
        #elif Meals==2:
        #Meals='ate 2 meals today'
        #elif Meals==1:
        #Meals='ate only 1 meal today'
        #elif Meals==0:
        #Meals='did not eat any meals today'    

标签: python-3.xloopsvalidation

解决方案


您可以检查输入的餐食数量是否在有效范围内,如果是,则退出循环。如果不是,请引发异常:

while True:
    try:
        meals = int(input('Number of Meals(between 0-3):'))
        if 0 <= meals <= 3:
            break
        raise Exception()
    except:
        print('Please input valid integer (0-3)')


print('Your choice was:', meals)

打印(例如):

Number of Meals(between 0-3):xxx
Please input valid integer (0-3)
Number of Meals(between 0-3):7
Please input valid integer (0-3)
Number of Meals(between 0-3):2
Your choice was: 2

推荐阅读