lzymm1 发表于 2020-2-6 18:17:23

【Python新手求助】关于三元操作符的转换

1. Python 的作者在很长一段时间不肯加入三元操作符就是怕跟 C 语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。

请将以下代码修改为三元操作符实现:
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)
按着翻译成了这样:
if x<y and x<z:
        small = x
elif y<z:
        samll = y
else:
        small = z
这个时候我才会转换。然后我看了一下原代码,为什么if z<small 变成了 x<z 然后合并在了 if x<y and x<z 里(我知道small=x),但是一看到下面的else: small = z突然就乱了,原代码上写着的是if z<small small = z,那不应该是把这条跟下面的small = z合并吗?

zltzlt 发表于 2020-2-6 18:20:13

没看懂你的问题?

哪里有 if z<small?

lzymm1 发表于 2020-2-6 19:02:48

zltzlt 发表于 2020-2-6 18:20
没看懂你的问题?

哪里有 if z

在原代码的第一个if里面包着{:10_266:}

zltzlt 发表于 2020-2-6 19:03:17

lzymm1 发表于 2020-2-6 19:02
在原代码的第一个if里面包着

不好意思,没看到上面的

lzymm1 发表于 2020-2-7 15:11:10

zltzlt 发表于 2020-2-6 19:03
不好意思,没看到上面的

大佬,能解决吗{:10_266:}

zltzlt 发表于 2020-2-7 16:25:45

前面定义过 small(small = x)。如果 z 小于 small 则 small 等于 z,否则等于 x。

tk3184020 发表于 2020-2-8 08:32:06

过来学习学习 嘿嘿{:5_110:}

Judie 发表于 2020-2-9 06:37:06

x, y, z = 6, 5, 4

#最小的那个一定小于另外两个

if x < y:
    small = x #如果x比y小,最小可能是x
    if z < small: #同 if z < x
      small = z #如果z小于x,最小一定是z
elif y < z:
    small = y #如果x不比y小,y又比z小,最小一定是y
else:
    small = z #如果x不比y小,y又不比z小,最小一定是z


if x<y and x<z:
    small = x #如果x小于y和z,最小一定是x
elif y<z:
    samll = y #如果x不小于y和z(x一定不是最小),但y小于z,y一定是最小
else:
    small = z #如果x不小于y和z(x一定不是最小),y也不小于z(y也不是最小),最小一定是z
页: [1]
查看完整版本: 【Python新手求助】关于三元操作符的转换