好吧所以我需要编写代码,以便基本上充当收银员。要做到这一点,收银员必须询问用户他们想要什么,他们想要多少,然后问他们是否需要别的东西,直到他们完成他们的订单。
我已经为我将要使用的任何变量设置了值。
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
当我输入假设是' burger'然后无论输入是否会继续询问我的订单。
- 我可以接受您的订单吗? (输入食品或“完成订单”)汉堡
- 你想要几个? 3
- 我可以接受您的订单吗? (输入食品或“完成订单”完成订单)
- 你想要几个? 0
- 我可以接受您的订单吗? (输入食品或“完成订单”)巧克力
- 你想要几个? 0
- 我可以接受您的订单吗? (输入食品或“完成订单”完成订单)薯条
- 你想要几个? 2 我可以接受您的订单吗? (输入食品或“完成订单”)
醇>
我不知道我的代码有什么问题。有人能指出我正确的方向吗?
答案 0 :(得分:0)
那是因为你没有分配" order",你只是在比较它。 =和==
之间的差异order = input("Can I take your Order? (Enter food item or 'done' to complete order) ")
加
while (order.lower() != 'done'):
因为订单!='已完成'或者订购!='完成' 将始终导致 True
加号
order != 'burger' or 'Burger'
将导致汉堡如果订单是'汉堡'另一方面,它将导致' Burger'
>>> order = raw_input()
burger
>>> order == 'burger' or 'Burger'
True
>>> order = raw_input()
done
>>> order == 'burger' or 'Burger'
'Burger'
所以,不知何故,你的第一个 if 总是如此
答案 1 :(得分: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"):