萌新在学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
这是为什么呢? else后面只能是值,不能是表达式 三元表达式是一个表达式,所以它返回的是一个值
因此,在 x if condition1 else y 中,x 和 y需要是一个值,不是语句。 本帖最后由 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)
就是说表达式根据逻辑判断结果给同一个变量加不同的值,无法改变另一个变量。
三元运算符中不能进行直接进行 = 、+= 赋值操作,如果你这样使用了就属于不正确的语法规则,自然报语法错误
但 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]