You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python频率计算代码出现行首SyntaxError无效语法报错如何解决

报错原因
  • 括号未闭合:第4行定义r的代码存在多余的未闭合左括号,原代码写为r = (math.pow(2, (1/12)),最外层的左括号没有对应的右括号,Python解析器无法正常结束当前表达式,扫描到第6行时判定语法不合法,因此抛出SyntaxError。这也是报错指向第6行行首的核心原因。
  • 运算符误用:Python中^是按位异或运算符,不能用于幂运算,幂运算需要使用**符号。
  • 输入类型错误:input()函数返回值为字符串类型,无法直接参与数值乘法运算,需要先转换为浮点类型。
  • 逻辑偏差:如果目标是生成十二平均律下连续5个半音的频率,原代码的指数叠加逻辑有问题,连续相乘r的N次方会导致指数累加,最终频率不符合预期。
修复后代码
import math

key_freq1 = float(input())
r = math.pow(2, 1/12)

# 写法1:直接基于基音计算对应半音频率
key_freq2 = key_freq1 * (r ** 1)
key_freq3 = key_freq1 * (r ** 2)
key_freq4 = key_freq1 * (r ** 3)
key_freq5 = key_freq1 * (r ** 4)

# 写法2:逐次乘以r,结果和写法1完全一致,代码更简洁
# key_freq2 = key_freq1 * r
# key_freq3 = key_freq2 * r
# key_freq4 = key_freq3 * r
# key_freq5 = key_freq4 * r

print('{:.2f} {:.2f} {:.2f} {:.2f} {:.2f}'.format(key_freq1, key_freq2, key_freq3, key_freq4, key_freq5))

内容的提问来源于stack exchange,提问作者JewishEggs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:18:02