4

计算三角形面积_zhang_shiwei的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/u_15641375/5790925
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

三角形是由同一平面内的三条线段首尾顺次相接所组成的封闭图形。

但不是任意长度的三边都可以构成三角形,构成三角形的三边必须满足条件:任意两边之和大于第三边假设三角形的三边的长度分别是a,b,c,构成三角形的条件就是:a+b>c 且 a+c>b 且b+c>a

1.背景知识

当三边的长度可以构成三角形的时候,可以用海伦公式计算三角形的面积S:

计算三角形面积_ide

其中,p为三角形的半周长(周长的一半):

计算三角形面积_三角形面积_02

海伦,古希腊数学家、力学家、机械学家,生平不详。约公元62年活跃于亚历山大,在那里教过数学、物理学等课程。他多才多艺,善于博采众长,在论证中大胆使用某些经验性的近似公式,注重数学的实际应用。海伦有许多学术著作,都用希腊文撰写,但大部分已失传。主要著作是《量度论》一书,该书共3卷,分别论述平面图形的面积,立体图形的体积和将图形分成比例的问题.其中卷I第8题给出著名的已知三边长求三角形面积的海伦公式

今天用Python计算任意三角形面积:请用户输入三角形的三边长度,计算三角形面积。

2.解题思路

我们主要可以分为四步,所以又称为四步法。

第一步: 用input函数请用户输入三条边的长度

第二步: 验证三角形是否成立

第三步: 用海伦公式计算面积

第四步: 输出结果

a = float(input("输入三角形的第一条边长:"))
b = float(input("输入三角形的第二条边长:"))
c = float(input("输入三角形的第三条边长:"))

if a + b > c and a + c > b and b + c > a:
p = (a + b + c) / 2
s = pow(p * (p - a) * (p - b) * (p - c), 0.5)

print(f"三角形的面积是{s: 0.2f}")

else:
print("不能构成三角形,请重新输入!")

第1-3行: 分别定义变量a, b, c,input函数使用户输入三条边长,再用float函数将输入的字符串转换为浮点数

第5行: 用if...else语句判断用户输入的三条边是否可以构成三角形。若可以构成三角形,继续执行后续的代码;若不能构成三角形,则转到第11行,用print函数打印“不能构成三角形,请重新输入!”

第6行: 将三角形的半周长赋值给变量p

第7行: 根据海伦公式,用pow函数计算三角形的面积,并赋值给变量s

pow是power的缩写,power就是我们讲的“幂”pow(x,y) 返回 x 的 y 次方的值,如pow(2,3)返回的是2的3次方,即2**3;亦可称为2的3次幂

第9行: 用print函数打印三角形的面积,0.2f是小数点的位数,本题保留两位小数

这就是用程序来实现构建三角形,计算三角形的面积的一种方法。

还有一种方法是可以通过代码进行判断,看是否可以构成三角形。

具体代码如下:

#计算三角形面积
while(True):
triangle = input('输入三角形三边(如10,6,8):')
sides = [int(side) for side in triangle.split(',')]
a,b,c = sides

#判断输入的三角形是否合法
if a + b > c and a + c > b and b + c > a :
s = a * b * (1-((a**2 + b**2 - c**2)/(2*a*b))**2) ** 0.5/2
print('三角形({0[0]},{0[1]},{0[2]})的面积是:{1}'.format(sides,s))
break
else:
print('三角形不合法')

这个代码可以更加直观的看出用户输入的三个数字,然后进行判断,是否可以组成三角形,能够组成就可以计算出三角形的面积,不能组成就打印三角形不合法。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK