Fibonacci sequence using list in PYTHON?

浪尽此生 提交于 2019-11-30 10:58:51
LeartS

This code puts the first 700 fibonacci numbers in a list. Using meaningful variable names helps improve readability!

fibonacci_numbers = [0, 1]
for i in range(2,700):
    fibonacci_numbers.append(fibonacci_numbers[i-1]+fibonacci_numbers[i-2])

Note: If you're using Python < 3, use xrange instead of range.

You may want this:

In [77]: a = 0
    ...: b = 1
    ...: while b < 700:
    ...:     a, b = b, a+b
    ...:     print a, b
1 1
1 2
2 3
3 5
5 8
8 13
13 21
21 34
34 55
55 89
89 144
144 233
233 377
377 610
610 987

If you wanna store the results in a list, use list.append:

In [81]: a = 0
    ...: b = 1
    ...: fibo=[a, b]
    ...: while b < 70:
    ...:     a, b = b, a+b
    ...:     fibo.append(b)
    ...: print fibo
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Chris Kelley

There are two kinds of mistakes you are making; mistakes that are creating errors and mistakes that are affecting readability

Both instances of the phrase [i] should be removed. I believe that you may be thinking it has something to do with iteration or tuples, but that is part of the reason you are getting errors:

myArray1 = [0] 
myArray2 = [1]

while myArray2 < 700:
    myArray1, myArray2 = b, myArray1+myArray2
    print(myArray2)

the other part of the reason you are getting errors is because of the variable b. You don't declare it and it does not belong. This code will iterate correctly if you switch out b with myArray2:

myArray1 = [0] 
myArray2 = [1]

while myArray2 < 700:
    myArray1, myArray2 = myArray2, myArray1+myArray2
    print(myArray2)

then there are some legibility issues. I would change the phrase myArray1 and 2 to a and b respectively. First because it is just too long; second because in python it is called lists, not arrays; third because you are referring to integers, not lists or arrays:

a = [0] 
b = [1]

while b < 700:
    a, b = b, a+b
    print(b)

then, the variables that were myArray1 and 2, but are now a and b; those are integers and they do not need to be expressed as single object lists. so get rid of the brackets around them:

a = 0 
b = 1

while b < 700:
    a, b = b, a+b
    print(b)

Then, the last phrase in this code says print(b). If you have it printing b then the fibonacci sequence you get is missing its first 1. It will read (on separate lines of course) 1,2,3,5,8,13 and so on. It should read 1,1,2,3,5,8,13. You are missing the first 1. So print(b) needs to be changed to print(a):

a = 0 
b = 1

while b < 700:
    a, b = b, a+b
    print(a)

then, if you are expressing more than one variable you can just list all the variables separated by commas equal to all the values separated by commas like this:

a,b,c,d = 1,2,3,4

so for your code that would translate to:

a,b = 0,1

while b < 700:
    a, b = b, a+b
    print(a)

then get rid of that extra space, white space means something in python, though here it doesn't really make a difference:

a,b = 0,1
while b < 700:
    a, b = b, a+b
    print(a)

So all of this so far has just been enough to get you to your original problem: you are getting an iteration (each consecutive value on a seperate line). Below is how you can get a list to any number n:

def fibo(n):
    fibo_list = []
    a,b = 0,1
    while b < n:
        a,b = b,a+b
        fibo_list.append(a)
    print(fibo_list)

hope that helps

def fibonacci(n, results):
if n == 0:   
    return 0  
elif n == 1:  
    return 1  
else :  
    f = fibonacci(n-1, results) + fibonacci(n-2, results)
    f1 = f[:]
    results.appned(f1)


    return results

You can use below code, your problem can be solve in just one line. what are we doing is appending the

fib_nums

till your given limit i.e.,

700

and then adding the

fib_nums

with the second list which is of zero length which explicitly we doing, because it is containing

None

values, that we don't required.

#defining variable
fib_nums = [0, 1] 

#just one line code
fib_nums = fib_nums + [fib_nums.append(fib_nums[i-1]+fib_nums[i-2]) for i in range(2,700)]*0

#printing the series
print (fib_nums)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!