尝试在python中使用余弦规则公式,但没有给出预期的输出

2024-09-30 02:36:25 发布

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

如果我选择missing angle function(缺少角度功能),例如a=10、b=10、c=10,则角度的预期输出为60度,但程序的输出为0.1546

import math, sys

def missingAngle():
    sideA = int(input("size of side a = "))
    sideB = int(input("size of side b = "))
    sideC = int(input("size of side c = "))

    answer = math.acos((sideB**2 + sideC**2 - sideA**2) / (2 * sideB * sideC))

    return answer

def missingSide():
    angleA = int(input("size of angle A = "))
    sideB = int(input("size of side b = "))
    sideC = int(input("size of side c = "))

    answer = math.sqrt(sideB**2 + sideC**2 - 2 * sideB * sideC * math.cos(angleA))

    return answer

missingSideOrAngle = input("Are you trying to work out the missing angle or side?(Angle/Side) = ")

while True:
    if missingSideOrAngle.title() == "Angle":
        print("Your answer is = " + str(missingAngle()))
        sys.exit()

    elif missingSideOrAngle.title() == "Side":
        print("Your answer is = " + str(missingSide()))
        sys.exit()

    else:
        missingSideOrAngle = input("Please enter a valid string(Angle/Side) = ")

Tags: ofanswerinputsizesysmathsideint
1条回答
网友
1楼 · 发布于 2024-09-30 02:36:25

我永远无法重现产生错误0.1546的错误

以下是您的程序,其中有一些调整可以帮助您扩展程序的功能:

import math

def missingAngle():
    sideA = float(input("size of side a = "))
    sideB = float(input("size of side b = "))
    sideC = float(input("size of side c = "))
    try:
        answer = math.acos((sideB**2 + sideC**2 - sideA**2) / (2 * sideB * sideC))
        return f'Your answer is: {math.degrees(answer):.2f} degrees'
    except ValueError:
        return 'Values given cannot form a triangle'

def missingSide():
    angleA = math.radians(float(input("size of angle A (degrees) = ")))
    sideB = float(input("size of side b = "))
    sideC = float(input("size of side c = "))

    answer = math.sqrt(sideB**2 + sideC**2 - 2 * sideB * sideC * math.cos(angleA))
    return f'Your answer is: {answer:.2f} units'


while True:
    missingSideOrAngle = input("Are you trying to work out the missing angle or side?(Angle/Side) = ")
    if missingSideOrAngle.title() == "Angle":
        print(missingAngle())

    elif missingSideOrAngle.title() == "Side":
        print(missingSide())

    else:
        missingSideOrAngle = input("Please enter a valid string(Angle/Side) = ")

我把它做成了一个实际的循环,所以它会让用户无休止地运行场景,直到他们点击Ctrl-C或输入引起未处理错误的内容。我没有试图解释所有可能的错误

missingAngle用于返回度数。它还包括一个“try-except”块,用于捕捉当三条边不能形成真正的三角形(例如:12、45、85)时将发生的错误。输入被转换为浮点数,因此用户可以输入距离或角度的小数,并且返回的格式为渲染到小数点后2位

这会在路上帮助你。您可能希望为非数字的数字字段的用户输入设计错误处理,并在missingSide上运行一些测试,以查看用户输入可能出现的错误并捕获这些错误。一个你可能想要尝试的是给它一个180度的角度。某些值可能不会产生实际错误,但可能会产生意外结果

祝你好运

相关问题 更多 >

    热门问题