Jatin Johnson
Jatin Johnson

Reputation: 11

Printing fibonacci series using lists in python

I am relatively a noobie in programming and trying to learn python. I was trying to implement a Fibonacci series into a list within 10.

fibo= [0,1]

for k in range(11):
 i= fibo[-1]
 j = fibo[-2]
 k= fibo[i]+fibo[j]
 fibo.append(k)
 k=+1
print(fibo)

Not sure what I did wrong? Any help is really appreciated!

Output:

[0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

Upvotes: 0

Views: 236

Answers (2)

Shivam Gupta
Shivam Gupta

Reputation: 201

You can use this code to print fibonacci series upto N.

N = int(input()) # Length of fibonacci series

fibo = [0, 1]
a = fibo[0]
b = fibo[1]

for each in range(2, N):
    c = a + b
    a, b = b, c
    fibo.append(c)

print(fibo[:N])

OUTPUT

N = 10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Upvotes: 1

lilgallon
lilgallon

Reputation: 625

I can see few issues here:

fibo = [0,1]

# Your loop should start at index 2, otherwise
# you will try to access fibo[-2] and fibo[-1] with k=0
# and fibo[-1] and fibo[0] with k=1
# Also, if you only want 10 values, you should change 11
# to 10 since fibo already has two values.
# for k in range(11):
for k in range(2, 10):
    # You don't want the content of fibo, but the indexes!
    # i = fibo[-1]  
    # j = fibo[-2]
    i = k - 1
    j = k - 2

    # You are already using k, so you need to use an other variable
    # k = fibo[i] + fibo[j]
    v = fibo[i] + fibo[j]
    fibo.append(v)

    # You don't need k+=1 because it will be incremented
    # according to range(2, 10). The loop will start with
    # k = 2 and it will stop when k = 9
    # k += 1

print(fibo)

Your code did not crash because you technically can access fibo[-1] and fibo[-2]. It will respectively return the last value of your array, and the value before the last one.

Upvotes: 0

Related Questions