Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 用户输入中断while循环?_Python 3.x - Fatal编程技术网

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时,无论输入是什么,都会继续请求我的订单

  • 我可以为您点菜吗?(输入食物项目或“完成”以完成订单)汉堡
  • 你想要多少?三,
  • 我可以为您点菜吗?(输入食物项目或“完成”以完成订单)完成
  • 你想要多少?0
  • 我可以为您点菜吗?(输入食物项目或“完成”以完成订单)巧克力
  • 你想要多少?0
  • 我可以为您点菜吗?(输入食物项目或“完成”以完成订单)薯条
  • 你想要多少?2. 我可以为您点菜吗?(输入食物项目或“完成”以完成订单)

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

    那是因为你没有分配“顺序”,你只是在比较。=和之间的差异==

    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"):