Я, например, большой разницы не вижу. В обоих случаях слишком много вспомогательных переменных. Обычно функцию Фибоначчи пишут так:
def fib(n):
# Начальные значения
a, b = 0, 1
# Пока очередное вычисленное значение меньше введенного предела
while b < n:
# Это конструкция для Python 3, чтобы данные выводить в столбик. В 2.x можно так: print b,
# А если в Python 3 в столбик не нужно, то можно end=' '
print(b, end='\n')
# А это присвоение кортежа. Кстати, одно из преимуществ синтаксиса Python. Не в каждом языке такое возможно.
# "a" становится "b", а "b" становится "a+b"
a, b = b, a + b
Пользователь решил продолжить мысль 12 Декабря 2013, 15:40:56:
А если-таки нужно с возможностью вывода с определенного члена, то можно расширить:
# Функция Фибоначчи
# start по умолчанию равен 1, т.е. если его не задавать, то последовательность будет выводиться с первого члена.
def fib(n, start=1):
a, b = 0, 1
counter = 1
while b < n:
if counter >= start:
print(b, end='\n')
a, b = b, a+b
counter += 1
# Выводим последовательность с пятого члена
print(fib(500, 5))
# А по умолчанию выводится с первого
print(fib(500))