为什么在循环条件中使用赋值表达式会存储一个 bool 值?
Why does using an assignment expression in a loop condition store a bool value?
这段代码将你最喜欢的食物存储在一个列表中,但输入变成了一个 bool 类型的字符。为什么会发生这种情况,我该如何解决?
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 时,它们不等于“退出”并且食物是 True
并且它被附加到食物。当您输入“quit”作为输入时,quit 等于 quit 并且 food 为 False
并且表达式变为 while False
因此循环中断。相反,执行此代码:
foods=[]
while True:
food=input("what food do you like: ")
if food=="quit":
break
else:
foods.append(food)
print(foods)
这段代码将你最喜欢的食物存储在一个列表中,但输入变成了一个 bool 类型的字符。为什么会发生这种情况,我该如何解决?
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 时,它们不等于“退出”并且食物是 True
并且它被附加到食物。当您输入“quit”作为输入时,quit 等于 quit 并且 food 为 False
并且表达式变为 while False
因此循环中断。相反,执行此代码:
foods=[]
while True:
food=input("what food do you like: ")
if food=="quit":
break
else:
foods.append(food)
print(foods)