关于python:lambda与嵌套if else不工作

Lambda with nested if else is not working

我是Python的新手,目前正在学习lambda表达式。我正在解决一个辅导程序

Define a function max_of_three() that takes three numbers as arguments
and returns the largest of them.

我通过了这篇老文章,但没有成功:

1
2
3
>>> max_of_three = lambda x, y, z : x if x > y else (y if y>z  else z)
>>> max_of_three(91,2,322)
91

为什么不返回Z?是X。


目前您使用的是if x > y,它只比较xy,但您需要同时比较xz

1
2
3
max_of_three = lambda x, y, z: x if x > y and x > z else (y if y > z else z)
print max_of_three(91, 2, 322)
>>> 322

或者,简化一下:

1
2
3
4
max_of_three=lambda x,y,z:max((x,y,z))

max_of_three(1,2,3)
3

我知道这是骗人的,但是使用语言原语通常比较容易。


1
2
3
>>> max_of_three = lambda x, y, z : x if x>y and x>z else (y if y>z  else z)
>>> max_of_three(91,2,322)
322

您可以按如下方式修改您的函数:

1
max_of_three = lambda x, y, z : x if x > y and x > z else (y if y>z  else z)

你的问题是你没有检查,x是否也比z大。在你的例子中,xy大,因此它只返回x,不再与z比较。