骑消防栓的女孩 发表于 2022-10-16 01:19:49

萌新在学python的循环分支的时候遇到的问题(很基础很基础)

是关于 x if condition1 else y语句的
程序在执行以下语句的时候会报错。。

x=3
y=4
result = 1
x += 1 if result == 1 else y += 1
SyntaxError: invalid syntax

但执行以下条件分支语句的时候就正常了:

x=3
y=4
result=1
if result == 1:
    x += 1
else:
    y += 1

   
print(x)
4

这是为什么呢?

wp231957 发表于 2022-10-16 06:52:53

else后面只能是值,不能是表达式

tommyyu 发表于 2022-10-16 08:39:20

三元表达式是一个表达式,所以它返回的是一个值

因此,在 x if condition1 else y 中,x 和 y需要是一个值,不是语句。

jackz007 发表于 2022-10-16 08:57:31

本帖最后由 jackz007 于 2022-10-16 09:00 编辑

       v = exp1if ... else exp2
       意思是:
       if ...:
          v = exp1
       else:
          v = exp2
       例如:
    d = 0
    for i in range(100):
      d += (i + 3) // 2 if i % 2 else i
    print(d)
       就是说表达式根据逻辑判断结果给同一个变量加不同的值,无法改变另一个变量。


      

Twilight6 发表于 2022-10-16 09:45:31


三元运算符中不能进行直接进行 = 、+= 赋值操作,如果你这样使用了就属于不正确的语法规则,自然报语法错误

但 Python 3.8 提供了一个运算符可以实现这种效果,即使用海象运算符 := 进行赋值操作

参考代码:

x = 3
y = 4
result = 1
(x := x + 1) if result == 1 else (y := y + 1)
print("x:", x, "y:", y)

页: [1]
查看完整版本: 萌新在学python的循环分支的时候遇到的问题(很基础很基础)