索引错误 - 使用try除了规则?

时间:2017-09-17 05:52:20

标签: python

我的索引错误存在问题。下面这段代码基本上要求顾客在他们的比萨饼选择中输入相应的数字(在此之前打印一个带有索引编号的比萨饼列表。)我想这样做,如果顾客输入的数字高于12,这是最高的列表上的披萨号码,如果有意义,它会要求您再次输入相应的号码。我听说除了错误之外你可以试试,但我真的不知道怎么做。

   pizzaItem = int(input("Please enter the corresponding number to your pizza choice: "))
    print("You have added", pizzaMenu[pizzaItem]  , "to your order")
    pizzaOrder.append(pizzaMenu[pizzaItem])
    while len(pizzaOrder) != customerPizzaNumber:
            pizzaItem = int(input("Please enter the corresponding number to your pizza choice: "))
            print("You have added", pizzaMenu[pizzaItem] , "to your order")
            pizzaOrder.append(pizzaMenu[pizzaItem])
    print(" ")
    print("Thanks for chosing your pizzas. Here is your current order:")

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作。这有一个名为pizza_choice的变量。这将在脚本开头设置为None,并且只有在我们成功将其转换为整数时才会设置为数字。所以我们的while循环将继续询问用户输入是否正确,直到我们能够成功确定它是一个数字。

为了让您的示例工作,您可能需要添加更多检查以确定是否允许输入的数字。我只是在检查它是否是一个数字。但是,您可能需要检查该号码是否在特定的选择范围内。

pizza_choice = None

while pizza_choice is None:
    raw_response = input("Please enter your pizza number: ")

    if raw_response.isdigit():
        pizza_choice = int(raw_response)
    else:
        pass

print("Your selected pizza number is: {0}".format(pizza_choice))

答案 1 :(得分:0)

添加此输入检查 - 它将重复此过程,直到用户输入低于12的数字:

pizzaItem = None
while pizzaItem is None:
    pizzaItem = input("Please enter the corresponding number to your pizza choice: "))
    if not (pizzaItem.isdigit() and 0 <= int(pizzaItem) <= len(pizzaMenu)):
        pizzaItem = None
    else:
        pizzaItem = int(pizzaItem)

print("You have added", pizzaMenu[pizzaItem]  , "to your order")