小香蕉2009 发表于 2019-8-1 10:19:26

解释

x, y, z = 6, 5, 4
if x < y:
    small = x
    if z < small:
      small = z

small = x if (x < y and x < z)

Chuen_yu 发表于 2019-8-1 10:38:16

三元操作符,
small = x if (x < y and x < z)    【当x<y 且x<z成立时,把small 标识赋值给x】

小香蕉2009 发表于 2019-8-1 12:21:46

Chuen_yu 发表于 2019-8-1 10:38
三元操作符,
small = x if (x < y and x < z)    【当x

if z < small:
         small = z
应该是x>z呀

Chuen_yu 发表于 2019-8-1 13:16:14

小香蕉2009 发表于 2019-8-1 12:21
if z < small:
         small = z
应该是x>z呀

就你写的代码就是这个意思,你这个代码是哪里来的,
如果是小甲鱼Python课后练习,你这个代码没有写全,
【原题】
x, y, z = 6, 5, 4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z

改成三元操作符代码
small = x if (x < y and x < z) else (y if y < z else z)

小香蕉2009 发表于 2019-8-2 10:02:00

Chuen_yu 发表于 2019-8-1 13:16
就你写的代码就是这个意思,你这个代码是哪里来的,
如果是小甲鱼Python课后练习,你这个代码没有写全, ...

对,是这个,我想不通为什么x<z

Chuen_yu 发表于 2019-8-2 10:30:52

小香蕉2009 发表于 2019-8-2 10:02
对,是这个,我想不通为什么x

x, y, z = 6, 5, 4   【x=6,y=5,z=4】
if x < y:         【如果x<y时】
small = x         【small就是x】
if z < small:       【再进行比较z<small,因为刚才small赋值给x,所以这里是z<x 】
small = z         【把small赋值给z】
elif y < z:         【情况y<z时】
small = y         【把small赋值给y】
else:               【另外情况时】
small = z         【把small赋值给z】

small = x if (x < y and x < z) else (y if y < z else z)
三元操作符,意思其实就是上面一段代码,只是缩成一句话,
如果 (x < y and x < z)情况发生时,把small赋值给x,
情况 (x < y and x < z)不发生,但是 y < z 情况发生,把small赋值给y,

(x < y and x < z)不发生时,会产生三种情况,(x>y and x > z),(x < y and x >z),(x> y and x < z)
(x>y and x > z)      用 y < z进行判断:根据情况小的数是z和y,用 y < z进行判断用成立的话,small赋值给y
(x < y and x >z)   用 y < z进行判断:根据情况z<x<y,用 y < z进行判断,不成立,这个就是下面说的都不成立的情况
(x> y and x < z)   用 y < z进行判断:根据情况 y<x<z,用 y < z进行判断用成立的话,small赋值给y

当 (x < y and x < z)不发生,y < z 情况也不发生,,把small赋值给z,

其实没有什么x<z,这个只是三个数字进行两两比较,肯定会先出来两个数字而以。

小香蕉2009 发表于 2019-8-2 11:35:14

Chuen_yu 发表于 2019-8-2 10:30
x, y, z = 6, 5, 4   【x=6,y=5,z=4】
if x < y:         【如果x y and x < z)
(x>y and x > z) ...

和我理解的差不多,我脑子短路在if z < small:       【再进行比较z<small,因为刚才small赋值给x,所以这里是z<x 】
small = z         【把small赋值给z】和 x if (x < y and x < z)里 的x<z有什么关系

Chuen_yu 发表于 2019-8-2 11:37:54

小香蕉2009 发表于 2019-8-2 11:35
和我理解的差不多,我脑子短路在if z < small:       【再进行比较z

没有什么必然的一一对应关系,这是两种思路的写法

小香蕉2009 发表于 2019-8-2 11:52:54

Chuen_yu 发表于 2019-8-2 11:37
没有什么必然的一一对应关系,这是两种思路的写法

if z < small:       【再进行比较z<small,因为刚才small赋值给x,所以这里是z<x 】
small = z    也可以改为ifx<z      small=x

Chuen_yu 发表于 2019-8-2 11:59:01

小香蕉2009 发表于 2019-8-2 11:52
if z < small:       【再进行比较z

是的,只要三个数的比较思路逻辑没有冲突,哪一个数先比较是没有关系的

回忆浅离 发表于 2019-8-2 15:11:51

三元操作符
页: [1]
查看完整版本: 解释