为何我的Python代码出现SyntaxError: bad token T_OP令牌错误?
问题分析与修复方案
1. 令牌错误的直接原因
你代码第7行里的减号−是全角Unicode减号,并非Python支持的ASCII半角减号-。Python解析器无法识别该符号,因此抛出SyntaxError: bad token T_OP。只需将这个符号替换为普通半角减号即可解决该语法错误。
2. 影响预期输出的其他问题
即使修复符号,代码仍存在两处问题,导致无法得到预期的5.0:
- 函数
law_of_cosines缺少return语句,计算结果无法被返回,最终print(res1)会输出None math.cos()要求传入弧度值,但你误用math.degrees(theta)将角度转换为角度值(逻辑完全颠倒),正确做法是用math.radians(theta)将角度转为弧度
修复后的完整代码
import math def law_of_cosines(a,b,theta): # 替换正确减号、用math.radians转换角度为弧度、添加return返回结果 return math.sqrt((a**2) + (b**2) - (2 * a * b * math.cos(math.radians(theta)))) res1 = law_of_cosines(3.0, 4.0, 90) print(res1) # 输出: 5.0
另外,原代码中的int()转换属于多余操作——a、b均为浮点数,平方和计算后为浮点数,保留浮点类型才能得到精确的5.0,因此直接去掉int()即可。
内容的提问来源于stack exchange,提问作者Neil Nair
相关产品推荐
相关产品推荐

