Python 3.x 用python 3在直角三角形中求角
在系统中的5个案例中,我只解决了1个案例的问题。我确信我的方法是正确的,但由于某些原因,它不适用于其他情况。 下面是我的代码Python 3.x 用python 3在直角三角形中求角,python-3.x,math,Python 3.x,Math,在系统中的5个案例中,我只解决了1个案例的问题。我确信我的方法是正确的,但由于某些原因,它不适用于其他情况。 下面是我的代码 import math AB = int(input("Enter a value for side AB: ")) while(AB>100 and AB<=0): AB = input("Enter a value for side AB: ") BC = int(input("Enter a value for side BC: "))
import math
AB = int(input("Enter a value for side AB: "))
while(AB>100 and AB<=0):
AB = input("Enter a value for side AB: ")
BC = int(input("Enter a value for side BC: "))
while(BC>100 and BC<=0):
BC = input("Enter a value for side BC: ")
hyp = math.sqrt(math.pow(AB,2) + math.pow(BC,2)) #find side AC
mhyp = hyp/2 #find side MC
sind = (mhyp/BC) #sin(deg)=opp/hypotenuse
degree = round(((math.asin(sind))/((math.pi)*2))*360,0) #find the angle
print("%d" %(degree) + "°")
对于AC和BC为10的情况,它确实产生45度角。但当AC=1和BC=100时,会产生错误,因为反正弦不能接受超过1.7弧度的值。AC=20和BC=10、AC=100和BC=1也是如此。。
这个问题可以解决吗?我知道这不完全是你的问题,但它仍然可以解释你的问题 想想正弦波或曲线是什么样子。作为天使 变化,角度的正弦会上下移动,但它永远不会移动 高于1或低于-1。换句话说,没有正弦角 这大于1 当你使用正弦键时,你会输入一个角度,然后从中取出正弦 那个角度。例如,当你做sin30时,你会发现 正弦为30度,计算器显示为0.5。当你使用 输入正弦值和 计算器告诉你角度。所以,0.5的反正弦是30 因为30度角的正弦值为0.5 因此,当你要求计算器做1.732的反正弦时,你 我们问它什么角度的正弦为1.732。但正如我们上面所说, 没有正弦大于1的角度。逆正弦或 1.732的ARCIN不存在。这就是计算器所说的 听起来你的问题是要在a中找到角度B a=40,b=80,a=60度的三角形。尝试构建 这样一个三角形,看看会发生什么。我们做角度A和标记80 单位在它的一条光线上为b面,然后围绕b面旋转一个圆弧 结果点C的半径或长度为40 和另一条光线相交将得到点B。会发生什么
B
/
/
/
/
/
c / ooooooooo
/ oooo oooo
/ ooo \ ooo
/ oo \
/ o \ a=40
/ o \
/ o \
/ o \
/60 o \
A----------------o----------------C-----------
b=80
因此,计算器是正确的:不存在这样的三角形!显然我们
如果“a”侧不够长,无法在顶部测量角度B
完成三角形并形成该角度。您在几何上犯了错误-BM是中间值,而不是AC的高度。对于等高线直角三角形,它们意外重合,但在一般情况下不同 所以角BMC在一般情况下是不正确的,你们不能得到MC和BC的比值 但在斜边中点有直角三角形的众所周知的性质,所以M点是圆心。 这个事实立即告诉我们BM=MC两个半径,BMC三角形是等腰的,θ=ACB角 解决方案非常简单,请注意,atan使用:
这主要是你的角度以弧度表示,然后你把它转换成度。休息,然后一切都会到位: 此外,我们可以看到BM等于MC基,即中间值到斜边的属性,使得三角形MBC为等腰线,因此角度MBC=角度MCB
import math
if __name__ == '__main__':
AB = input()
assert 0<int(AB)<=100
BC = input()
assert 0<int(BC)<=100
assert (int(AB) >= 0 and float(AB).is_integer() == True) and (int(BC) >= 0 and float(BC).is_integer() == True)
AC = math.sqrt((int(AB)**2) + (int(BC)**2))
tan_acb_rad = int(AB)/int(BC)
acb_rad = math.atan(tan_acb_rad) #the angle comes in radians
acb_deg = math.degrees(acb_rad) #you have to convert it into degrees
ang_mbc = acb_deg
print(str(int(round(ang_mbc,0)))+u"\N{DEGREE SIGN}") #adding the degree symbol at end
这不是你的直接问题,但看看whileAB>100和ABAlso,如果角度ABC是90度,那么AC不可能是1,BC不可能是100。除脱气情况外,AB为零不是三角形,AC肯定大于BC。我想,你说的是AC,你的意思是AB。你有没有试着画出其他三角形来确认它们实际上是相连的边。。。
import math
if __name__ == '__main__':
AB = input()
assert 0<int(AB)<=100
BC = input()
assert 0<int(BC)<=100
assert (int(AB) >= 0 and float(AB).is_integer() == True) and (int(BC) >= 0 and float(BC).is_integer() == True)
AC = math.sqrt((int(AB)**2) + (int(BC)**2))
tan_acb_rad = int(AB)/int(BC)
acb_rad = math.atan(tan_acb_rad) #the angle comes in radians
acb_deg = math.degrees(acb_rad) #you have to convert it into degrees
ang_mbc = acb_deg
print(str(int(round(ang_mbc,0)))+u"\N{DEGREE SIGN}") #adding the degree symbol at end