fc5igm 发表于 2021-5-29 14:40:50

关于015讲中条件表达式的疑问

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就不会出现简写。
请问条件表达式的简写规则都有哪些?

wp231957 发表于 2021-5-29 14:49:26

有时候不是100条语句捏成一个语句就好,这样做的代价必然是可读性降低

smog 发表于 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()
这样是可以的,(函数里可以执行多条语句)
总之条件表达式就是一个值,大概就这样吧

fc5igm 发表于 2021-5-29 16:35:27

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

small=a的简写没有报错
全写报错了

smog 发表于 2021-5-29 19:10:32

fc5igm 发表于 2021-5-29 16:35
small=a的简写没有报错
全写报错了

应该看成
small = (a if a<b else b)

fc5igm 发表于 2021-5-29 22:15:36

smog 发表于 2021-5-29 19:10
应该看成
small = (a if a

懂了,谢谢
页: [1]
查看完整版本: 关于015讲中条件表达式的疑问