学习python 高淇400 练习 遇到的问题:使用input()得到的x,y为字符串,未将其转换导致后续计算步骤出错。 忘记海伦公式以及判断三点共线的条件,通过上网搜索获得。 写完发现未考虑x相等或y相等的情况因此代码还有待改善。 # 输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提示。 import math # 输入三个坐标 x1,y1=[float(a) for a in input("请输入点A的坐标(x,y): ").split(',')] x2,y2=[float(b) for b in input("请输入点B的坐标(x,y): ").split(',')] x3,y3=[float(c) for c in input("请输入点C的坐标(x,y): ").split(',')] # 判断三个点能否构成一个三角形 if (y3-y2)/(x3-x2)==(y2-y1)/(x2-x1): print('坐标错误,不能构成三角形') # 利用海伦公式计算面积,算出各值 else: L1 = math.sqrt(math.fabs(pow(y2 - y1, 2)) + math.fabs(pow(x2 - x1, 2))) L2 = math.sqrt(math.fabs(pow(y3 - y1, 2)) + math.fabs(pow(x3 - x1, 2))) L3 = math.sqrt(math.fabs(pow(y3 - y2, 2)) + math.fabs(pow(x3 - x2, 2))) p = (L1 + L2 + L3) / 2 S = math.sqrt(p * (p - L1) * (p - L2) * (p - L3)) print('三角形的面积为:{:.2f}'.format(S))
eg. 请输入点A的坐标(x,y): 2,4
请输入点B的坐标(x,y): 3,5
请输入点C的坐标(x,y): 4,6
坐标错误,不能构成三角形