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

如果我选择缺失角度函数并输入例如 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) = ")


MMTTMM
浏览 79回答 1
1回答

偶然的你

我永远无法重现产生错误 0.1546 的错误。这是您的程序,经过一些调整,将帮助您扩展程序的功能:import mathdef 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)时将发生的错误。输入被转换为浮点数,因此用户可以输入距离或角度的小数,并且返回被格式化为呈现到小数点后两位。这应该对您有所帮助。您可能需要为非数字的数字字段的用户输入设计错误处理,并运行一些测试以查看missingSide用户输入可能出现的问题并捕获这些问题。您可能想要尝试的一种方法是给它一个 180 度的角度。某些值可能不会产生实际错误,但可能会产生意想不到的结果。祝你好运!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python