关于输入三角形三个坐标计算三角形面积,我的代码如下:
import math
def get_info(): #输入三个坐标
m = [[0, 0], [0, 0], [0, 0]]
for i in range(3):
m[i][0]=float(input('请输入第{0}个三角形的横坐标:'.format(i+1)))
m[i][1]=float(input('请输入第{0}个三角形的纵坐标:'.format(i+1)))
return m
def get_length(m): #计算三边长
a=[]
b = math.sqrt((m[1][0] - m[2][0]) ** 2 + (m[1][1] - m[2][1]) ** 2)
c = math.sqrt((m[2][0] - m[0][0]) ** 2 + (m[2][1] - m[0][1]) ** 2)
d = math.sqrt((m[0][0] - m[1][0]) ** 2 + (m[0][1] - m[1][1]) ** 2)
a.insert(b,c,d)
return a
def get_space(a): #判断并计算面积
p=(a[0]+a[1]+a[2])/2
s=math.sqrt(p*(p-a[0])*(p-a[1])*(p-a[2]))
if s > 0:
print('三角形面积是:',s)
else:
print('输入无效!')
m=get_info()
a=get_length(m)
get_space(a)
两个问题:
(1)21行:我判断是否成立三角形的条件是:海伦公式是否等于0,因为如果三个点共线,则两边之和等于第三边,海伦公式等于0,。
虽然本题不存在两边之和小于第三边情况(因为给出的是三个点,一定可以连成三角形或一条直线),但如果是给是三个边长,判断是否可以组成三角形,可以使用海伦公式,若两边之和小于第三边,则海伦公式算出来为复数(根号下数字小于0)。但是若这样,20行就会报错,因此我想知道如何做,才能把20行算出结果为复数的情况包含在23行else内,判定为输入无效,而不是报错。
(2)代码运行不过去,麻烦老师帮忙看看哪里有错,谢谢~