python编写程序,按用户输入的三角形3条边判断能否构成直角三角形,若能构成则计算三角形的面积和周长,否则引发异常。

 代码段:

import math
a,b,c = eval(input())
if a+b>c and a+c>b and b+c>a:
    s = 1/2*(a+b+c)
    mji = math.sqrt(s*(s-a)*(s-b)*(s-c))
    zouc = a+b+c
    print('面积:%.2f,周长:%.2f' %(mji, zouc))
else:
    raise (Exception)

效果:

 

 

 

对三边的判断,可以有更简洁的方法:

t = a,b,c = eval(input())
p = sum(t)/2
if p>max(t):
    S = (p*(p-a)*(p-b)*(p-c))**0.5
    if sum(map(lambda x:x*x,t))==max(t)**2*2:
        print('此三角形是直角三角形')
    print('面积S:%.2f,周长C:%.2f' %(S, p*2))
else:
    raise Exception('输入的三边无法构成三角形!')

import math
a,b,c = eval(input())
assert a+b>c and a+c>b and b+c>a
assert a**2+b**2 == c**2 or a**2+c**2 == b**2 or b**2+c**2 == a**2
mji = math.sqrt(s*(s-a)*(s-b)*(s-c))
zouc = a+b+c
print('面积:%.2f,周长:%.2f' %(mji, zouc))