2024-05-23 18:41:24 发布
网友
我的代码是:
foods2 = list() while food2 := input("Which food do you like ? ") != "quit": foods2.append(food2) print(foods2)
我希望输出是来自输入的列表
为什么在输入'quit'之前有三个输入时输出[True, True, True]
[True, True, True]
您必须使用( )来分离walrus操作符和测试:
( )
foods2 = list() while (food2 := input("Which food do you like ? ")) != "quit": # ^ -^ - HERE foods2.append(food2) print(foods2)
看看Operator precedence,赋值运算符:=是它们中最低的。这意味着python首先对!=求值,并将其布尔结果赋给food2。可以使用括号更改计算顺序:
:=
!=
food2
foods2 = list() while (food2 := input("Which food do you like ? ")) != "quit": foods2.append(food2) print(foods2)
作为@tdelaneysaid,这是因为运算符优先级和缺少括号来覆盖它。仅供参考,这里有另一种使用generator function的方法
def ask_user(): while (ans := input("Which food do you like? ")) != "quit": yield ans foods = [inp for inp in ask_user()]
您必须使用
( )
来分离walrus操作符和测试:看看Operator precedence,赋值运算符
:=
是它们中最低的。这意味着python首先对!=
求值,并将其布尔结果赋给food2
。可以使用括号更改计算顺序:作为@tdelaneysaid,这是因为运算符优先级和缺少括号来覆盖它。仅供参考,这里有另一种使用generator function的方法
相关问题 更多 >
编程相关推荐