Python代码变量声明Syntax error求助:Sublime Text3运行报错
排查并解决你的Python代码语法错误
我帮你找出了代码里的两处语法错误,这就是你在Sublime Text3中运行时触发Syntax error的原因:
1. 函数调用缺少闭合括号
在计算ac的代码行中,math.acos()函数的调用没有添加对应的右括号,直接导致语法结构不完整:
# 错误写法 ac = math.acos(a**2 + b**2 - c**2/(2*a*b)*180/pi
另外这里还隐藏了运算顺序逻辑问题:余弦定理的正确公式是cos(C) = (a² + b² - c²)/(2ab),你需要把分子部分用括号包裹,同时弧度转角度的*180/pi应该放在acos()函数外面(因为acos返回的是弧度值)。修正后这行代码应该是:
ac = math.acos((a**2 + b**2 - c**2)/(2*a*b)) * 180/pi
2. range()函数调用缺少括号
Python中函数调用必须使用括号,你写的for n in range 3:不符合语法规范,需要改成:
# 错误写法 for n in range 3: # 正确写法 for n in range(3):
修正后的完整代码(含额外逻辑修复)
import turtle import math pi = math.pi def triangle(a,b,c): # law of cosines, where ac = angle c ac = math.acos((a**2 + b**2 - c**2)/(2*a*b)) * 180/pi # law of sines(补充:sin函数需要弧度参数,所以先把ac转成弧度) ab = math.asin(math.sin(ac*pi/180)/c*b) * 180/pi # Angle sum theorem aa = 180 - (ab + ac) lengths = [a,b,c] angles = [ac,aa,ab] for n in range(3): turtle.forward(lengths[n]) turtle.left(180-angles[n]) triangle(3,4,5)
补充说明:计算ab的时候,math.sin()默认接收弧度参数,而ac已经是角度值,所以需要先转成弧度(ac*pi/180),否则计算出来的角度会完全错误。
内容的提问来源于stack exchange,提问作者Disappointment Panda
相关产品推荐
相关产品推荐

