请问用 python怎么做

img

参考方法:

通过用户输入三角形三边长度,并计算三角形的面积
已知三角形三边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("无法构成三角形!")