鱼C论坛

 找回密码
 立即注册
查看: 284|回复: 5

python零基础课程

[复制链接]
发表于 2024-8-5 17:00:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么条件表达式
small = a if a < b else small = b会报错
small = a if a < b else b就不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-5 17:00:36 | 显示全部楼层
哈哈,没错!这段代码就像在厨房里做饭时,把两个锅的内容搞混了。我们来简单分析一下。

在Python中,条件表达式(也叫三元运算符)的一般格式是:
<值1> if <条件> else <值2>

这种表达式会检查 `<条件>`,如果为真,就返回 `<值1>`,否则返回 `<值2>`。

你的第一段代码:
small = a if a < b else small = b
这里的问题在于,你试图在条件表达式的`else`部分直接赋值,这样做是不被允许的。因为在条件表达式中,`else`后面应该是“值”,而不是赋值操作。换句话说,`else`部分不能像一个命令一样去执行赋值操作。

就像你不能在点餐时说:“我要这个汉堡,如果没有,那就给我加薯条”。你必须明确告诉服务员你想要的是什么,而不是在选择之后再给他们指示。

而你的第二段代码:
small = a if a < b else b
这是正确的写法!它的意思是:如果`a`小于`b`,那么将`small`赋值为`a`,否则赋值为`b`。这样做完全符合条件表达式的语法规则,因此不会报错。

记住,条件表达式就是一个漂亮的简化工具,用得当可以让代码更简洁,但用错了就会让你感觉像是在和一道数学题对着干!希望这个解释和比喻能让你对条件表达式有了更清晰的理解!继续加油哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-5 18:09:06 | 显示全部楼层
https://www.bilibili.com/video/B ... d538cf7718e4d6d3195
重新回顾一下吧。

small=a if a<b else b

就等同于下面的代码
if a<b:
    small=a
else:
    b

条件不符合时你只给python一个b是啥意思?

还有就是不太建议这种写法,只能用来炫炫技
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-5 19:06:08 | 显示全部楼层
这就是语法,记住就行
变量 = 值1 if <条件> else 值2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-5 21:20:26 | 显示全部楼层
本帖最后由 jackz007 于 2024-8-5 21:23 编辑
small = a if a < b else b
        这个问题需要从运算符优先级的角度来考虑,在这个表达式中,= 的优先级最低,所以,会在计算出这个表达式的值
a if a < b else b
        之后,最后才进行赋值。而这个表达式可以被视为一个数值,当 a < b 的时候,其值为 a,否则,其值为 b
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-6 08:56:10 | 显示全部楼层

简单理解:语法规则,记住即可

条件表达式中最终结果是返回一个值,所以不能在条件表达式中进行赋值操作

例如前者:

small = a if a < b else small = b

你可能理解的代码意义是:条件成立则执行 small = a ,不成立则执行 else 之后的 small = b

实际上正确的即就是后者代码:

small = a if a < b else b

条件成立则返回 a,不成立则返回 b

至于你要将返回的值,如何使用那是你具体代码情况而定了,例如这里就是赋值给 small

所以最后概括:赋值运算符 "=" 号的左边必须是一个单独的变量,而不能是一个表达式。

small = a if a < b else small = b

所以错误的地方主要在后者的 small = b,python 会将前面一整段结构认为是需要赋值的内容而报错

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表