Проблема цикла "for" при создании ряда Фибоначчи - PullRequest
0 голосов
/ 03 сентября 2018

Я делал программу для серии Фибоначчи.

x=0
y=1
print (x)
print (y)
z = None
for z in range(1,100,x+y):
    z=x+y
    print(z)
    x = y
    y = z

Проблема была в том, что на выходе показывалось число больше 100. Вот пример вывода

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

Почему значения больше 100?

Примечание: эта программа была написана на Python 3.6

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Проблема в том, что вы запускаете цикл 100 раз, а не проверяете, меньше ли результат, чем 100. Код, вероятно, легче прочитать, если вы используете цикл while вместо цикла for:

x=0
y=1
while True:
    fib = x + y
    if fib < 100:
        print (fib)
        x = y
        y = fib
    else:
        break
0 голосов
/ 03 сентября 2018

Если вы хотите, чтобы он останавливался на заданном числе, вам нужен оператор if, если не вы, он будет выполнять последовательность Фибоначчи 100 раз

x=0
for number in range(1,100):
    x = number + x
    if x <= 100:
        print(x)
    else:
        break

Также вам не нужно использовать шаг, так как он автоматически увеличивается на единицу для каждого цикла

И ответ на ваш вопрос Q why are they more than hundred: поскольку вы запускаете последовательность Фибоначчи 100 раз, вы не останавливаете ее, когда она достигает 100.

...