为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MMTTMM 2023-08-22 10:28:56
如果我选择缺失角度函数并输入例如 a = 10、b = 10、c = 10,则角度的预期输出为 60 度,但程序的输出为 0.1546...import math, sysdef 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 answerdef 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 answermissingSideOrAngle = 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) = ")
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我永远无法重现产生错误 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)时将发生的错误。输入被转换为浮点数,因此用户可以输入距离或角度的小数,并且返回被格式化为呈现到小数点后两位。


这应该对您有所帮助。您可能需要为非数字的数字字段的用户输入设计错误处理,并运行一些测试以查看missingSide用户输入可能出现的问题并捕获这些问题。您可能想要尝试的一种方法是给它一个 180 度的角度。某些值可能不会产生实际错误,但可能会产生意想不到的结果。


祝你好运!


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信