🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ دانشجوی سون‌لرن
دنباله فیبوناچی
جامعه پایتون (وب) ایجاد شده در ۲۸ مهر ۱۴۰۱

سلام. وقتتون بخیر

بنده میخواستم دنباله فیبوناچی رو با آرایه‌ها اجرا کنم که کدم رو به صورت زیر نوشتم ولی موقع اجرا خطایی میده که ایندکس آرایه خارج از رنج هست درصورتیکه بنده متوجه خارج از رنج بودنش نمیشه ممنون میشم راهنمایی بفرمایید.

n = int(input("Please Enter A Number: "))

fib =[]

if n == 0:

  print(n)

elif n == 1:

  print(n)

else:

  fib.append(0)

  fib.append(1)

  i = 2

while i<= n :

   fib[i]= fib[i-1] + fib[i-2]

   i = i + 1

    

print(fib[i]

خطای به صورت زیر است:

Traceback (most recent call last):

 File "C:\\Users\\User\\Desktop\\7learn\\Exercise.py", line 45, in

  fib[i]= fib[i-1] + fib[i-2]

IndexError: list assignment index out of range

درود امیدوارم حالتون عالی باشه . . .

دو قسمت کد شما یه ایراد کوچیک داره .

مورد اول : مادامی که هنوز ایندکس جدیدی در لیست شما تعریف نشده شما نمیتونید اون رو مقدار دهی کنید ( ایندکس دو وجود ندارد)

```python
fib[i] = fib[i - 1] + fib[i - 2]
```

مورد دوم :‌ متغیر i در آخرین دفعه تکرار while مجددا افزایش پیدا میکنه به ارور IndexError: list index out of range‌ میخورید. ( دلیلش اینه که مثلا برای ورودی ۱۰ اخرین مقدار i عدد ۱۱ هستش در صورتی که ایندکس‌ها از 0 شروع شده تا ۱۰ در نتیجه مورد اول مجددا اتفاق میوفته )

print(fib[i])

حالا درستش به این شکل هست :

while i <= n:
    fib.append(fib[i - 1] + fib[i - 2])
    i = i + 1
print(fib[-1])

موفق باشید ?

بهترین پاسخ
Reza Mobaraki ۲۹ مهر ۱۴۰۱، ۱۲:۴۰