-1

此代码将您最喜欢的食物存储在一个列表中,但输入变为布尔类型字符。为什么会发生这种情况,我该如何解决?

foods=list()
while food := input("what food do you like?: ") != "quit":
    foods.append(food)
print(foods)
4

2 回答 2

2

发生这种情况是因为操作优先级。表达方式

food := input("what food do you like?: ") != "quit"

读作

food := (input("what food do you like?: ") != "quit")

这就是food布尔值。您可以通过添加括号来修复它:

while (food := input("what food do you like?: ")) != "quit":
   foods.append(food)
于 2021-10-31T14:24:57.567 回答
0

它正在比较输入和“退出”。当您输入 kl 和 kgh 时,它们不等于“退出”,而 food 是True并且它被附加到 food 中。当您输入“quit”作为输入时,quit 等于 quit,而 food isFalse和表达式变为while False循环中断。相反,请执行以下代码:

foods=[]
while True:
    food=input("what food do you like: ")
    if food=="quit":
        break
    else:
        foods.append(food)
print(foods)
于 2021-10-31T14:29:45.903 回答