首页 文章

用户输入断开while循环?

提问于
浏览
-1

好吧所以我需要编写代码,以便基本上充当收银员 . 要做到这一点,收银员必须询问用户他们想要什么,他们想要多少,然后在他们完成订单之前询问他们是否需要其他东西 .

我已经为我将使用的任何变量设置了值 .

while (order != 'done' or 'Done'): #goal: repeat "can I take your order"
    order == input("Can I take your Order? (Enter food item or 'done' to complete order)  ")
    if (order == 'burger' or 'Burger'): 
        a = float(input("How many would you like?  "))
        break

当我执行类似上面代码的操作时,我的程序将在输入'burger'后中断 .

while (order != 'done' or 'Done'): #goal: repeat "can I take your order"
    order == input("Can I take your Order? (Enter food item or 'done' to complete order)  ")
    if (order == 'burger' or 'Burger'): 
        a = float(input("How many would you like?  "))

    elif (order == 'cheeseburger' or 'Cheeseburger'):
        b = float(input("How many would you like?  "))
        break
    elif (order == 'fries' or 'Fries'):
        c = float(input("How many would you like?  "))
        break
    elif (order== 'done' or 'Done'):
        break

当我从输入应该是'汉堡'时删除休息时,无论输入是什么都会继续询问我的订单 .

我可以接受您的订单吗? (输入食物或“完成”以完成订单)汉堡你想要几个? 3我可以接受您的订单吗? (输入食品或“完成”以完成订单)完成您想要多少? 0我可以接受您的订单吗? (输入食品或“完成”以完成订单)巧克力你想要多少? 0我可以接受您的订单吗? (输入食品或“完成”以完成订单)薯条你想要多少? 2我可以接受您的订单吗? (输入食品或“完成”以完成订单)

我不知道我的代码有什么问题 . 有人能指出我正确的方向吗?

2 回答

  • 0

    问题是您选择循环表达式 . 简而言之, or 不会关注while循环,但是你在 if 语句中犯了同样的错误 .

    考虑以下代码:

    while (order != 'done' or 'Done')
    

    这与:

    while ((order != 'done') or ('Done')):
    

    ...与...大致相同

    while ((order != 'done') or ('Done' != "")):
    

    换句话说,该陈述将成立,因为 'Done' 被认为是“truthy” .

    解决方案:像这样写:

    while (order != 'done' and order != "Done"):
    

    ...甚至更好,以捕捉所有情况:

    while (order.lower() != "done"):
    
  • 0

    那是因为你没有分配“订单”,你只是在比较它 . =和==之间的差异

    order = input("Can I take your Order? (Enter food item or 'done' to complete order)  ")
    

    while (order.lower() != 'done'):
    

    因为 order != 'done' or order != 'Done' 将始终导致 True

    order != 'burger' or 'Burger'
    

    将导致 Burger 如果订单是'burger'其他明智的将导致'Burger'

    >>> order = raw_input()
    burger
    >>> order == 'burger' or 'Burger'
    True
    >>> order = raw_input()
    done
    >>> order == 'burger' or 'Burger'
    'Burger'
    

    所以,不知怎的,你的第一个 if 总是如此

相关问题