参考方法:
通过用户输入三角形三边长度,并计算三角形的面积
已知三角形三边a,b,c,则
(海伦公式)(p=(a+b+c)/2)
S=sqrt[p(p-a)(p-b)(p-c)]
=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]
import math
import unicodedata
定义函数判断输入数据是否为数字
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
unicodedata.digit(s) # digit 把一个合法的数字字符串转换为数字值
return True
except (TypeError, ValueError):
pass
return False
def calculate(a, b, c):
if is_number(a) and is_number(b) and is_number(c):
a = float(a)
b = float(b)
c = float(c)
if a > 0 and b > 0 and c >0:
while a+b<=c or a+c<=b or b+c<=a:
print("输入的边长无法构成三角形!!!")
a = input('输入三角形边长a: ')
b = input('输入三角形边长b: ')
c = input('输入三角形边长c: ')
calculate(a,b,c)
p = (a+b+c)/2
area = math.sqrt(p*(p - a)(p - b)(p - c))
print("三角形面积为:%0.2f" %area)
else:
print("三角形的边长必须大于0,请输入大于0的数!!!")
else:
print('请输入数字类型!!!')
a = input('输入三角形边长a: ')
b = input('输入三角形边长b: ')
c = input('输入三角形边长c: ')
calculate(a,b,c)
方法可能不是最简单的,有疑问问我
import math
pos0 = [int(i) for i in input()]
pos1 = [int(i) for i in input()]
pos2 = [int(i) for i in input()]
d0 = math.sqrt((pos0[0]-pos1[0])**2+(pos0[1]-pos1[1])**2)
d1 = math.sqrt((pos1[0]-pos2[0])**2+(pos1[1]-pos2[1])**2)
d2 = math.sqrt((pos0[0]-pos2[0])**2+(pos0[1]-pos2[1])**2)
print(d0)
print(d1)
print(d2)
if d0+d1 > d2:
print("该三点坐标构成三角形!")
p = (d0+d1+d2)/2
s = math.sqrt(p*(p-d0)*(p-d1)*(p-d2))
print("该三角形面积%s"%s)
else:
print("无法构成三角形!")
修改后
import math
pos0 = [int(input()),int(input())]
pos1 = [int(input()),int(input())]
pos2 = [int(input()),int(input())]
d0 = math.sqrt((pos0[0]-pos1[0])**2+(pos0[1]-pos1[1])**2)
d1 = math.sqrt((pos1[0]-pos2[0])**2+(pos1[1]-pos2[1])**2)
d2 = math.sqrt((pos0[0]-pos2[0])**2+(pos0[1]-pos2[1])**2)
print(d0)
print(d1)
print(d2)
if d0+d1 > d2:
print("该三点坐标构成三角形!")
p = (d0+d1+d2)/2
s = math.sqrt(p*(p-d0)*(p-d1)*(p-d2))
print("该三角形面积%s"%s)
else:
print("无法构成三角形!")