好奇
为什么是small = 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 本帖最后由 柿子饼同学 于 2021-3-25 22:18 编辑
(y if y < z else z)这是一个整体知道吗,不能乱拆,转换成if-else语句如下{:10_321:}x, y, z = 1, 2, 3
#第一个语句
if (x < y and x < z):
small = x
else:
if (y < z):
small = y
else:
small = z
#第二个语句,你写的
if (x < y and x < z):
small = x
else:
if (y < z):
small = y
else:
small = z
看到了吗,你的程序没有吧后面的else扩起来,所以它们是同级的(括号里的优先级高知道不),也就是说一个if里面有两个else,是语法错误{:10_277:}
可以改成if-elif-else,呐,就像这样{:10_321:}
if (x < y and x < z):
small = x
elif(y < z):
small = y
else:
small = z
所以这个三元操作符只是酷而已,真正可读性高的一目了然,建议三元操作符会了就好,复杂的还是用i-else吧{:10_248:} 如果不加括号会语法报错吧
后面的 y if y < z else z 要整体计算,用括号是强调优先级。 正经人谁用y if y < z else z这种写法都是用的min(y,z){:10_292:} 柿子饼同学 发表于 2021-3-25 22:03
(y if y < z else z)这是一个整体知道吗,不能乱拆,转换成if-else语句如下看到了吗,你的程序没 ...
啊这,为什么不支持small = x if (x < y and x < z) elif (y if y < z )else z呢
再一个最佳给错人了能改么 季黄古 发表于 2021-3-25 22:30
啊这,为什么不支持small = x if (x < y and x < z) elif (y if y < z )else z呢
再一个最佳给错人了能 ...
它就是不支持我有什么办法,可能违背了‘简单’的初衷吧
改不了了,没事没事{:10_266:}{:10_250:} 柿子饼同学 发表于 2021-3-25 22:39
它就是不支持我有什么办法,可能违背了‘简单’的初衷吧
改不了了,没事没事
新人还是要熟悉熟悉论坛的用法呢
页:
[1]