Если оператор не выполняет первую команду печати, присваивание Фибоначчи - PullRequest
0 голосов
/ 28 октября 2018

Я полный новичок в Python, но пытаюсь написать здесь простую программу и не могу понять, почему мой первый оператор "если" не выполняется (из того, что я могу сказать).

У меня естьследующее:

fibo=[1,1]

num = int(input('Length of Fibonacci Sequence:'))
iterate = num - 2

for i in range (iterate):
    if num < 2 :
        print ('Length must be > 2')

    else:
        fibo.append(fibo[-1]+fibo[-2])

print ('The Fibonacci Sequence for the first', num, 'integers is:')
print (fibo)

Это работает точно так же, как я надеюсь на любой ввод выше 2. Если я введу что-либо ниже 2, я бы ожидал, что он напечатает «Длина должна быть> 2», но вместо этого не получит выводна все.

Буду признателен за любую помощь!Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Это потому, что оператор for не выполняется.

fibo = [1, 1]

num = 0 # int(input('Length of Fibonacci Sequence:'))
iterate = num - 2

for i in range (iterate): # here, interate is 0.
    # this is not executed
    if num < 2:
        print('Length must be > 2')
    else:
        fibo.append(fibo[-1]+fibo[-2])

print('The Fibonacci Sequence for the first', num, 'integers is:')
print(fibo)

Просто сделай

fibo = [1, 1]

def nextFib(num):
    iterate = num - 2

    if num < 2:
        print('Length must be > 2')    
    else:
        for i in range (iterate):
            fibo.append(fibo[-1]+fibo[-2])

print('The Fibonacci Sequence for the first', num, 'integers is:')
print(fibo)
0 голосов
/ 28 октября 2018

Если ваш ввод меньше 2, то итерация будет меньше или равна 0. Из-за этого цикл for никогда не будет выполнен. Вы можете переместить оператор if за пределы цикла, чтобы он работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...