You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环条件中使用赋值表达式为何存储布尔值,如何修复?

Python代码问题原因与修复方案

问题原因

问题出在运算符优先级的差异:Python中不等比较运算符!=的优先级高于海象赋值运算符:=,原代码的while food := input("what food do you like?: ") != "quit":行实际执行顺序如下:

  • 先运行input("what food do you like?: ") != "quit",得到布尔类型的比较结果
  • 再将该布尔结果赋值给变量food
    因此只要用户输入的内容不是quit,存入foods列表的就是布尔值True,和预期存储用户输入的食物名称的逻辑不符。

修复方法

给海象运算部分加括号,手动调整运算顺序,确保先完成用户输入的读取和赋值,再做退出判断。
修复后代码如下:

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

加括号后逻辑变为:先读取用户输入赋值给food,再判断food是否不等于quit,判断为真时就将用户输入的内容存入列表,符合预期功能。

内容的提问来源于stack exchange,提问作者Dani Nago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:39:02