python - 使用 python 在 for 循环中计算音乐音高

标签 python

编写一个程序,查找并打印 A440 和 A880 之间所有音符的频率。使用二的十二次方根。这是我当前的代码。

2**(1.0/12) is the twelfth root.

从数学导入 sqrt

i=0
a=440
a2=(a*(2**(1.0/12.0)))
for i in range(12):
    print (a2)
    a2=a2+i
    i=i+1

这段代码给了我输出。

466.1637615180899
466.1637615180899
467.1637615180899
469.1637615180899
472.1637615180899
476.1637615180899
481.1637615180899
487.1637615180899
494.1637615180899
502.1637615180899
511.1637615180899
521.1637615180899

但是我需要的输出是

440.0
466.163761518
493.883301256
523.251130601
554.365261954
587.329535835
622.253967444
659.255113826
698.456462866
739.988845423
783.990871963
830.60939516
880.0

我的代码没有什么???

最佳答案

你的数学错误

n=440

while (n<=880):
    print n
    n=n*(2**(1.0/12.0))

关于python - 使用 python 在 for 循环中计算音乐音高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167963/

相关文章:

python - 实现类错误并返回 0 文本

python - 实现一个名为 Average 的类作为 List 的子类

python - 防止 csvkit 修改日期/时间?

python - 在 python 3 : "compile failed with error code 1" 上通过 pip 安装 scipy 库时出错

python - 如何在循环内自动调用下一个迭代器

python - 如何安装libjpeg?

python - 从图中删除节点

javascript - Django/AngularJS : How do I access my Python Context Items from my AngularJS Script

python - 将字符串转换为字节会在控制台中打印出奇怪的十六进制代码

python - 遍历字典以排序的顺序返回键