|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
动动手中第1题有点疑惑
请将以下代码修改为三元操作符实现:
- 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则small=x,再进行判断z<small时,small=z,可是给出的答案里的判断是,当x<y并且x<z时为x,并没有使small=z这个情况
不知道是不是我的思维出错了,请大佬讲解一下
本帖最后由 isdkz 于 2022-3-3 22:06 编辑
答案那种是将
if x < y:
small = x
if z < small:
small = z
化为 if x < y and ! (z < x) 即 if x < y and x < z
而按你的想法:(首先三元表达式得有三要素,条件表达式,结果表达式 1,结果表达式2)
所以得把原来的代码化成这样:
- x, y, z = 6, 5, 4
- if x < y:
- small = x
- if z < small:
- small = z
- else: # 得补上结果表达式 2
- small = x
- elif y < z:
- small = y
- else:
- small = z
复制代码
转化为三元表达式是:
- small = (z if z < x else x) if x < y else y if y < z else z
复制代码
所以你可以先化简原条件语句再转成三元表达式,也可以补全三元表达式中所需的两个结果表达式来转成三元表达式,
这两种方法都是没有问题的,不过很明显事先化简再转更不容易出错,
原条件表达式中有嵌套的话不容易让人理解还易出错
|
|