Fibonacci sequence using list in PYTHON?

前端 未结 6 1400
清酒与你
清酒与你 2020-12-16 08:48

I have a problem about making a fibonacci sequence to a list, I\'m just new to python someone help me please.

This is my code. I know this is looking wrong or somet

相关标签:
6条回答
  • 2020-12-16 09:08

    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)
    
    0 讨论(0)
  • 2020-12-16 09:18

    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]
    
    0 讨论(0)
  • 2020-12-16 09:18

    It is not fast but it works as well:

    def fibonacci(n):
    # return a list of fibonacci numbers
    if n == 0:
        fibonacci_list = []
    elif n == 1:
        fibonacci_list = [0]
    elif n == 2:
        fibonacci_list = [0, 1]
    elif n > 2:
        fibonacci_list = [0, 1]
        for i in range(n-2):
            fibonacci_list += [0]
            fibonacci_list[-1] = fibonacci_list[-2] + fibonacci_list[-3]
    return fibonacci_list
    
    0 讨论(0)
  • 2020-12-16 09:19

    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.

    0 讨论(0)
  • 2020-12-16 09:20

    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

    0 讨论(0)
  • 2020-12-16 09:26
    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
    
    0 讨论(0)
提交回复
热议问题