鱼C论坛

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

[已解决]关于015讲中条件表达式的疑问

[复制链接]
发表于 2021-5-29 14:40:50 | 显示全部楼层 |阅读模式

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

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

x
1. 请问是否条件表达式只能执行单一指令?
        if num%2==0:
                num1=int(num/2)
                print(num,'/2 = ',num1,sep='')
                num=num1
        else:
                num1=int(num*3+1)
                print(num,'*3+1 = ',num1,sep='')
                num=num1
这种代码是否可以转为条件表达式?
2.课堂视频中,条件表达式我看到多有简写,比如:
small=a if a<b else b
事实上如果不简写还会报错
small = a if a<b else small=b
SyntaxError: cannot assign to conditional expression
但是另一些指令,比如print就不会出现简写。
请问条件表达式的简写规则都有哪些?
最佳答案
2021-5-29 19:10:32
fc5igm 发表于 2021-5-29 16:35
small=a的简写没有报错
全写报错了

应该看成
small = (a if a<b else b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 14:49:26 From FishC Mobile | 显示全部楼层
有时候不是100条语句捏成一个语句就好,这样做的代价必然是可读性降低
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 15:22:09 | 显示全部楼层
个人理解
print可以简写主要是因为print是一个函数,它是有返回值的
而 print(a) if a<b else print(b) 的意思是如果a小于b则执行print(a)并且将print函数的返回值变成表达是的值
其实就是说这个条件表达式本质上就是一个值,它一定要变成一个值,而 small = a 这样的语句是没有返回值的
因为它就是单纯的语句,于是报错了
a = 1
b = 2


def A():
    small = a


def B():
    small = b


A() if a < b else B()
这样是可以的,(函数里可以执行多条语句)
总之条件表达式就是一个值,大概就这样吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 16:35:27 | 显示全部楼层
smog 发表于 2021-5-29 15:22
个人理解
print可以简写主要是因为print是一个函数,它是有返回值的
而 print(a) if a

small=a的简写没有报错
全写报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 19:10:32 | 显示全部楼层    本楼为最佳答案   
fc5igm 发表于 2021-5-29 16:35
small=a的简写没有报错
全写报错了

应该看成
small = (a if a<b else b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 22:15:36 | 显示全部楼层
smog 发表于 2021-5-29 19:10
应该看成
small = (a if a

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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