1

私はpythonの公式チュートリアルに従っています。チュートリアルに示されているように
、フィボナッチ関数を作成しました。 引数が与えられた関数からの出力は(驚いたことに)、 の 無限トレイルでした。fib()
1
0

>>> def fib(n):
...     a, b = 0, 1
...     while a < n:
...         print a, 
...         a, b = b, a + b
... 
>>> fib(0)
>>> fib(1)
0 0 0 0 0 0 0 0 0 0 (...repeats infinitely, had to break out with ^+Z ...)

問題を再現しようとしましたが、成功しませんでした。

>>> def fib(n):
...     a, b = 0, 1
...     while a < n:
...         print a,
...         a, b = b, a + b
... 
>>> fib(0)
>>> fib(1)
0
>>> fib(1)
0

これは既知の問題ですか、それともインタープリターの一時的な不具合ですか?

4

1 に答える 1

4

これを再現できます:

>>> def fib(n):
...     a,b = 0,1
...     while a < n:
...         print a,
...         a,b = b, a+b
... 
>>> fib(5)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

どうやってそれをしたのですか?上のコードは本当に

def fib(n):
[tab]a,b = 0,1
[tab]while a < b:
[tab][4 spaces]print a,
[eight spaces]a,b = b, a+b

タブとスペースを混在させると、インタプリタがインデントを解析する方法について混乱します。その結果、行はループのように見えますが、a,b = b, a+b実際にはループ内にはありません。while

于 2013-01-28T13:15:31.703 に答える