此代码将您最喜欢的食物存储在一个列表中,但输入变为布尔类型字符。为什么会发生这种情况,我该如何解决?
foods=list()
while food := input("what food do you like?: ") != "quit":
foods.append(food)
print(foods)
此代码将您最喜欢的食物存储在一个列表中,但输入变为布尔类型字符。为什么会发生这种情况,我该如何解决?
foods=list()
while food := input("what food do you like?: ") != "quit":
foods.append(food)
print(foods)
发生这种情况是因为操作优先级。表达方式
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)
它正在比较输入和“退出”。当您输入 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)