我编写了以下代码,以根据三角形的三个边 a,b 和 c 来查找三角形的面积:
s = lambda a, b, c : (a + b + c)/2
area_tri = lambda a, b, c : (s(a,b,c) * (s(a,b,c)-a) * (s(a,b,c)-b) * \
(s(a,b,c)-c)) ** 0.5
area_tri(1, 2, 3)
输出:7.3484692283495345
我有两个问题。首先,如何减少在 area_tri 的lambda函数中重复输入 s(a,b,c)?其次,与第一个问题相关联,如何将 area_tri 中的 lambda s 的调用次数减少?
答案 0 :(得分:1)
有一种方法:
area_tri = lambda a, b, c: (lambda x=s(a,b,c): (x * (x-a) * (x-b) * (x*c)) ** 0.5)()
没有lambda,但在一行中可能会短一些:
def area_tri(a, b, c): x = s(a,b,c); return (x * (x-a) * (x-b) * (x*c)) ** 0.5
但是,除非您打高尔夫球,否则应正确设置其格式:
def area_tri(a, b, c):
x = s(a,b,c)
return (x * (x-a) * (x-b) * (x*c)) ** 0.5