Warm tip: This article is reproduced from serverfault.com, please click

Incorrect while loop

发布于 2020-11-28 15:05:53

I want the loop to stop when one of the numbers reaches 4 million. But it's working incorrectly. Could someone help me?

number1=0
number2=1
while number1<(4000000):
    number1+=number2
    number2+=number1
    print(number1,number2)

Here are the numbers I get:

1 2
3 5
8 13
21 34
55 89
144 233
377 610
987 1597
2584 4181
6765 10946
17711 28657
46368 75025
121393 196418
317811 514229
832040 1346269
2178309 3524578
5702887 9227465
Questioner
illymarev
Viewed
0
David Montgomery 2020-11-28 23:12:57

It is working correctly - when number1 reaches 4 million it stops. If the issue is that numbers above 4 million are printed you could break an infinite loop instead:

while True:
    number1+=number2
    number2+=number1
    if number1 > 4000000:
        break
    print(number1, number2)