我有一项任务需要所有代码都在一行上。我不会给出条件;这一切都归结为一个相当简单的表达式:
answer = a + b + c + (a ** 2 + b ** 2 + c ** 2) ** 0.5
输入数据(a、b、c)被输入到控制台,每个数字占一个新行。正如您可能已经猜到的,一行解决这个问题并不容易,因为......变量被使用两次。
这里我得出以下结论:我应该使用lambda函数并将输入数字设置为参数中的默认值:
print(lambda a=int(input()), b=int(input()), c=int(input()): a + b + c + (a ** 2 + b ** 2 + c ** 2) ** 0.5)
结论很清楚,这不是所需要的 - 将返回对函数对象的引用,因为结果,她没有被叫到。这是如何调用 lambda 函数而不将其存储在单独的变量中的问题。
PS 你不必写“;”、“eval”、“marshal”、“exec”,根据任务条款,它们是被禁止的。 PPS 输入数据:3、4、12 -> 32.0
您可以将该
lambda
函数括在括号中并()
就地调用它:输入:
结论:
我知道问题不在于解决问题,而在于使用 lambda 函数,但我将允许自己使用端到端分配的替代解决方案。