泼墨染笛香 发表于 2024-2-28 09:56:51

条件表达式 最右侧写完整语句为什么出错

本帖最后由 泼墨染笛香 于 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”

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

jackz007 发表于 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 的所有运算符中,= 的优先等级是最低的,所以,表达式的运算顺序是先计算三目运算表达式的值,最后才是赋值。

jackz007 发表于 2024-2-28 15:51:58

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

       毫无疑问,= 的优先级最低,比 1 还要低。

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

泼墨染笛香 发表于 2024-2-28 14:51:10

jackz007 发表于 2024-2-28 10:27
首先,你的理解完全正确
         其次,这个表达式可以这样来理解



您好,我在问题里附上了小甲鱼讲的优先级顺序,赋值应该在哪个位置

泼墨染笛香 发表于 2024-2-28 16:06:08

jackz007 发表于 2024-2-28 15:51
毫无疑问,= 的优先级最低,比 1 还要低。

谢谢解答 给您置顶
页: [1]
查看完整版本: 条件表达式 最右侧写完整语句为什么出错