鱼C论坛

 找回密码
 立即注册
查看: 3027|回复: 4

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

[复制链接]
发表于 2022-10-16 01:19:49 | 显示全部楼层 |阅读模式

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

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

x
是关于 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

这是为什么呢?
最佳答案
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.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-16 06:52:53 From FishC Mobile | 显示全部楼层
else后面只能是值,不能是表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 08:39:20 | 显示全部楼层
三元表达式是一个表达式,所以它返回的是一个值

因此,在 x if condition1 else y 中,x 和 y需要是一个值,不是语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-16 08:57:31 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-16 09:00 编辑
       v = exp1  if ... 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)
       就是说表达式根据逻辑判断结果给同一个变量不同的值,无法改变另一个变量。


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

使用道具 举报

发表于 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)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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