三元操作符 分解步骤
请将以下代码修改为三元操作符实现:
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)
可以给我个分解步骤吗 万分感谢看了好久都看不懂ORZ 首先,这个问题是要找出x,y,z三个数字中最小的那一个。这里有3个数字,要找出最小的那一个,要进行一个俩俩比较的过程。
请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4#x=6, y=5, z=4
if x < y:
small = x #如果x<y, 那么x就是x和y两个数字中最小的那个,所以把x放进small这个变量中
if z < small:
small = z #如果z<small,也就是z<上面的x,那么z就是最小的那个数字,所以把z代替x放进small这个变量中
elif y < z:
small = y #或者如果以上条件不满足,也就是x不是<y,但是y<z,那么此时最小的数字就是y
else:
small = z #如果以上都不符合,那么就是z最小了
答案是:small = x if (x < y and x < z) else (y if y < z else z)
答案里面为,先判断第一个if括号里面的内容,如果x<y,并且x<z,那么x就是最小的。如果第一个if不满足,那么判断第二个,此时如果y<z,那么y就是最小的。如果以上两种都不符合,那么显然z就是最小的。 本帖最后由 jackz007 于 2019-11-12 12:22 编辑
small = x if (x < y and x < z) else (y if y < z else z)
完全解析如下:
if x < y and x < z:# 如果 x 最小
small = x
else: # 否则,x 不最小,最小的就是 y 或 z
if y < z: # 如果 y 小
small = y # 那就是 y
else: # 否则
small = z # 无疑是 z 咱们首先,把三元操作符的语句块确定下来:
('条件判断为真时的处理') if ('条件的表达式') else ('条件判断为假时的处理')
那么,分析原来的长篇代码:
首先判断 x 是否小于 y ,
如果小于,那么先认为 x 是最小的数,
再判断 z 是不是比它还小,
如果确实比他小,那么就可以确定最小的是 z
否则,判断 y 是否小于 z
如果小于,那么可以肯定 y 是最小的数,因为 x 不可能比 y 大,而 y 又是剩下的相对小的那个
再不然,就只能是 z 最小了,因为别的不可能比它大
综上所述,在 x < y 并且 x < z 的时候,最小值为 x 。先打出最小值为 x 那部分:
(x) if (x < y and x < z) else ()
那么最小值不是 x 的时候呢?
无非两种情况,y 或者 z 是最小值,
按照字母表的顺序,接下来是 y ,那么这个时候,y 怎么能是最小值呢?
y < z 的时候。
于是得出:
(x) if (x < y and x < z) else ((y) if (y < z) else ())
最后剩下个 z 添到后边:
(x) if (x < y and x < z) else ((y) if (y < z) else (z))
把可以省去的括号,给它省去、删掉,就得了
x if (x < y and x < z) else (y if y < z else z)
如此,可以得到一个最小值,但仅仅是把数给找到了,并没有作答,相当于算个算数算半天,得到答案了,可是没写上,第二天交作业的时候,老师就问怎么没做作业啊?这时候多冤呐?
所以咱还得把该记的给写上,得赋值,于是就成了:
small = x if (x < y and x < z) else (y if y < z else z)
你要是一字一句,仔仔细细看完了,我相信你能看懂也有耐心,我也相信我写的明白。 c = 6 if a > b else 10
条件为真,返回前面,为假返回后面,有括号的优先,把括号里面的判出来 阴阳神万物主 发表于 2019-11-12 23:55
咱们首先,把三元操作符的语句块确定下来:
那么,分析原来的长篇代码:
谢谢你 我真的要慢慢看{:5_105:} jackz007 发表于 2019-11-12 12:14
完全解析如下:
很谢谢你还把循环还原了我就是看不懂循环的匹配谢谢我自己慢慢去看不行我再看多一次elif循环 我也是看不懂这个,感谢你先问了{:10_254:} 感谢感谢,看这个帖子看懂了!!!! 阴阳神万物主 发表于 2019-11-12 23:55
咱们首先,把三元操作符的语句块确定下来:
那么,分析原来的长篇代码:
谢谢大神!!! 困扰我好久 终于看懂了! 阴阳神万物主 发表于 2019-11-12 23:55
咱们首先,把三元操作符的语句块确定下来:
那么,分析原来的长篇代码:
感谢大佬的解答!
页:
[1]