2016-05-10 36 views
-1

私の参考文献の下の画像を参照してください。 最初の列は、ちょうど私達に行番号を与える 第二列はちょうどそれが動作フィボナッチ数式が効かない

前の値で割ったbの最後の行の商である必要があり、新しい行 3列を取得するには、前の2を追加して、フィボナッチ数列であります 1.6、それは

0 
1 
2 
1.66666666667 
1.6 
1.625 etc etc. 

でなければなりません 第三鞍部に続いから1.0000000である。しかし、それは

0 
1 
2 
1.0000 
1.0000 
1.0000 
1.0000 etc. 
012をやっている:端数があるべき第四の反復までアップ

私のコードで何が問題になっていますか?それは動作するはずですが、そうではありません。ここでのpython 3のコードは次のとおりです。

a, b = 0, 1 
num = 1 
i = 1 
f= 0 

#loop 
for i in range(1, 101): 
    #use if to avoid divide by zero initially because a is 0 
    if a >= 1: 
     f = b/a 

    #print 3 column of 3 different numbers 
    print ('{0:4d} {1:20d} {2:1.14f}'.format(i, b, f)) 
    i = i + 1 
    a,b = b, a+b 

output

+0

これをPython 3で実行していると100%確信していますか?なぜなら、Python 2では何が問題なのか知っているからです。 'print 1'(まったく同じように、かっこはありません)を追加し、構文エラーを投げるかどうか確認してください。 –

+0

私は3つをインストールしましたが、デフォルトでは2つを実行していました。私はそれを忘れてしまった。だから私は@ LexScarisbrickの答えを受け入れて以来、それは働いた。 –

答えて

1

あなたはPythonの2を使用している場合は、行を変更:

f = float(b)/float(a) 

f = b/a 

あなたは「あなたはよろしいですPython 3を使用していますか? python -Vは何を報告しますか?

+1

'float(b)/ a'や' b * 1.0/a'でも動作します。 –

+0

これは私のために働いていたので、Pythonコマンドを使用したので2.7.6を実行していたように見えます。私はそれを使用するためにpython3を実行しなければならないことを忘れていました。ですから、私はあなたにPython 2の解決法の答えを与えています。ちょうどPython3のための解決策は何でしょうか? python -vはたくさんのものを返しますので、私は解決策があるので、それをスキップします。 –

+0

'float()'の変更をせずにPython 3で動作するはずです。 Pythonのバージョンを取得するには、大文字のveeを使用してください: 'python -V' –

関連する問題