Python 3.x 用户输入中断while循环?
好的,所以我需要编写代码,这样基本上可以充当出纳的角色。要做到这一点,出纳必须询问用户他们想要什么,他们想要多少,然后询问他们是否需要其他东西,直到他们完成订单 我已经为我将要使用的任何变量设置了值Python 3.x 用户输入中断while循环?,python-3.x,Python 3.x,好的,所以我需要编写代码,这样基本上可以充当出纳的角色。要做到这一点,出纳必须询问用户他们想要什么,他们想要多少,然后询问他们是否需要其他东西,直到他们完成订单 我已经为我将要使用的任何变量设置了值 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 comp
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
当我从输入应该是“汉堡”的时候删除break时,无论输入是什么,都会继续请求我的订单
我不知道我的代码出了什么问题。有人能给我指出正确的方向吗?那是因为你没有分配“顺序”,你只是在比较。=和之间的差异==
order = input("Can I take your Order? (Enter food item or 'done' to complete order) ")
加上
因为命令!='完成或命令!='“完成”将始终导致True
加上
将导致汉堡如果订单是“汉堡”,则从其他方面来看,它将导致“汉堡”
>>> order = raw_input()
burger
>>> order == 'burger' or 'Burger'
True
>>> order = raw_input()
done
>>> order == 'burger' or 'Burger'
'Burger'
因此,如果第一个始终为真,那么问题在于循环表达式的选择。简而言之,
或
的工作方式与您认为的不同。我将重点讨论while循环,但在if
语句中也会犯同样的错误
考虑以下代码:
while (order != 'done' or 'Done')
这与:
while ((order != 'done') or ('Done')):
。。。这与
while ((order != 'done') or ('Done' != "")):
换句话说,该语句总是正确的,因为'Done'
被认为是“”
解决方案:这样写:
while (order != 'done' and order != "Done"):
。。。或者更好的是,为了抓住所有案例:
while (order.lower() != "done"):
您缺少了一个
中断
…嘿,谢谢!我们班上没有复习过案例,但这项作业的输入需要上下两级。这对我来说很有意义。
while (order != 'done' and order != "Done"):
while (order.lower() != "done"):