دنباله فیبوناچی در پایتون
در دنبالهٔ فیبوناچی هر جمله مجموع دو جملهٔ قبلی است و دنباله با ۰ و ۱ شروع میشود. در پایتون کافی است دو جملهٔ آخر را در دو متغیر نگه دارید و در هر دور حلقه، هر دو را یک جمله جلو ببرید.
صورت سؤال
برنامهای بنویسید که عدد صحیح n را از ورودی بخواند و n جملهٔ اول دنبالهٔ فیبوناچی را در یک سطر چاپ کند.
جملهها را با یک فاصله از هم جدا کنید و دنباله را از ۰ شروع کنید. ورودی همیشه دستکم ۱ است.
ورودی نمونه
8
خروجی نمونه
0 1 1 2 3 5 8 13
خودتان امتحان کنید
کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه میشود.
کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.
راهنمایی
دو متغیر a و b را با ۰ و ۱ شروع کنید. در هر دور، a را به فهرست جملهها اضافه کنید و بعد هر دو متغیر را یک جمله جلو ببرید.
جواب و توضیح
بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.
نمایش جواب
n = int(input())
a, b = 0, 1
terms = []
for _ in range(n):
terms.append(a)
a, b = b, a + b
print(*terms)این جواب چطور کار میکند؟
a همیشه جملهٔ فعلی و b جملهٔ بعدی است. حلقه n بار اجرا میشود و در هر دور، جملهٔ فعلی را در لیست terms نگه میدارد. نام _ برای شمارنده یعنی خود شماره در حلقه به کار نمیآید.
سطر a, b = b, a + b هر دو مقدار را همزمان عوض میکند. پایتون اول سمت راست را کامل حساب میکند و بعد نتیجه را در a و b میگذارد. اگر این دو را در دو سطر جدا بنویسید، مقدار قبلی a پیش از استفاده از دست میرود.
print(*terms) اعضای لیست را یکییکی به print میدهد و print بینشان یک فاصله میگذارد. اینطور به حلقهٔ دیگری برای چاپ نیاز نیست.
راه دوم: ساختن لیست با while
n = int(input())
fib = [0, 1]
while len(fib) < n:
fib.append(fib[-1] + fib[-2])
print(*fib[:n])این روش همهٔ جملهها را در لیست نگه میدارد و هر جملهٔ تازه را از دو عضو آخر لیست میسازد. برش fib[:n] حالتی را درست میکند که n برابر ۱ است و فقط جملهٔ اول باید چاپ شود.
اشتباههای رایج
- a و b را در دو سطر جدا عوض میکنند و از جملهٔ سوم به بعد عددها غلط میشوند.
- دنباله را از ۱ شروع میکنند، در حالی که این تمرین جملهٔ اول را ۰ میخواهد.
- حلقه را n + 1 بار اجرا میکنند و یک جملهٔ اضافه چاپ میشود.
تمرین بعدی
پایتون را قدمبهقدم یاد بگیرید
این تمرین یکی از تمرینهای پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره میگیرد؛ درسهای اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.