2017-03-15 17 views
0

これは、フィボナッチシリーズを印刷するための公式のPythonドキュメントに記載されているコードです。whileループでPythonプログラムを無限に実行する理由

whileループ条件が問題ないので、このコードが無限に実行される理由を理解できません。

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

number = raw_input("What's the number you want to get Fibonacci series up to?") 
fib(number) 

答えて

7

文字列をfibに渡しますが、aは整数です。 Python 2では、のいずれかのの整数がより小さく、任意の文字列です。

>>> 1000000000000000000000000000000000 < "" 
True 
>>> 3 < "2" 
True 

代わりに整数を使用して関数を呼び出します。

fib(int(number)) 

をあなたは、Python 3を使用していた場合は、文字列と数値を比較しようとする試みは、単にTypeErrorを引き上げる:

>>> "3" < 2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: '<' not supported between instances of 'str' and 'int' 
+0

私のコードでprintステートメントがどのように機能するか説明してください –

1

Raw_inputは文字列を与え、文字列とintを比較します。

関連する問題