课后练习题第八课三元题目疑惑不解,看了答案也不懂,求解答
x, y, z = 6, 5, 4if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z
如题,1、首先第一个问题:xyz都给定义了数值,下面那些条件判断是干啥的,small不就直接等于4了吗?
分析: if x<y,这里是大前提
x = small , if z < samll ,small = z,
这里用了两个if,
第二个if是在第一个if条件限制下进行的,y最大,X次之,Z最小,不成立就进行下个判断
2、 elif没有缩进,这是另一种情况 ,即是x >= y 为前提,
elif y < z ,这时候 small = y,
问题二:这里若是x=y,那么系统不会判定 small = x = y?
三元操作符:三元操作符格式:i =(成立) if (条件) else (不成立)
当条件成立时,变量i=左边,当条件不成立时,变量i=右边。
填入以上逻辑,
3、 small = x if (x < y and x < z) else (y if y < z else z)
这里的else z,为什么可以直接写进去,它不是属于第三种情况吗,和 y if y < z之间为什么不需要 or 或者and 本帖最后由 cyrusking 于 2020-10-12 16:35 编辑
这个乱码不知道哪里来的,各位大佬忽略它 x, y, z = 6, 5, 4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z 本帖最后由 昨非 于 2020-10-12 16:44 编辑
答案里:small = x if (x < y and x < z) else (y if y < z else z)
后面小括号存在一个嵌套的三元运算,
其实不用考虑这么多的,这道题的本意是让small 等于三者的最小值,
小甲鱼老师举的例子里直接给出xyz了,所以下面的代码显得有些“多此一举”的样子
不用想这么多,分析下答案中的逻辑:
如果x小于y且小于z,small = x,没问题
当()里的东西不成立时(即:x大于y或x大于z,x直接被排除),下面就看嵌套的部分:
所以:如果y<z成立,small = y,否则等于z,完成 昨非 发表于 2020-10-12 16:43
答案里:
后面小括号存在一个嵌套的三元运算,
其实不用考虑这么多的,这道题的本意是让small 等于三者的 ...
大佬你的答案很简洁明了,我就差最后一点不明白了,就最后那:
当()里的东西不成立时(即:x大于y或x大于z,x直接被排除)
不成立时,如果出现(即:X等于Y,那如果这时候X=Y>Z, 第一个括号里的结果不是为Z了吗)
难道说这道题不存在相等的情况?前面那个条件时明示呢? cyrusking 发表于 2020-10-12 17:25
大佬你的答案很简洁明了,我就差最后一点不明白了,就最后那:
当()里的东西不成立时(即:x大于y或x ...
临界条件可以把大于号改成大于等于号避免
小甲鱼老师这里没有加是因为xyz给定了
正常情况时要用到大于等于号的 楼主人呢? 昨非 发表于 2020-10-12 18:41
楼主人呢?
彻底明白了,真心感谢!昨天忙其他事情了,抱歉!{:5_92:} cyrusking 发表于 2020-10-13 16:03
彻底明白了,真心感谢!昨天忙其他事情了,抱歉!
没事的
页:
[1]