Ini adalah kode yang diberikan dalam dokumentasi python resmi untuk mencetak seri Fibonacci.

Saya tidak mengerti mengapa kode ini berjalan hingga tak terbatas karena kondisi while loop baik-baik saja.

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)
0
Naseer Mohammad 15 Maret 2017, 17:23

2 jawaban

Jawaban Terbaik

Anda meneruskan string ke fib, sedangkan a adalah bilangan bulat. Dalam Python 2, any integer kurang dari any string.

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

Panggil fungsi Anda dengan bilangan bulat sebagai gantinya:

fib(int(number))

Jika Anda menggunakan Python 3, upaya untuk membandingkan string dan angka hanya akan memunculkan TypeError:

>>> "3" < 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
7
chepner 15 Maret 2017, 14:25

Raw_input memberikan string sehingga Anda membandingkan string dengan int.

1
J. Goedhart 15 Maret 2017, 14:24