鱼C论坛

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

[已解决]条件表达式 最右侧写完整语句为什么出错

[复制链接]
发表于 2024-2-28 09:56:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 泼墨染笛香 于 2024-2-28 14:50 编辑

https://fishc.com.cn/forum.php?mod=viewthread&tid=157202
这里讲条件表达式语法为:
条件成立时执行的语句 if 条件 else 条件不成立时执行的语句
把条件放正中间,然后左右紧挨着关键字 if 和 else,最左侧是条件成立时执行的语句,最右侧是条件不成立时执行的语句。

那么为什么这样写报错:
a = 3
b = 5
small=a if a<b else small=b
print(small)

而应该这么写:
a = 3
b = 5
small=a if a<b else b
print(small)

视频部分

视频部分

---——————————————————————————————————————————————————————————————---
另外我查到三元表达式的说法,是否只有这一部分“a if a<b else b”叫三元表达式
即条件表达式应为“值1 if 条件 else 值2”,而不是“表达式1 if 条件 else 表达式2”

---——————————————————————————————————————————————————————————————---
附上小甲鱼讲的优先级顺序,赋值应该在哪个位置

优先级

优先级
最佳答案
2024-2-28 10:27:33
本帖最后由 jackz007 于 2024-2-28 10:35 编辑

         首先,你的理解完全正确
         其次,这个表达式可以这样来理解
small = a if a < b else b
        首先,是赋值
small = <表达式>
       <表达式> 的值是
a if a < b else b
        我们知道,在 Python 的所有运算符中,= 的优先等级是最低的,所以,表达式的运算顺序是先计算三目运算表达式的值,最后才是赋值。

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2024-2-28 10:27:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-2-28 10:35 编辑

         首先,你的理解完全正确
         其次,这个表达式可以这样来理解
small = a if a < b else b
        首先,是赋值
small = <表达式>
       <表达式> 的值是
a if a < b else b
        我们知道,在 Python 的所有运算符中,= 的优先等级是最低的,所以,表达式的运算顺序是先计算三目运算表达式的值,最后才是赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-28 15:51:58 | 显示全部楼层
泼墨染笛香 发表于 2024-2-28 14:51
您好,我在问题里附上了小甲鱼讲的优先级顺序,赋值应该在哪个位置

       毫无疑问,= 的优先级最低,比 1 还要低。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-28 09:57:09 | 显示全部楼层
这个问题可能是因为在条件表达式的最右侧,没有写完整的语句导致的。按照条件表达式的规则,最右侧应该是条件不成立时执行的语句。

让我们看看你的例子:
a = 3
b = 5
small = a if a

这里的 `if a` 应该是一个完整的条件表达式,但是你没有提供一个条件不成立时执行的语句。条件表达式需要一个完整的形式,即一个条件成立时执行的语句加上一个条件不成立时执行的语句。

修复这个问题很简单,只需在 `if` 后面添加一个条件不成立时执行的语句即可。比如你可以将 `small` 赋值为 `b`,这样就满足了条件表达式的要求:
a = 3
b = 5
small = a if a < b else b

现在,当 `a` 小于 `b` 时,`small` 的值将为 `a`,否则将为 `b`。这样就完成了一个完整的条件表达式。

希望能帮到你!如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-2-28 14:51:10 | 显示全部楼层
jackz007 发表于 2024-2-28 10:27
首先,你的理解完全正确
         其次,这个表达式可以这样来理解

您好,我在问题里附上了小甲鱼讲的优先级顺序,赋值应该在哪个位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-28 16:06:08 | 显示全部楼层
jackz007 发表于 2024-2-28 15:51
毫无疑问,= 的优先级最低,比 1 还要低。

谢谢解答 给您置顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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