Python循环没有突破

时间:2018-03-22 01:45:46

标签: python loops while-loop

我希望当我的isQuit变量为"yes"且客户变为False时,整个循环将退出。但是,当order_item位于menu_items之前,似乎会重复当前循环。

你可以帮我改变我的代码,以便在用户想要退出时循环停止吗?

def order(menu):
    FISH_CHIPS_PRICES = menu
    menu_items = []

    for item in FISH_CHIPS_PRICES:
        menu_items.append(item.lower())

    orders = []
    customer = True
    while customer:
        orders.append({})

        for item in FISH_CHIPS_PRICES:
           orders[-1][item] = 0

        while True:
            while True:
                order_item = input("What do you want to buy?")
                if order_item.lower() not in menu_items:
                    print("Item:", order_item, "not available")
                    isQuit = input("Do you want to quit: yes / no:")
                    if isQuit == "yes":
                        customer = False
                else:
                    break

1 个答案:

答案 0 :(得分:1)

您会看到此行为,因为两个无限的while循环包含在isQuit变量中。 break离开循环只会停止立即封闭的循环。

一种可能的解决方案是在returnisQuit时立即"yes",这将退出整个order()函数。

# ...
isQuit = input("Do you want to quit: yes / no:")
if isQuit == "yes":
    return

另一个可能的解决方案是删除外部无限while循环,因为它似乎不提供任何函数。