使用python的for循环中的音高计数

时间:2013-10-03 19:47:15

标签: python

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

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

来自math import 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

我的代码没有什么???

1 个答案:

答案 0 :(得分:2)

你的数学错了

n=440

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