2013-10-03 48 views
1

編寫一個程序,用於查找並打印A440和A880之間所有音符的頻率。使用兩個的第十二個根。這是我目前的代碼。使用python的for循環中的音樂音高計數

2**(1.0/12) is the twelfth root. 
從數學進口開方

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 

什麼是我的代碼沒有???

回答

2

你的數學是錯誤的

n=440 

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

謝謝你的回答,但是我還需要它來打印440 – Jake

+0

@Jake然後只需移動'打印N'達前'N = N *。 ..' – twalberg

+0

當你移動'print n'後,將'n <880'改爲'n <= 880',這樣你也可以打印880。 – SethMMorton