好吧所以我需要编写代码,以便基本上充当收银员 . 要做到这一点,收银员必须询问用户他们想要什么,他们想要多少,然后在他们完成订单之前询问他们是否需要其他东西 .
我已经为我将使用的任何变量设置了值 .
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 回答
问题是您选择循环表达式 . 简而言之,
or
不会关注while循环,但是你在if
语句中犯了同样的错误 .考虑以下代码:
这与:
...与...大致相同
换句话说,该陈述将成立,因为
'Done'
被认为是“truthy” .解决方案:像这样写:
...甚至更好,以捕捉所有情况:
那是因为你没有分配“订单”,你只是在比较它 . =和==之间的差异
加
因为 order != 'done' or order != 'Done' 将始终导致 True
加
将导致 Burger 如果订单是'burger'其他明智的将导致'Burger'
所以,不知怎的,你的第一个 if 总是如此