【问题标题】:Problem with conditional inside while loopwhile循环内的条件问题
【发布时间】:2020-09-17 11:40:44
【问题描述】:

我正在做“Python Crash Course”中的练习 7-4,这是关于编写一个 while 循环来提示客户输入披萨配料,直到他们输入“quit”。当我运行以下代码时,它每三次打印一次,并在输入“退出”两次后中断。有人可以指出我做错了什么。谢谢。

prompt = "Enter your topping: "

while True: 
  topping = input(prompt)
  if input(prompt) == "quit":
    break
  else:
    print(f"{input(prompt)} is added")

这是一个运行的例子:

>>> Enter your topping: pepperoni
>>> Enter your topping: pepperoni
>>> Enter your topping: cheese
cheese is added
>>> Enter your topping: quit
>>> Enter your topping: quit

【问题讨论】:

  • 你可能必须使用这个 - if topping == "quit":

标签: python while-loop conditional-statements


【解决方案1】:

您可能必须使用这个 - if topping == "quit":

在您的代码中,您使用的是if input(prompt) == "quit":,它要求输入两次,这就是您出错的地方。

另外,我不知道你在最后一行在做什么,但最后一行应该是这样的 - print("topping is added") OR print(topping+"topping is added") 如果你想显示顶部哪个用户也输入了。

一旦您使用input(prompt) 接受输入,就无需一次又一次地调用相同的表达式,因为它会再次接受输入(这不是我们想要的)。请改用topping,它已经存储了用户给出的输入。

希望它能清除你哪里出错了。

【讨论】:

  • 如果您想继续使用 f-string,打印行将是 print(f'{topping} is added)
  • @Nick 也可以。我只是添加了我认为对大多数 Python 初学者来说更容易理解的内容。
  • 哦,现在我知道我做错了什么。我没有使用变量,而是继续要求输入 2 次。这只是我使用 python 的第一周。谢谢朋友
【解决方案2】:

您要求输入两次。第一次,您将值存储在 topping 中,然后您再也不会对其进行任何操作。

然后,在if input(prompt) 中的“if”之后再次请求输入,然后根据返回的内容执行操作并针对"quit" 进行测试。

您应该对topping 变量做一些事情,而不是再次询问。既然你在学习,我就不告诉你该怎么做。


更重要的是,函数调用会有所作为。 topping = input(prompt) 不像数学表达式中的相等,因此您可以用 input(prompt) 代替您所指的所有地方topping。顶部以对象的形式表示一些常数值。 prompt() 是解释器要执行的一组指令,并将这些指令的结果放在代码中。那个“=”不是一个相等的断言。这是将一个值分配给一个名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2014-11-08
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多