鱼C论坛

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

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

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

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

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

x
1. 请问是否条件表达式只能执行单一指令?
  1.         if num%2==0:
  2.                 num1=int(num/2)
  3.                 print(num,'/2 = ',num1,sep='')
  4.                 num=num1
  5.         else:
  6.                 num1=int(num*3+1)
  7.                 print(num,'*3+1 = ',num1,sep='')
  8.                 num=num1
复制代码

这种代码是否可以转为条件表达式?
2.课堂视频中,条件表达式我看到多有简写,比如:
  1. small=a if a<b else b
复制代码

事实上如果不简写还会报错
  1. small = a if a<b else small=b
  2. 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)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 14:49:26 From FishC Mobile | 显示全部楼层
有时候不是100条语句捏成一个语句就好,这样做的代价必然是可读性降低
小甲鱼最新课程 -> https://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 这样的语句是没有返回值的
因为它就是单纯的语句,于是报错了
  1. a = 1
  2. b = 2


  3. def A():
  4.     small = a


  5. def B():
  6.     small = b


  7. A() if a < b else B()
复制代码

这样是可以的,(函数里可以执行多条语句)
总之条件表达式就是一个值,大概就这样吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

small=a的简写没有报错
全写报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该看成
small = (a if a<b else b)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

懂了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 05:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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