如何检查用户输入(Python)

如何检查用户输入(Python),python,input,Python,Input,我已经看到了很多关于这个问题的答案,但我正在寻找一些非常具体的答案。我需要完成的(在伪代码中)是: 我对Python非常陌生,因此代码可能不合适,但我有以下几点: def enter_quantity(): for q in menu: quantities[q] = int(input("How many orders of " + str(q) + "?: ")) 因此,除了评估用户输入之外,这一切都可以完成。我遇到的问题是,如果输入不正确,我需要在顶级for循环中为同一项

我已经看到了很多关于这个问题的答案,但我正在寻找一些非常具体的答案。我需要完成的(在伪代码中)是:

我对Python非常陌生,因此代码可能不合适,但我有以下几点:

def enter_quantity():
  for q in menu:
      quantities[q] = int(input("How many orders of " + str(q) + "?: "))
因此,除了评估用户输入之外,这一切都可以完成。我遇到的问题是,如果输入不正确,我需要在顶级for循环中为同一项重新提示他们。因此,如果它询问“多少片比萨饼?”并且用户输入“十”,我希望它说“对不起,那不是一个数字”,然后再次返回“多少片比萨饼?”的提示

欢迎提出任何意见。谢谢


我的最终解决方案:

def enter_quantity():
for q in menu:
    booltest = False
    while booltest == False:
        inp = input("How many orders of " + str(q) + "?: ")
        try:
            int(inp)
            booltest = True
        except ValueError:
            print (inp + " is not a number. Please enter a nermic quantity.")
    quantities[q] = int(inp)

您需要一个带有try/except的while循环来验证输入:

def enter_quantity():
    for q in menu:
        while True:
            inp = input("How many orders of {} ?: ".format(q))
            try:
               inp = int(inp) # try cast to int
               break
            except ValueError:
                # if we get here user entered invalid input so print message and ask again
                print("{} is not a number".format(inp))
                continue
        # out of while so inp is good, update dict
        quantities[q] = inp

如果添加了一个菜单,那么这段代码会更有用,否则它会在第一关崩溃。我还添加了一个字典来存储输入值

menu = 'pizza', 'pasta', 'vino'
quantities = {}
def enter_quantity():

    for q in menu:
        while True:
            if q == 'pizza':
                inp = input(f"How many slices of {q} ?: ")
            elif q == 'pasta':
                inp = input(f"How many plates of {q} ?: ")
            elif q == 'vino':
                inp = input(f"How many glasses of {q} ?: ")
            try:
               inp = int(inp) # try cast to int
               break
            except ValueError:
                # exception is triggered if invalid input is entered. Print message and ask again
                print("{} is not a number".format(inp))
                continue
        # while loop is OK, update the dictionary
        quantities[q] = inp

    print(quantities) 
然后从以下命令运行代码:

enter_quantity()

很抱歉我省略了一段代码。。。第一篇文章,我将对它进行编辑,以反映出那里有一个FOR循环。谢谢你的评论,我会尝试一下。没问题,这个例子的主要内容是如何使用带有try/except的while循环来验证输入。我更新了我的示例。我找到了我的解决方案,我将标记您的答案并显示我的代码。真的很欣赏第二双眼睛!到目前为止,学习Python非常有趣。没问题,只是想让你知道我的代码和你的一样,我们只在每次迭代得到有效输入时才留下时间
enter_quantity()