如何使用python通过余弦规则在SSS三角形中找到一个角度?

时间:2017-06-23 22:49:27

标签: python cosine

我在python中创建了一个庞大的计算器,但我遇到了一个问题。我试图使用余弦定律来找到SSS三角形中的角度,我无法看到我出错的地方。

library(data.table)   
table <- data.table(a = c(1,NA,2,1), b= c(1,1,3,2))#creates the data table structure
table[,c:=ifelse(is.na(a),0,a+b)]#creates the column c based on the condition

> table
    a b c
1:  1 1 2
2: NA 1 0
3:  2 3 5
4:  1 2 3

每当运行它时都会给出错误

    elif qchoice5 == 4:
    while True:
        try:
            print("======================================================================")
            a = float(input("what is side a?"))
            break
        except ValueError:
            print("======================================================================")
            print("please enter a valid option")
    while True:
        try:
            print("======================================================================")
            b = float(input("what is side b?"))
            break
        except ValueError:
            print("======================================================================")
            print("Please enter a valid option")
    while True:
        try:
            print("======================================================================")
            c = float(input("what is side c?"))
            break
        except ValueError:
            print("======================================================================")
            print("Please enter a valid option")
    print(((b**2)+(c**2)-(a**2))/(2*a*b))
    ans = math.acos((((b**2)+(c**2)-(a**2))/(2*a*b)))
    print(ans)

任何人都可以给我任何关于如何使其工作的指示吗?

1 个答案:

答案 0 :(得分:0)

如果没有有效的MCVE,我只能从质量保证的角度来做这件事。我看到了一些问题:

  1. 您永远不会验证您的输入。非三角形(例如2,3,100的边)将使acos的值超出范围。
  2. 您的计算不正确:b ^ 2 + c ^ 2 - a ^ 2需要除以2bc,而不是2ab
  3. 仅供参考,如果你在Python 2中使用整数,你会遇到一个问题:除法是整数除法,几乎所有东西都会返回acos(0),这就是数学。 Pi / 2相

    尝试这个来纠正最后两个问题(#2和整数除法):

    ans = math.acos((((b**2)+(c**2)-(a**2))/(2.0*b*c)))