用if-else语句求三角形的面积

2024-05-20 14:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该写一个程序,提示用户一个三角形的三条边的长度,确定这三条长度可以组成一个三角形,如果是这样的话,使用Heron公式计算三角形的4位数面积精确。这个是我到目前为止,我不知道在哪里或如何把数学

import math
def main():
    print()
    print("Triangle Area Program")
    print()
    a, b, c = eval(input("Enter three lengths separated by commas: "))
    print()
    s = (a+b+c) / 2.0
    area = sqrt(s*(s-a)*(s-b)*(s-c))
    if a > b:
        a, b = b, a
    if a > c:
        a, c = c, a
    if b > c:
        b, c = c, b
    else:
        a + b > c
        print("A triangle cannot be formed.")

main()

Tags: 用户import程序ifmaindef数学math
2条回答

这是另一个可能的关于你妈妈问题的版本:

import math


def heron(a, b, c):
    return 0.25 * math.sqrt((a + (b + c)) * (c - (a - b)) * (c + (a - b)) * (a + (b - c)))

if __name__ == "__main__":
    print()
    print("Triangle Area Program")
    print()
    print()

    try:
        description = "Enter three lengths separated by commas: "
        sides = sorted(map(float, input(description).split(',')))

        if (sides[1] + sides[2]) < sides[0]:
            print("A triangle cannot be formed.")
        else:
            a, b, c = sides
            print("Area of triangle {0}-{1}-{2} is {3:.4f}".format(
                sides[0], sides[1], sides[2], heron(a, b, c)))
    except Exception as e:
        print("Check your input!!!")
        print(" > Error: {0}".format(e))

关于此版本的一些注意事项:

  • 它在解析浮点输入值的同时进行排序,这样就可以直接检查是否可以形成三角形
  • 它没有使用naiveheron公式,而是使用另一个公式numerically stable

我决定给你另一个版本,因为在评论中你会发现一些关于你的好建议

下面是一个稍微修改过的程序版本,它检查输入是否在一个复合条件表达式中兼容,并替换使用eval

import math

def main():
    print("\nTriangle Area Program\n")
    a, b, c = map(float, input("Enter three lengths separated by commas: ").split(','))

    if a + b > c and a + c > b and b + c > a:
        s = (a + b + c) / 2.0
        area = math.sqrt(s*(s-a)*(s-b)*(s-c))
        return round(area, 4) # round area to four decimal places
    else:
        raise ValueError("The inputs you entered cannot form a triangle")

if __name__ == '__main__':
    print(main())

关于在可以Why should exec() and eval() be avoided?时避免{}的更多信息

相关问题 更多 >