۳۴ نمونه سوال پایتون با جواب رایگان و کد
زبان برنامه نویسی پایتون یکی از جذابترین زبانهای برنامه نویسی است. به خصوص برای افراد تازهکار، زیرا سینتکس سادهای داشته و به راحتی میتوان آن را یاد گرفت. در ضمن این زبان کاربردهای بسیار گسترده و تخصصی هم دارد. برای مثال میتوان به هوش مصنوعی، توسعه اپلیکیشنهای تحت وب و غیره اشاره کرد. کاربرد پایتون در صنعت بسیار گسترده است. بهترین روش برای یادگیری پایتون، انجام تمرینات و بررسی مسائل حل شده است. در این مطلب، ۲۱ نمونه سوال پایتون با جواب رایگان را نوشتهایم. در این سوالات بخشهای مختلفی را پوشش دادهایم و بهتر است قبل از بررسی راه حلها خودتان اقدام به حل سوال بکنید.
- با مشاهده چند نمونه سوال درباره عملیات ریاضی، روش محاسبه رادیکال در پایتون را یاد میگیرید.
- با ماژولهای timeit و time آشنا شده و روش کار با آنها را میآموزید.
- با بررسی مثال سادهای یاد میگیرید که چگونه در پایتون زمانسنج معکوس ایجاد کنید.
- با توابع type و isinstance آشنا شده و تفاوت بین آنها را متوجه میشوید.
- با بررسی چند مثال ساده روش کار با شرط و حلقهها را در پایتون یاد میگیرید.
- با بررسی دو مثال ساده درباره دیکشنری و رشته روش کار با آنها را میآموزید.


در این مطلب از مجله فرادرس چند نمونه سوال پایتون با جواب رایگان را بررسی میکنیم. ساختار این سوالات طوری است که از مطالب ساده تا پیچیده را پوشش میدهد. ابتدا با بررسی چند تمرین ساده برای افراد مبتدی شروع کرده و کمکم سوالات پیچیدهتری را حل میکنیم.
نمونه سوال پایتون برای افراد تازه کار
در بخش اول از مطلب، چند سوال ساده را با هدف آشنایی بیشتر با سینتکس رایج پایتون حل میکنیم.
مثال ۱: جمع دو عدد
در نمونه سوال اول، باید برنامهای بنویسیم که دو عدد مختلف را با هم جمع کرده و نتیجه را در خروجی چاپ کند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
The sum of 1.5 and 6.3 is 7.8در فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- در خطوط ۱ و ۲، مقادیر 1.5 و 6.3 را در متغیرهای num1 و num2 جایگذاری میکنیم.
- در خط ۴ حاصل جمع دو عدد num1 و num2 محاسبه شده و در متغیر sum ذخیره میشود.
- در خط ۵ نتیجه و دو عدد ورودی را همراه با پیغام مناسبی در خروجی چاپ میکنیم.
مثال ۲: دریافت دو عدد از کاربر و محاسبه نتیجه جمع
اکنون باید برنامهای بنویسیم که ابتدا دو عدد از کاربر دریافت کند. سپس آنها را با همدیگر جمع کرده و نتیجه را در خروجی، نمایش دهد.
با فرض اینکه در ورودی به ترتیب اعداد 1.5 و 6.3 را وارد کرده باشیم، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Enter first number: 1.5
Enter second number: 6.3
The sum of 1.5 and 6.3 is 7.8
مراحل کد بالا را در فهرست پایین، توضیح دادهایم.
- این برنامه در خطوط ۱ و ۲، دو عدد را از کاربر میگیرد و در متغیرهای num1 و num2 ذخیره میکند.
- سپس با کمک تابع float() مقدارهای num1 و num2 را به عدد اعشاری - نوع داده float در پایتون - تبدیل کرده و حاصل جمع آنها را در متغیر sum قرار میدهد.
- در خط آخر هم نتیجه جمع و دو عدد ورودی را همراه با پیغام مناسب چاپ میکند.
مثال ۳: محاسبه رادیکال
برنامهای بنویسید که رادیکال ریشه دوم اعداد را محاسبه کند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
The square root of 8.000 is 2.828در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- ابتدا مقدار 8 در متغیر num ذخیره میشود.
- در خط ۴، ریشه دوم عدد num محاسبه شده و در متغیر num_sqrt ذخیره میشود.
- در خط آخر، عدد اصلی و ریشه دوم آن با سه رقم اعشار چاپ میشوند.

مثال ۴: محاسبه رادیکال عدد مختلط در پایتون
اعداد مختلط، عددهایی هستند که از دو بخش موهومی و حقیقی تشکیل شدهاند. در این سوال باید برنامهای بنویسیم که مقدار رادیکال عدد مختلط را حساب کرده و جواب را برگرداند. بهترین روش برای محاسبه این مسئله ریاضی، استفاده از کتابخانه cmath است.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
The square root of (1+2j) is 1.272+0.786jدر فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- در خط ۱: کتابخانه cmath برای کار با اعداد مختلط ایمپورت میشود.
- در خط ۳: عدد مختلط 1+2j در متغیر num ذخیره میشود.
- در خط ۴: ریشه دوم عدد مختلط num با تابع sqrt از کتابخانه cmath محاسبه و در متغیر num_sqrt ذخیره میشود.
- در خط ۵: عدد اصلی و ریشه دوم آن به صورت قسمت حقیقی و موهومی با سه رقم اعشار چاپ میشوند.
مثال ۵: محاسبه مساحت مثلث
در این نمونه سوال پایتون با جواب رایگان باید برنامهای برای محاسبه مساحت مثلث بنویسیم. البته با فرض اینکه اندازه سه ضلع داده شده است. در کادر پایین، کدهای مربوط به گرفتن اندازه اضلاع از کاربر هم نوشته شده است. این کدها به صورت کامنت ذخیره شدهاند.
بعد از اجرای کد بالا و با در نظر گرفتن اندازه اضلاع در متن سوال، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
The area of the triangle is 14.70توجه کنید که در این مسئله برای محاسبه مساحت مثلث از فرمول هرون استفاده کردهایم.
- در خطوط ۱ تا ۳: سه ضلع مثلث با مقدارهای 5، 6 و 7 در متغیرهای a، b و c ذخیره شدهاند.
- در خطوط ۵ تا ۸: کدهای مربوط به گرفتن اندازه اضلاع از کاربر به صورت کامنت نوشته شدهاند.
- در خط ۱۰: نصفه محیط مثلث با فرمول (a + b + c) / 2 محاسبه شده و در متغیر s ذخیره میشود.
- در خط ۱۲: مساحت مثلث با استفاده از فرمول هرون محاسبه میشود. سپس جوابت در متغیر area قرار میگیرد.
- در خط آخر: اندازه مساحت با دو رقم اعشار چاپ میشود.
پایتون را در فرادرس یاد بگیرید
یکی از گزینههای مناسب برای افراد علاقهمند به شغلهای برنامهنویسی، یادگیری پایتون است. زیرا موقعیتهای شغلی بسیار متنوعی برای متخصصان پایتون وجود دارد. استفاده از فیلمهای آموزشی، بهترین روش برای یادگیری پایتون است. وبسایت فرادرس فیلمهای بسیار خوبی برای آموزش پایتون تولید کرده است. با مشاهده منظم آنها میتوانید انواع مهارتهای پایتون را بدست بیاورید.

گروه آموزشی فرادرس سالهای زیادی است که به تولید فیلمهای آموزشی در حوزههای مختلف میپردازد. برای شروع به آموزش پایتون، بهتر است فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه را در فرادرس مشاهده کنید. بعد از آن میتوانید از فیلمهای مربوط به حوزههای پیشرفتهتر استفاده کنید.
در پایین، چند مورد از فیلمهای آموزشی سطح مبتدی تا پیشرفته را معرفی کردهایم.
- فیلم آموزش رایگان نصب پایتون در ویندوز
- فیلم آموزش برنامه نویسی پایتون همراه با مثال های عملی در Python + گواهینامه
- فیلم آموزش رایگان کتابخانه های پایتون برای یادگیری ماشین و یادگیری عمیق + گواهینامه
- فیلم آموزش «پانداس» (pandas) برای تحلیل اطلاعات در پایتون
- فیلم آموزش کتابخانه استاندارد پایتون همراه با نکات کاربردی + گواهینامه
نمونه سوال پایتون درباره کار با زمان
در این بخش از مطلب، دو نمونه سوال را درباره محاسبه زمان در پایتون بررسی میکنیم. این سوالات نسبت به سوالات بخش قبلی کمی تخصصیتر هستند.
مثال ۶: محاسبه زمان سپری شده
در این نمونه سوال پایتون با جواب رایگان باید برنامهای برای محاسبه زمان سپری شده بنویسیم. این زمان میتواند مربوط به دوره خاص یا حتی زمان اجرای فقط یک تابع باشد.
استفاده از ماژول time
در کادر پایین دستور سادهای را نوشتهایم. برنامه زمان اجرای آن را محاسبه میکند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
52.9
3.600120544433594e-05یکی از بهترین روشها برای محاسبه زمان سپری شده در اجرای کدها استفاده از ماژول time است. در کد بالا هم ابتدا این ماژول را به محیط کدنویسی خود ایمپورت کردهایم.
- در خط اول ماژول time را به محیط کدنویسی وارد کردهایم.
- سپس زمان قبل از اجرای عملیات را با کمک دستور time.time() ثبت کرده و در متغیری به نام start ذخیره کردیم.
- دستور خط ۳، ابتدا نتیجه عبارت ریاضی 23*2.3 را محاسبه میکند. سپس این نتیجه را با کمک تابع print() در خروجی چاپ میکند.
- بلافاصله با کمک کد time.time() زمان - پایان اجرای عملیات - را ثبت کرده و در متغیر end ذخیره میکنیم.
- در خط آخر زمان شروع را از زمان پایان کم کرده و نتیجه را به عنوان زمان اجرای عملیات در خروجی چاپ میکنیم.
نکته ۱: توجه کنید که زمان اجرای عملیات بر روی کامپیوترهای مختلف فرق میکند. ممکن است که در کامپیوترتان با عدد دیگری برای این عملیات روبهرو شوید.
نکته ۲: تابع time.time() زمان حال را بر اساس ثانیه محاسبه کرده و برمیگرداند.
استفاده از ماژول timeit
برای حل این مسئله میتوانیم از ماژول timeit هم استفاده کنیم.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
52.9
6.355400000000039e-05تمام مراحل مهم کد بالا را در فهرست پایین، توضیح دادهایم.
- در خط اول، نام مستعار timer را به تابع default_timer اختصاص داده و آن را از ماژول timeit به محیط کدنویسی پایتون وارد میکنیم.
- سپس زمان قبل از اجرای عملیات را در متغیری به نام start ذخیره میکنیم.
- در خط بعد، نتیجه عبارت ریاضی 23*2.3 را محاسبه کرده و با کمک تابع print() در خروجی چاپ میکنیم.
- در خط پنجم، بلافاصله بعد از به پایان رسیدن عملیات، زمان را در متغیر end ذخیره میکنیم.
- در نهایت هم حاصل تفریق زمان شروع از زمان پایان را در خروجی چاپ میکنیم.

توجه: ماژول timeit نتایج بسیار دقیقتری نسبت به ماژول time ایجاد میکند. در ضمن این ماژول هم زمان فعلی را به صورت ثانیه محاسبه کرده و برمیگرداند.
مثال ۷: ساخت زمان سنج معکوس
در این سوال خواسته شده است برنامهای با زبان پایتون برای ساخت زمانسنج معکوس بنویسیم. یعنی اینکه زمان به صورت ثانیه نشان داده شده و در هر ثانیه یک واحد از آن کم شود.
بعد از اجرای کد بالا، خروجی به صورت 00:05 نمایش داده میشود. سپس یک به یک ثانیهها کم شده تا به عدد به 00:01 برسد. در صورتی که از مقدار بیشتری به عنوان پارامتر تابع countdown() استفاده کنید، زمانسنج باز هم به درستی کار خواهد کرد.
- خط ۱: کتابخانه time برای کار با زمان ایمپورت میشود.
- خط ۳: تابع countdown تعریف میشود. این تابع پارامتری به نام time_sec را به عنوان ورودی دریافت میکند.
- خط ۴: حلقه while تا زمانی اجرا میشود که مقدار time_sec برابر با True باشد. در زبان پایتون هر عدد صحیح مثبت برابر با True و صفر برابر با False است. در نتیجه این حلقه تا زمانی اجرا میشود که time_sec برابر صفر شود.
- خط ۵: دقیقه و ثانیه با استفاده از تابع divmod از روی پارامتر time_sec محاسبه میشوند.
- خط ۶: زمان به صورت «ثانیه:دقیقه» قالببندی میشود.
- خط ۷: زمان چاپ میشود. در تابع print() از پارامتر end='\r' استفاده کردهایم. تابع print() این کد میتواند دادههای خود را دائما بر روی یک خط چاپ کند و به خط بعدی نرود.
- خط ۸: برنامه 1 ثانیه مکث میکند.
- خط ۹: مقدار time_sec یک واحد کم میشود.
- خط ۱۱: پس از به پایان رسیدن حلقه while ، پیغام "stop" چاپ میشود.
نمونه سوال پایتون درباره شیء گرایی
در این بخش از مطلب، ۲ نمونه سوال در حوزه شیء گرایی در پایتون را حل میکنیم. البته برای مسلط شدن به مبحث شیءگرایی فقط حل چند نمونه سوال پایتون با جواب رایگان کافی نیست. در صورت نیاز به مطالعه بیشتر پیشنهاد میکنیم که فیلم آموزش برنامه نویسی شی گرا در پایتون را در فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
مثال ۸: بدست آوردن نام کلاس
در این بخش از مطلب، باید برنامهای با زبان پایتون بنویسیم که با دسترسی به نمونه ساخت شده، نام کلاس آن را نشان دهد. برای حل این مسئله از دو روش مختلف استفاده میکنیم.
استفاده از __name__
متغیر ویژه __name__ برای بدست آوردن نام کلاس به کار میرود. روش استفاده از آن به این صورت است که ابتدا باید نام شیء مورد نظر نوشته شود. سپس کاراکتر نقطه و بعد از آن کلمه کلیدی __class__ نوشته میشود. در انتها هم __name__ را مینویسیم.
بعد از اجرای کد بالا، در خروجی عبارت Vehicle نمایش داده میشود.
- عبارت __class__ مشخصه کلاسی است که شیء مورد نظر به آن تعلق دارد. یعنی نشان میدهد که هر شیء از روی کدام کلاس ساخته شده است.
- __name__ یکی از متغیرهای ویژه پایتون است. عملکرد این متغیر بسته به جایی است که از آن استفاده میکنیم.

در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- ابتدا کلاس Vehicle را همراه با متد name تعریف کردهایم.
- سپس از روی این کلاس، شیء v را ساختیم.
- در نهایت با کمک کد v.__class__.__name__ به نام کلاس شیء v دسترسی پیدا کرده و با استفاده از تابع print() آن را چاپ میکنیم.
استفاده از تابع type و __name__
با استفاده از تابع type و صفت __name__ هم میتوانیم نام کلاس مربوط به اشیاء مختلف را پیدا کنیم. وظیفه تابع type() این است که کلاس مربوط به شیء v را مشخص کند. صفت __name__ هم نام آن کلاس را نشان میدهد.
بعد از اجرای کد بالا، در خروجی عبارت Vehicle نمایش داده میشود.
- ابتدا کلاس Vehicle را همراه با متد name تعریف کردهایم.
- سپس، شیء v را از روی این کلاس، میسازیم.
- در نهایت با کمک کد vtype(v).__name__ نام کلاس شیء v را پیدا کرده و با استفاده از تابع print() آن را چاپ میکنیم.
مثال ۹: تشخیص تفاوت بین type و isinstance
در این نمونه سوال پایتون با جواب رایگان، میخواهیم برنامهای بنویسیم که دو تابع type و isinstance را مقایسه کرده و تفاوت آنها را نشان بدهد.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
True
False
True
Trueدر مثال بالا، تابع type() نمیتواند اتصال اشیاء به کلاس پایه آنها را مشخص کند. برای مثال، obj_triangle شیئی از کلاس فرزند Triangle است. اما کلاس پایه آن Polygon نام دارد. اگر بخواهیم بررسی کنیم که آیا شیء ساخته شده از کلاس فرزند متعلق به کلاس والد است یا نه باید از تابع isinstance() کمک بگیریم. برای درک بهتر این موضوع باید مفهوم وراثت در پایتون را بلد باشید. در صورت نیاز پیشنهاد میکنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه کنید.
در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- ابتدا کلاس Polygon را همراه با متد sides_no تعریف کردیم.
- بعد از آن کلاس Triangle را به همراه متد area تعریف میکنیم. این کلاس فرزند کلاس Polygon است.
- در خطوط ۹ و ۱۰ دو شیء به نامهای obj_triangle و obj_polygon از روی این کلاسها ساختهایم.
- در خطوط بعد با کمک توابع type() و isinstance() نسبت این اشیا را با کلاسهای والدشان بررسی کردهایم.
عبارت های شرطی و حلقه ها در پایتون
در این بخش از مطلب، چند نمونه سوال پایتون با جواب رایگان را درباره عبارتهای شرطی و حلقههای پایتون بررسی کردهایم.
برای حل بعضی از سوالات هم از هر دو مفهوم در کنار هم استفاده میکنیم.
مثال ۱۰: تشخیص زوج یا فرد بودن عدد
میدانیم هر عددی که بر دو بخشپذیر باشد، زوج است و اعداد غیر از آن فرد هستند. برای تشخیص اینکه آیا اعداد بر ۲ بخشپذیر هستند یا نه در پایتون از عملگر درصد یا % استفاده میکنیم.

با کمک این عملگر میتوان باقیمانده تقسیم را بدست آورد. اگر باقیمانده تقسیم بر ۲ برابر صفر باشد، پس آن عدد زوج و در غیر این صورت فرد است.
دفعه اول به عنوان ورودی، عدد 43 را به برنامه ارسال میکنیم. خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Enter a number: 43
43 is Oddدفعه بعد، عدد 18 را به عنوان ورودی به برنامه ارسال میکنیم. این بار، خروجی به صورت زیر، نمایش داده میشود.
Enter a number: 18
18 is Evenدر فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- ابتدا از کاربر میخواهیم که عددی را وارد کند. برای این کار از تابع input استفاده کردهایم. این تابع هم پیغام مشخص شده را به کاربر میدهد. هم داده وارد شده توسط کاربر را دریافت کرده و به شکل رشته برمیگرداند.
- سپس با کمک عبارت شرطی if (num % 2) == 0 بخشپذیری عدد داده شده را بر 2 بررسی میکنیم.
- در پایان هم با توجه به نتیجه شرط، پیغام مناسبی در خروجی چاپ میشود.

مثال ۱۱: تشخیص سال کبیسه میلادی
برای تشخیص سالهای کبیسه میلادی باید آنها را تقسیم بر چهار بکنیم. تمام سالهای بخشپذیر بر 4 کبیسه هستند به غیر از صدهها. آنها باید بر 400 بخشپذیر باشند. برای مثال، سال ۲۰۱۷ کبیسه نیست. سال ۱۹۰۰ هم کبیسه نیست. اما سالهای ۲۰۱۲ و ۲۰۰۰ کبیسه هستند.
با توجه به اینکه سال 2000 به این برنامه داده شده است، خروجی زیر در کنسول پایتون نمایش داده میشود.
2000 is a leap yearدر خط ۴ از کدهای بالا دستور مربوط به گرفتن سال از کاربر را نوشتهایم، میتوانید از آن استفاده کنید. فقط باید از حالت کامنت خارج شوند. مراحل مهم کد بالا را در فهرست پایین، توضیح دادهایم.
- خط ۱: مقدار 2000 در متغیر year ذخیره میشود.
- خط ۸: با کمک کلمه کلیدی if در پایتون بررسی میکنیم که آیا year بر 400 و بر 100 بخشپذیر است یا نه. یعنی هم زمان دو شرط مختلف را بررسی میکنیم.
- اگر شرط درست باشد: پیغام مناسب برای سال کبیسه چاپ میشود.
- خط ۱۳: با کمک کلمه کلیدی elif در پایتون بررسی میکنیم که آیا year بر 4 بخشپذیر است و آیا بر 100 بخشپذیر نیست.
- اگر شرط درست باشد: پیغام مناسب سال کبیسه چاپ میشود.
- خطوط ۱۶ و ۱۷: اگر هیچکدام از شرطها برقرار نباشد، پیغام سال غیرکبیسه چاپ میشود.

مثال ۱۲: چاپ تمام اعداد اول درون محدوده مشخص شده
عدد اول به تمام اعداد صحیح مثبت و بزرگتر از ۱ گفته میشود، به شرط آن که به هیچ عددی به غیر از ۱ و خودشان بخشپذیر نباشند. برای مثال اعداد ۲ و ۳ و ۵ و ۷، اول هستند. اما ۶ اول نیست. زیرا به ۱ و ۲ و ۳ و ۶ بخشپذیر است.
اکنون باید برنامهای با زبان پایتون بنویسیم که داخل محدوده مشخص شده را جستوجو کند. سپس تمام اعداد اول موجود در آن را شناسایی کرده و در خروجی چاپ بکند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Prime numbers between 900 and 1000 are:
907
911
919
929
937
941
947
953
967
971
977
983
991
997در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- خطوط ۱و۲: مقدارهای 900 و 1000 در متغیرهای lower و upper ذخیره میشوند.
- خط ۴: پیغامی چاپ میشود که عددهای اول بین این دو عدد را نشان میدهد.
- خط ۶: با حلقه for تمام اعداد را از lower تا upper بررسی میکنیم.
- خط ۸: با کمک عبارت شرطی if بررسی میکنیم که عدد بزرگتر از 1 باشد.
- خطوط ۹ تا ۱۳: حلقه دیگری از 2 تا num اجرا میشود. این حلقه برای بررسی بخشپذیری اعداد به کار برده میشود.
- اگر num بر i بخشپذیر باشد، از حلقه خارج میشود، چون عدد اول نیست.
- اگر در حلقه هیچ break اجرا نشود، عدد اول است و چاپ میشود.
مثال ۱۳: نمایش جدول ضرب
در این مسئله از ما خواسته شده است که جدول ضرب مربوط به عدد 12 را چاپ کنیم.
برای حل این سوال از حلقه for و تابع range در پایتون استفاده کردهایم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
12 x 1 = 12
12 x 2 = 24
12 x 3 = 36
12 x 4 = 48
12 x 5 = 60
12 x 6 = 72
12 x 7 = 84
12 x 8 = 96
12 x 9 = 108
12 x 10 = 120همینطور که مشاهده میکنید برای حل این مسئله از ترکیب حلقه for و تابع range() برای پیمایش 1 تا 10 استفاده کردهایم. آرگومانهای (1, 11) را به تابع range() ارسال کردیم. این آرگومانها به معنای آن هستند که محدوده پیمایش باید بزرگتر مساوی 1 و کوچکتر از 11 باشد.

مثال ۱۴: چاپ سری فیبوناچی
سری فیبوناچی به دنبالهای از اعداد صحیح گفته میشود که با مقادر ۰ و ۱ شروع میشوند. بعد از آن هر عنصر برابر است با مجموع دو عنصر قبل از خودش. این یعنی آنکه برای محاسبه عنصر «n»-ام در سری فیبوناچی باید مقادی «(n-1)»-ام و «(n-2)»-ام را با یکدیگر جمعکنیم.

در کادر زیر، عناصر اولیه سری فیبوناچی را نوشتهایم.
0, 1, 1, 2, 3, 5, 8....در قسمت پایین، راه حل این سوال را با زبان پایتون پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8در کدهای بال تعداد عناصر را در متغیری به نام nterms ذخیره کردهایم. سپس عنصر اول را برابر با 0 و عنصر دوم را برابر با 1 قرار میدهیم. برای محاسبه سری کامل از حلقه while استفاده کردهایم.
در فهرست پایین، تمام مراحل مهم کد بالا توضیح داده شدهاند.
- خط ۱: تعداد عناصر سری فیبوناچی مورد نظر توسط کاربر را گرفته و در متغیر nterms ذخیره میکنیم.
- خط ۲: سپس، دو جمله اول سری فیبوناچی یعنی 0 و 1 را در متغیرهای n1 و n2 ذخیره میکنیم.
- خط ۳: بعد از آن متغیری به نام count تعریف کرده و مقدار 0 را به آن اختصاص میدهیم. از این متغیر برای شمارش عناصر این دنباله استفاده خواهیم کرد.
- خط ۶: با کمک عبارت شرطی if ابتدا بررسی میکنیم که آیا مقدار وارد شده مثبت است یا نه.
- اگر شرط برقرار شد، یعنی مقدار nterms کوچکتر یا مساوی صفر بود، باید پیغام خطا چاپ کنیم.
- خط ۹: سپس با کمک دستور elif شرط دیگری را بررسی میکنیم. اگر فقط یک جمله خواسته شده باشد - یعنی کاربر عدد 1 را برای متغیر nterms وارد کرده باشد - وارد این بخش میشود.
- اگر این شرط برقرار بود باید جمله اول فیبوناچی - 0 - چاپ شود.
- در غیر این صورت دستورات درون عبارت else اجرا میشوند. یعنی اگر بیشتر از یک جمله خواسته شده بود باید سری فیبوناچی را به طور کامل چاپ کنیم.
- خط ۱۵ تا ۲۱: برای محاسبه تمام عناصر این سری و چاپ آنها از حلقه while استفاده میکنیم.
- در خط اول این حلقه، ابتدا جمله فعلی - n1 - چاپ میشود.
- در خط ۱۷، جمله بعدی با جمع n1 و n2 محاسبه و در nth ذخیره میشود.
- در خطوط ۱۹ و ۲۰ هم مقدارهای n1 و n2 بهروزرسانی میشوند تا جملههای بعدی محاسبه شوند.
- در خط ۲۱، شمارنده count یکی زیاد میشود.
مثال ۱۵: محاسبه اعداد آرمسترانگ در محدوده مشخص
هر عدد صحیح و مثبت «n» رقمی آرمسترانگ است اگر مجموع توان n-ام ارقام آن برابر با خود عدد شوند.
abcd... = an + bn + cn + dn + ...برای مثال، عدد ۱۵۳ آرمسترانگ است.
153 = 1*1*1 + 5*5*5 + 3*3*3 در این قسمت از نمونه سوال پایتون با جواب رایگان، باید برنامهای بنویسیم که تمام اعداد آرمسترانگ موجود در محدوده مشخص شده را شناسایی کرده و در خروجی چاپ کند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
153
370
371
407
1634در این برنامه، حد پایین محدوده را بر روی متغیر lower و با مقدار 100 مشخص کردهایم. حد بالا این محدوده را هم در متغیر upper و با مقدار 2000 مشخص کردیم. برای پیمایش در این محدوده از تابع range() استفاده میکنیم.

در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- در خطوط ۱ و ۲، مقدارهای 100 و 2000 در متغیرهای lower و upper ذخیره میشوند.
- سپس با کمک حلقه for تمام اعداد درون محدوده lower تا upper را بررسی میکنیم.
- در خط ۵، تعداد رقمهای num محاسبه و در متغیر order ذخیره میشود. برای این کار ابتدا عدد را به رشته تبدیل کرده و سپس با کمک تابع len تعداد کاراکترهای آن را میشماریم.
- بعد از آن متغیر sum را با مقدار 0 مقداردهی اولیه میکنیم.
- در خط ۷، مقدار num در متغیر temp نگهداری میشود. با این کار هم مقدار num تا پایان حلقه ثابت میماند و هم میتوانیم مقدار temp را در حلقه تغییر بدهیم.
- در خط بعد، حلقه while تا وقتی temp بزرگتر از صفر باشد، کار میکند.
- در خط ۹، رقم آخر temp در متغیر digit ذخیره میشود.
- سپس نتیجه عملیات (digit ** order) به sum اضافه میشود.
- بعد از آن رقم آخرtemp حذف میشود. برای این کار از تقسیم صحیح استفاده کردهایم.
- در خط ۱۳ و ۱۴، اگر جمع توان رقمها یا متغیر sum برابر باعدد اصلی باشد، در نتیجه num آرمسترانگ است.
مثال ۱۶: چاپ مثلث قائم الزاویه در پایتون
در این مسئله میخواهیم شکل مثلث قائمالزاویه را با کمک کاراکترهای * در کنسول پایتون چاپ کنیم. برنامه باید اندازه اضلاع یا تعداد ردیفهای چاپ ستاره را از کاربر دریافت کند.
بعد از اجرای کد بالا و با فرض دادن عدد ۵ به برنامه، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
*
* *
* * *
* * * *
* * * * *برای حل این نوع از مسائل بهتر است که از دو یا چند حلقه به صورت تو در تو استفاده کنیم.
- ابتدا ارتفاع مثلث را با کمک نمایش پیغام مناسبی از کاربر گرفته و در متغیری به نام rows ذخیره میکنیم.
- در حلقه اول از i = 0 تا i = rows-1 پیمایش میکنیم.
- در حلقه دوم یا حلقه داخلی هم از j = 0 تا i را پیمایش میکنیم.
- در هربار پیمایش حلقه دوم به تعداد i + 1 ستاره پشت سر هم چاپ میکنیم.
- مقدار موجود در متغیر rows بیشترین تعداد * را مشخص میکند. در هر ردیف هم به تعداد i+1 ستاره چاپ میشود.

مثال ۱۷: چاپ هرم کامل با کمک اعداد
در این مثال میخواهیم برنامهای برای چاپ هرم کامل بنویسیم. اضلاع این هرم باید به صورت منظم اعداد را نشان بدهد. در هر ردیف بیشترین رقم در وسط قرار میگیرد. در تصویر زیر نمونهای از این هرم با ۵ ردیف نشان داده شده است.
1
2 3 2
3 4 5 4 3
4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5روش حل این مسئله را در کادر پایین، پیادهسازی کردهایم.
در فهرست پایین، تمام مراحل مهم کد بالا را توضیح دادهایم.
- خط ۱: تعداد سطرها از کاربر گرفته شده و در متغیر rows ذخیره میشود.
- خطوط ۳ تا ۵: سه متغیر k ، count و count1 با مقدار صفر مقداردهی اولیه میشوند.
- خط ۷: حلقه for از 1 تا rows اجرا میشود. شمارنده حلقه بیرونی، سطری را نشان میدهد که باید چاپ شود.
- خط ۸: این حلقه for مسئول چاپ فاصلههای خالی قبل از عددها است.
- خط ۹: دو فاصله خالی چاپ میشود.
- خط ۱۰: مقدار count یکی زیاد میشود.
- خط ۱۲: حلقه while تا زمانی که k برابر (2*i)-1 نشده ادامه دارد.
- خط ۱۳: بررسی میکند که آیا count کوچکتر یا مساوی rows-1 است یا نه.
- خط ۱۴: اگر شرط درست باشد، عدد i+k چاپ شده و count یکی زیاد میشود.
- خط ۱۶ و ۱۷ و ۱۸: اگر شرط درست نباشد، count1 یک واحد زیاد شده و عدد i+k-(2*count1) چاپ میشود.
- خط ۱۹: مقدار k یکی زیاد میشود تا حلقه جلو برود.
- خط ۲۱: پس از پایان هر سطر، مقدارهای count ، count1 و k دوباره صفر میشوند.
- خط ۲۲: دستور print() باعث میشود چاپ در سطر بعدی ادامه یابد.
انجام تمرینهای پیشرفته تر پایتون با کمک فرادرس
در فرادرس، مجموعه آموزشی به نام «مجموعه آموزش پروژه محور برنامه نویسی پایتون» تهیه و تدوین شده است. در این مجموعه آموزش، تمرینهای بسیار پیشرفتهتری با کمک پیادهسازی پروژههای واقعی آموزش داده میشود. در هر کدام از فیلمهای آموزشی، مفاهیم، تکنولوژیها و کتابخانههای متنوعی استفاده شدهاند. بررسی این آموزشها مهارتهای برنامه نویسی شما را به مقدار چشمگیری افزایش میدهد.
در پایین، چند فیلم آموزشی از این مجموعه را معرفی کردهایم.
- فیلم آموزش مدیریت موجودی انبار در پایتون، پیاده سازی پروژه اپلیکیشن گرافیکی سیستم انبارداری
- فیلم آموزش امنیت اطلاعات و رمزنگاری
- فیلم آموزش پروژه محور کتابخانه Tkinter در پایتون + گواهینامه
- فیلم آموزش پروژه محور پایتون همراه با ساخت بازی حافظه تصویری با کتابخانه Tkinter و Turtle + گواهینامه
- فیلم آموزش ساخت نرم افزارهای گرافیکی دسکتاپ با PySide6 در پایتون + پروژههای کاربردی
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلمهای پروژهمحور بیشتری دیدن کنید.

دیکشنری و رشته در پایتون
در این بخش، چند نمونه سوال پایتون با جواب رایگان درباره دیکشنری و رشته را بررسی میکنیم. این ساختارها جزو پرکاربردترین انواع داده در پایتون هستند. برای تبدیل شدن به برنامه نویس حرفهای باید در کار با آنها مهارت پیدا کنیم. یکی از روشهای کسب مهارت در کار با رشتهها مشاهده فیلم آموزش رایگان رشته و متن در برنامه نویسی پایتون از فرادرس است. برای کمک به مخاطبان مجله لینک این فیلم را در پایین نیز قرار دادهایم.
مثال ۱۸: پیمایش بر روی دیکشنری با استفاده از حلقه
در این برنامه میخواهیم بدون استفاده از متدهای دیکشنری در پایتون به کلیدها و مقدارهای آن دسترسی پیدا کنیم. باید طوری کد بنویسیم که تمام کلیدها و مقادیر دیکشنری به ترتیب، ردیف به ردیف در مقابل هم چاپ شوند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
a juice
b grill
c cornدر فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- در خط اول دیکشنری dt را با چند مقدار دلخواه تعریف کردیم.
- سپس با استفاده از حلقه for بر روی دیکشنری پیمایش میکنیم. خط for key in dt بر روی تمام کلیدهای دیکشنری پیمایش میکند. کلمه key در این خط به صورت دلخوه نوشته شده است. میتوانیم از هر عبارتی مانند i هم استفاده کنیم.
- در هر بار اجرای حلقه، کد print(key, dt[key]) کلید و مقدار متناظر با آن را در دیکشنری چاپ میکند.
مثال ۱۹: چاپ کلیدها و مقادیر به شکل مجزا از هم
در این سوال هم دیکشنری دلخواهی داده شده است. برای حل آن باید برنامهای با زبان پایتون بنویسیم که کلیدهای دیکشنری و مقادیر آن را به شکل جدا از هم چاپ کند.
برای دسترسی به کلیدهای دیکشنری از تابع keys() استفاده میکنیم. برای دسترسی به مقادیر آن هم از تابع values() استفاده میشود.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
a
b
c
juice
grill<br>corn<br>در فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- در خط اول دیکشنری به نام dt ساخته میشود. این دیکشنری از سه کلید و مقدار مختلف تشکیل شده است.
- ابتدا با کمک حلقه for همه کلیدهای دیکشنری پیمایش شده و به ترتیب چاپ میکنیم. در این خط برای دسترسی به کلیدها از کد dt.keys() استفاده کردهایم.
- سپس دوباره از حلقه for کمک گرفته و تمام مقدارهای دیکشنری را پیمایش کرده و در خروجی چاپ میکنیم. در این خط هم برای دسترسی به مقادیر از کد dt.values() استفاده میکنیم.

مثال ۲۰: حذف علائم نگارشی از متن
در این نمونه سوال پایتون با جواب رایگان باید برنامهای برای حذف علائم نگارشی در رشته داده شده بنویسیم. در کادر پایین، راه حل این سوال را پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Hello he said and goneبرای حل این سوال:
- اول رشتهای از تمام علائم نگارشی ساختهایم.
- سپس با استفاده از حلقه for بر روی رشته داده شده پیمایش میکنیم. این رشته به صورت دلخواه و توسط خودمان نوشته شده است. اما میتوان آن را از کاربر گرفت یا از فایلهای متنی خواند.
- در هر گردش حلقه بررسی میکنیم که آیا کاراکتر مشاهده شده از نوع علائم نگارشی است یا نه. برای این کار از شرط if char not in punctuations استفاده میکنیم.
- اگر کاراکتر مورد نظر جزو این علائم نبود، آن را به رشته خالی no_punct اضافه میکنیم.
- در پایان هم رشته موجود در متغیر no_punct را بر روی خروجی چاپ میکنیم. تمام علائم نگارشی از این رشته حذف شدهاند.
مثال ۲۱: محاسبه اندازه فایل
در این مسئله از ما خواسته شده است که برنامه پایتونی بنویسیم که اندازه فایل مشخص شده را به دست آورده و در خروجی چاپ کند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
34توجه کنید که این عدد به دلیل اندازه این فایل در کامپیوتر ما بدست آمده است. وقتی این کد را بر روی کامپیوتر خود و با فایلهای دیگر آزمایش کنید اعداد دیگری بدست خواهید آورد. با کمک تابع stat() از ماژول os میتوانیم جزئیات مربوط به فایلها را بدست بیاوریم. برای اینکه اندازه فایل را بفهمیم باید از صفت st_size در متد stat() استفاده کنیم. عدد نشان داده شده با واحد بایت است. یعنی اندازه این فایل ۳۴ بایت است.
نمونه سوال پایتون درباره کار با توابع
در این بخش از مطلب چند نمونه سوال درباره کار با توابع پایتون را بررسی میکنیم.
مثال ۲۲: نمایش توانهای عدد ۲ با کمک تابع Anonymous
در این مسئله باید با کمک «تابع بینام» (Anonymous Function) لامبدا برنامهای بنویسیم که توانهای عدد ۲ را از ۱ تا ۱۰ محاسبه کرده و در خروجی نمایش بدهد. پاسخ این مسئله در کادر پایین نوشته شده است. در این راه حل از تابع «Lambda» در داخل تابع map استفاده کردهایم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
The total terms are: 11
2 raised to power 0 is 1
2 raised to power 1 is 2
2 raised to power 2 is 4
2 raised to power 3 is 8
2 raised to power 4 is 16
2 raised to power 5 is 32
2 raised to power 6 is 64
2 raised to power 7 is 128
2 raised to power 8 is 256
2 raised to power 9 is 512
2 raised to power 10 is 1024در فهرست پایین، تمام مراحل کد بالا را توضیح دادهایم.
- ابتدا تعداد توانها را با متغیر terms مشخص میکنیم.
- سپس با استفاده از تابع map() و تابع بینام lambda، توانهای عدد 2 را محاسبه میکنیم.
- در خط ۹، تابع range(terms) اعداد از 0 تا 10 را میسازد و 2 ** x توانهای 2 را تولید میکند.
- نتیجهها داخل لیستی به نام result ذخیره میشوند.
- در خط ۱۱، تعداد کل توانها چاپ میشود.
- در آخر، با کمک حلقه for تمام توانهای 2 به همراه شماره آن روی صفحه نمایش داده میشوند.

مثال ۲۳: پیدا کردن اعداد بخش پذیر بر ۱۳ از بین مجموعهای از اعداد
در این مسئله لیستی از اعداد به صورت تصادفی داده شدهاند. باید برنامهای بنویسیم که تمام اعداد بخشپذیر بر 13 را در این لیست پیدا کند. برای حل این مسئله هم از تابع بینام lambda استفاده کنیم. اما این بار تابع lambda را در داخل تابع filter() قرار میدهیم. این تابع هم از توابع درونی پایتون است.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Numbers divisible by 13 are [65, 39, 221]- ابتدا لیستی از اعداد به نام my_list میسازیم.
- با استفاده از تابع filter() و تابع بینام lambda، اعدادی را جدا میکنیم که بر 13 بخشپذیراند.
- شرط x % 13 == 0 بررسی میکند که باقیمانده تقسیم عدد بر 13 صفر باشد.
- اعداد درست در داخل لیستی به نام result ذخیره میشوند.
- در پایان، اعداد بخشپذیر بر 13 روی صفحه چاپ میشوند.
مثال ۲۴:پیدا کردن مقدار ASCII کاراکترهای مشخص شده
واژه ASCII مخفف عبارت «American Standard Code for Information Interchange» به معنای «کد استاندارد امریکایی برای تبادل اطلاعات» است. ASCII مقدار عددی است که به تمام کاراکترها اختصاص داده شده. کامپیوتر با کمک این کدها میتواند کاراکترهای مختلف را ذخیره کرده و بر روی آنها عملیات انجام دهد. برای مثال، مقدار کد ASCII حرف A برابر با ۶۵ است.
اکنون باید تابعی بنویسیم که مقدار کد ASCII کاراکترهای مشخص شده را برگرداند.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
The ASCII value of 'p' is 112- ابتدا تابعی به نام print_ascii_value تعریف میکنیم. این تابع یک کاراکتر را بهعنوان ورودی میگیرد.
- داخل تابع، از تابع ord() استفاده میکنیم تا مقدار ASCII آن کاراکتر به دست بیاید.
- سپس کد ASCII همراه با کاراکتر چاپ میشود.
مثال ۲۵: نوشتن ماشین حساب ساده با پایتون
در این نمونه سوال پایتون با جواب رایگان، میخواهیم ماشین حساب سادهای با کمک تابع بنویسیم. این ماشین حساب باید بتواند عملیات جمع، تفریق، ضرب و تقسیم را انجام بدهد. ماشین حساب، ابتدا نوع عملگر را از کاربر پرسیده و سپس دو عدد به عنوان عملوندها دریافت میکند. در خروجی هم نتیجه انجام محاسبات را برمیگرداند. در کادر پایین، کدهای مربوط به ساخت ماشین حساب ساده با پایتون را نوشتهایم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود. البته این خروجی با توجه به انتخاب عملگر منها و دادن اعداد 400 و 135 به عنوان عملوندهای آن محاسبه شده است. شما میتوانید سایر عملگرها و اعداد را هم تست بکنید.

همینطور که در انتهای خروجی مشاهده میکنید، این برنامه بعد از پایان عملیات از کاربر سوال میکند که آیا مایل به ادامه انجام محاسبات است یا نه.
Select operation.
1.Add
2.Subtract
3.Multiply
4.Divide
Enter choice(1/2/3/4): 2
Enter first number: 400
Enter second number: 135
400.0 - 135.0 = 265.0
Let's do next calculation? (yes/no):- ابتدا چهار تابع تعریف میکنیم تا عملهای جمع، تفریق، ضرب و تقسیم را انجام دهند.
- سپس با کمک منو چاپ شده بر روی صفحه از کاربر میخواهیم نوع عملیات را انتخاب کند.
- باحلقه while برنامه را طوری مینویسیم که بتواند چند بار اجرا شود.
- انتخاب کاربر را دریافت میکنیم. اگر معتبر باشد، دو عدد از کاربر میگیریم.
- بر اساس عملگر انتخاب شده، تابع مربوط به آن را اجرا میکنیم.
- در پایان از کاربر میپرسیم آیا میخواهد محاسبه دیگری انجام دهد یا نه.
- اگر کاربر no وارد کند، حلقه متوقف شده و برنامه تمام میشود.
مثال ۲۶: محاسبه مجموع اعداد طبیعی با تابع بازگشتی
در این نمونه سوال پایتون با جواب رایگان از ما خواسته شده تابعی برای محاسبه مجموع اعداد طبیعی بنویسم. باید این تابع به صورت بازگشتی نوشته شود. روش کار به این صورت است که تابع عددی را دریافت میکند. سپس آن را با تمام اعداد کوچکتر از خودش و بزرگتر از ۰ جمع میبندد. در خروجی هم نتیجه برگردانده میشود.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود. این خروجی به آن علت ایجاد شده که عدد دلخواه 16 را به برنامه دادهایم. میتوانید عملکرد آن را با اعداد دیگر هم بررسی کنید.
The sum is 136- ابتدا تابعی به نام recur_sum تعریف میکنیم.
- اگر مقدار n برابر 1 یا کمتر باشد، همان مقدار برگردانده میشود.
- خط ۶ و ۷، در غیر این صورت، عدد n با نتیجه فراخوانی دوباره تابع برای n-1 جمع میشود.
- سپس مقدار عدد مورد نظر را در متغیر num قرار میدهیم.
- اگر عدد منفی باشد، پیام خطا چاپ میشود.
- اگر عدد مثبت باشد، تابع اجرا میشود و جمع اعداد از 1 تا num چاپ میشود.
مثال ۲۷:نمایش دنباله فیبوناچی با تابع بازگشتی
در این نمونه سوال پایتون با جواب رایگان، باید با کمک تابع بازگشتی برنامهای برای محاسبه دنباله فیبوناچی بنویسیم. دنباله فیبوناچی به توالی از اعداد صحیح گفته میشود که عناصر اول و دوم آن به ترتیب ۰ و ۱ هستند. سپس باقی عناصر از جمع دو عنصر قبلی به وجود میآیند. در کادر زیر، چند عبارت اول از دنباله فیبوناچی را نوشتهایم.
0, 1, 1, 2, 3, 5, 8....در برنامه پایین با استفاده از تابع بازگشتی دنباله فیبوناچی را حساب میکنیم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود. البته این خروجی به خاطر آن است که در برنامه اعلام کردهایم ۱۰ عدد از عناصر دنباله فیبوناچی را نشان بدهد. میتوان این مقدار را کم یا زیاد کرد.
Fibonacci sequence:
0
1
1
2
3
5
8
13
21
34- ابتدا تابعی به نام recur_fibo تعریف میکنیم.
- اگر مقدار n برابر 0 یا 1 باشد، همان مقدار برگردانده میشود.
- در غیر این صورت، تابع با جمع دو عدد قبلی فیبوناچی یعنی n-1 و n-2 مقدار جدید را میسازد.
- سپس تعداد جملههای سری فیبوناچی را در متغیر nterms قرار میدهیم.
- اگر این مقدار صفر یا منفی باشد، پیام خطا چاپ میشود.
- اگر مقدار درست باشد، با استفاده از حلقه for اعداد سری فیبوناچی تا تعداد مشخصشده چاپ میشوند.

مثال ۲۸: تبدیل اعداد دهدهی به اعداد باینری با کمک تابع بازگشتی
در این سوال باید برای تبدیل اعداد در مبنای ده به اعداد دودویی تابع بازگشتی بنویسیم.
نکته: برای تبدیل کردن عدد دهدهی به عدد دودویی باید آن عدد را تا وقتی که بزرگتر یا مساوی ۱ است بر ۲ تقسیم بکنیم. در نهایت با کنار هم قرار دادن معکوس باقیماندهها (از آخر به اول) مقدار باینری عدد اصلی بدست میآید.

در کادر پایین، روش حل این سوال را کدنویسی کردهایم.
بعد از اجرای کد بالا، عدد 100010 به عنوان خروجی در کنسول پایتون نمایش داده میشود. در فهرست زیر، تمام مراحل کد بالا را توضیح دادهایم.
- ابتدا تابع بازگشتی به نام convertToBinary تعریف میکنیم.
- اگر عدد بزرگتر از 1 باشد، تابع دوباره با تقسیم عدد بر 2 فراخوانی میشود.
- بعد از انجام تمام تقسیم، باقیمانده تقسیم بر 2 چاپ میشود. چون فرایند تقسیم به صورت بازگشتی انجام میشود در انتهای تقسیم عملیات چاپ صورت میگیرد. بنابراین به طور خودکار تمام باقیماندهها از آخر به اول چاپ میشوند.
- عدد 34 در متغیر dec قرار میگیرد.
- در نهایت با صدا زدن تابع، عدد 34 به صورت دودویی روی صفحه نمایش داده میشود.

مثال ۲۹: برگرداندن چند مقدار از تابع
اکنون باید تابع بسیار سادهای بنویسید که دو مقدار مختلف برگرداند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
('Mostafa', 'Rashidi')
Mostafa Rashidiمثال ۳۰: برگرداندن چند مقدار از تابع در ساختار دیکشنری
در این سوال میخواهیم مقادیر برگشت داده شده به جای تاپل در ساختار دیکشنری پایتون برگردانده بشوند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
{1: 'Mostafa', 2: 'Rashidi'}نمونه سوال پایتون با جواب رایگان درباره ساختمان دادههای بومی پایتون
در این قسمت از مطلب، چند نمونه سوال درباره انواع داده بومی پایتون بررسی کردهایم.
مثال ۳۱: جمع دو ماتریس
در زبان برنامه نویسی پایتون برای نمایش ماتریسها میتوانیم از لیستهای تو در تو استفاده کنیم. در این روش هر عنصر از لیست بیرونی به عنوان ردیفی از ماتریس در نظر گرفته میشود. برای مثال عبارت X = [[1, 2], [4, 5], [3, 6]] نشان دهنده ماتریس ۲×۳ است. برای انتخاب ردیف اول باید از کد X[0] استفاده کنیم. برای انتخاب عنصر موجود در ردیف و ستون اول هم عبارت X[0][0] را مینویسیم.

برای جمع ماتریسها روشهای مختلفی وجود دارد. در این مطلب دو مورد از آنها را بررسی میکنیم.
جمع دو ماتریس با کمک حلقههای تو در تو
در این تکنیک از دو حلقه for به صورت تو در تو استفاده میکنیم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
[17, 15, 4]
[10, 12, 9]
[11, 13, 18]- ابتدا دو ماتریس X و Y تعریف میکنیم.
- ماتریس result با همان ابعاد و مقدار اولیه صفر میسازیم تا جمع آنها در آن ذخیره شود.
- با حلقه for بیرونی روی ردیفها و حلقه for درونی روی ستونها پیمایش میکنیم. به ترتیب عناصر متناظر دو ماتریس را با هم جمع کرده و در result قرار میدهیم.
- در خطوط ۲۱ و ۲۲ هر ردیف از ماتریس result را چاپ میکنیم تا حاصل جمع دو ماتریس نمایش داده شود.
جمع دو ماتریس با کمک List Comprehension تو در تو
در این تکنیک برای پیمایش بر روی تمام عناصر ماتریس دوبعدی از تکنیک «List Comprehension» به صورت تو در تو استفاده میکنیم. این تکنیک به نوشتن کدهای مختصر و کوتاه کمک میکند. برنامه نویسان پایتون باید روش استفاده از آن را بلد باشند.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
[17, 15, 4]
[10, 12, 9]
[11, 13, 18]- ابتدا دو ماتریس X و Y تعریف میکنیم.
- با استفاده از List Comprehension، عناصر متناظر دو ماتریس را با هم جمع کرده و نتیجه را در ماتریس result قرار میدهیم.
- در نهایت، تمام ردیفهای ماتریس result را چاپ میکنیم تا حاصل جمع دو ماتریس نمایش داده شود.
مثال ۳۲: ضرب ماتریس
در این بخش، برنامهای برای محاسبه ضرب ماتریس در پایتون مینویسیم. فقط توجه کنید که اگر ماتریس X ساختار n x m داشته باشد و ماتریس Y هم ساختار m x l داشته باشد، امکان انجام ضرب XY وجود دارد. نتیجه هم برابر با n x l میشود. اما نمیتوانیم ضرب YX را انجام بدهیم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]- ابتدا دو ماتریس X و Y را تعریف میکنیم.
- در خطهای ۱۲ تا ۱۴، ماتریسی به نام result با ابعاد مناسب و مقدار اولیه صفر میسازیم.
- با سه حلقه تو در تو، مقدار X[i][k] * Y[k][j] را به result[i][j] اضافه میکنیم.
- حلقه اول روی ردیفهای X پیمایش میکند.
- حلقه دوم هم روی ستونهای Y پیمایش میکند.
- حلقه سوم با دسترسی به ستونهای X و ردیفهای Y عملیات ضرب و جمع عناصر متناظر را انجام میدهد.
- در پایان، تمام ردیفهای ماتریس result را چاپ میکنیم تا حاصل ضرب دو ماتریس نمایش داده شود.

مثال ۳۳: مرتبسازی کلمات بر اساس حروف الفبا
در این مثال، باید برنامهای برای مرتبسازی کلمات بر اساس حروف الفبا بنویسیم.
بعد از اجرای کد بالا، خروجی زیر در کنسول پایتون، نمایش داده میشود.
The sorted words are:
an
cased
example
hello
is
letters
this
with- ابتدا رشته متنی را در متغیر my_str قرار میدهیم.
- با کمک متد split در پایتون، رشته را به لیستی از کلمات تقسیم میکنیم. سپس با کد [word.lower() for word in my_str.split()] همه حروف را کوچک میکنیم.
- با استفاده از متد sort() لیست کلمات را به ترتیب حروف الفبا مرتب میکنیم.
- در نهایت، تمام کلمات مرتب شده را با حلقه for چاپ میکنیم.
مثال ۳۴: نمایش عملیات مربوط به مجموعهها در پایتون
به گروهی از عناصر منحصر به فرد مجموعه گفته میشود. مجموعه در پایتون، همان ساختار مجموعهها در ریاضی است. در این نمونه سوال پایتون با جواب رایگان، باید برنامهای برای نمایش عملیات اتحاد، اشتراک، تفاضل و تفاضل متقارن در مجموعهها بنویسیم.
بعد از اجرای کد بالا، خروجی به صورت زیر در کنسول پایتون نمایش داده میشود.
Union of E and N is {0, 1, 2, 3, 4, 5, 6, 8}
Intersection of E and N is {2, 4}
Difference of E and N is {0, 8, 6}
Symmetric difference of E and N is {0, 1, 3, 5, 6, 8}- ابتدا دو مجموعه E و N را تعریف میکنیم.
- با کد E | N اجتماع دو مجموعه را محاسبه کرده و چاپ میکنیم.
- با کد E & N اشتراک دو مجموعه را پیدا کرده و چاپ میکنیم.
- با کد E - N تفاضل مجموعهها را محاسبه کرده و نمایش میدهیم.
- با کد E ^ N اختلاف متقارن دو مجموعه را محاسبه کرده و چاپ میکنیم.
آزمون نمونه سوالات پایتون
۱. کدام ویژگی syntax پایتون یادگیری آن را برای مبتدیان آسانتر میکند؟
نیاز نداشتن به تعریف نوع متغیر در ابتدا
امکان استفاده از توابع lambda از همان شروع
ساده بودن ساختار و خوانایی بالای کدها
پرداختن به کار با ماژولهای پیشرفته در ابتدا
ویژگی «ساده بودن ساختار و خوانایی بالای کدها» باعث شده پایتون برای افراد تازهکار بسیار مناسب باشد؛ زیرا ساختار ساده و قابل فهم آن موجب میشود تمرکز بیشتر بر یادگیری مفاهیم برنامهنویسی باشد تا پیچیدگیهای sintax.
۲. در زمان بررسی نوع داده یا وراثت یک شیٔ در پایتون، نقش تابعهای type و isinstance چیست؟
type میتواند بفهمد شیٔ از کلاس والد به ارث برده است یا نه.
isinstance فقط برای مقایسه رشتهها کاربرد دارد و نوع داده را مشخص نمیکند.
isinstance فقط با دادههای عددی کار میکند و نوع کلاس را نشان نمیدهد.
type تنها نام کلاس فعلی شیٔ را برمیگرداند و وراثت را بررسی نمیکند.
در پایتون، تابع type تنها نام کلاس فعلی شیٔ را اعلام میکند و قادر به تشخیص وراثت یا ارتباط شیٔ با کلاس والد نیست. در مقابل، تابع isinstance برای بررسی عضویت اشیا در کلاس خاصی به کار میرود.
۳. برای محاسبه ریشه دوم عدد مختلط در پایتون با ماژول cmath کدام روش صحیح است؟
استفاده از تابع pow همراه با عدد مختلط و توان ۰.۵
استفاده از تابع sqrt در cmath و وارد کردن عدد مختلط به آن
استفاده از تابع abs برای گرفتن بخش حقیقی ریشه دوم
نوشتن حلقه for برای جستجوی ریشه دوم عدد
برای محاسبه ریشه دوم عدد مختلط، باید عدد را به تابع sqrt از ماژول cmath بدهید تا نتیجه مختلط صحیح برگردانده شود. نوشتن حلقه یا استفاده از abs بخش حقیقی ریشه را به دست نمیدهد و pow بدون ماژول مخصوص برای عدد مختلط مناسب نیست.
۴. در برنامهنویسی پایتون برای محاسبه مساحت یک مثلث با استفاده از فرمول هرون، ترتیب مراحل کدام است؟
مقدار نیممحیط را با هریک از اضلاع جمع و سپس حاصل جمعها را در هم ضرب نمایید.
ابتدا مجموع اضلاع را تقسیم بر دو نموده، مقدار بدست آمده را برای محاسبه مساحت در فرمول هرون استفاده نمایید.
ابتدا مجموع سه زاویه را تقسیم بر دو نموده و سپس در اندازهی ضلع اول ضرب نمایید.
ابتدا طول بزرگترین ضلع را کم کرده و سپس باقیمانده را تقسیم بر تعداد اضلاع مثلث نمایید.
در روش صحیح با فرمول هرون، باید مجموع سه ضلع را تقسیم بر دو کنید تا مقدار نیممحیط به دست آید. سپس نیممحیط را در اختلاف آن با هر یک از اضلاع ضرب میکنید و در نهایت ریشه دوم نتیجه را حساب میکنیم. عبارت «ابتدا مجموع اضلاع را تقسیم بر دو نموده، مقدار بدست آمده را برای محاسبه مساحت در فرمول هرون استفاده نمایید» این روند را درست توصیف میکند.
۵. در پایتون برای سنجش مدت اجرای یک کد، چه تفاوت اصلی میان استفاده از time و timeit وجود دارد؟
timeit فقط روی حلقهها اجرا میشود و time روی هر قطعه کد.
time دقت بیشتری نسبت به timeit دارد و محاسبات دقیقتر نمایش میدهد.
time فقط زمان اجرای برنامه کامل را میدهد، اما timeit تنها برای import ماژولها کاربرد دارد.
time مدت را فقط یکبار و بدون تکرار میسنجد، timeit زمان را با تکرارهای مختلف اندازه میگیرد.
از time برای سنجش ساده مدت اجرای یک قطعه کد استفاده میشود، اما این روش فقط یکبار اجرا را اندازه میگیرد و ممکن است دقت کافی نداشته باشد. روش timeit با اجرای چندباره کد و میانگینگیری، مدت واقعیتر و قابل اعتمادتری ارائه میدهد.
۶. برای حذف علائم نگارشی از یک فایل متنی در پایتون رایجترین راه کدام است؟
استفاده از متد replace برای جایگزین کردن علائم نگارشی
استفاده از ترکیب رشتهها و متد join
به کارگیری حلقه و حذف کاراکترهای ناخواسته
به کارگیری متدهایی مخصوص حذف علائم نگارشی از رشته
برای حذف علائم نگارشی از متن در پایتون، معمولا از متدهایی مربوط به خود رشتهها برای حذف این کاراکترها استفاده میشود؛ مطلب اشاره داشته که حذف نشانههای نگارشی از متن با روشهای مخصوص کار با رشته انجام میشود.
۷. برای جمع زدن عناصر دو ماتریس در پایتون با حلقه تو در تو، کدام ترتیب از اقدامات لازم است؟
تبدیل ماتریسها به رشته و جمع آنها با عملگر جمع
تعریف متغیر برای جمع و استفاده از تابع map روی ماتریسها
استفاده فقط از یک حلقه برای جمع هر دو ماتریس
ایجاد دو لیست تو در تو برای ماتریسها و پیمایش ردیفها با دو حلقه
در روش پیمایش و جمع دو ماتریس با استفاده از حلقه تو در تو در پایتون، باید ابتدا دو لیست تو در تو به عنوان ماتریس تعریف کنید و سپس هر دو بعد (ردیف و ستون) را با دو حلقه for پیمایش کنید. این رویه همان روشی است که با آن میتوانید به هر مقدار به صورت جداگانه دسترسی یابید و جمع را انجام دهید.
۸. در پایتون چگونه میتوان با استفاده از lambda، عملیات ساده ریاضی مثلا دوبرابر کردن اعداد را روی همه عناصر لیست انجام داد؟
با استفاده از تابع map و یک عبارت lambda میتوان عملیات را روی کل لیست اعمال کرد.
lambda فقط برای تعریف تابع جمع دو عدد قابل استفاده است و برای لیست کاربردی ندارد.
lambda فقط برای استفاده در توابع داخلی filter و نه map مناسب است.
برای اجرای عملیات ریاضی روی لیست باید فقط حلقه for استفاده کرد و lambda کاربرد ندارد.
برای انجام عملیات ساده مانند دوبرابر کردن همه عناصر یک لیست، میتوان از lambda همراه با تابع map استفاده کرد تا تابع بینام بر تکتک عناصر اجرا شود.
۹. در پایتون چگونه میتوان کلیدها و مقادیر دیکشنری (Dictionary) را به صورت جداگانه دریافت و چاپ کرد؟
استفاده از تابع print مستقیما برای دیکشنری
خواندن هر کلید و مقدار با متد append
با استفاده از متدهای keys برای کلیدها و values برای مقادیر
نوشتن دیکشنری در فایل و بازخوانی آن
در پایتون، برای دریافت کلیدهای یک دیکشنری از متد 'keys' و برای دریافت مقادیر آن از متد 'values' استفاده میشود. عبارت 'با استفاده از متد keys برای کلیدها و values برای مقادیر' با آموزش دادهشده مطابقت دارد.
۱۰. برای تهیه جدول ضرب با استفاده از حلقههای تو در تو در پایتون، رعایت کدام ساختار ضروری است؟
تنها استفاده از یک حلقه while کافی است.
نوشتن یک تابع بدون هیچ حلقهای
استفاده از حلقه for برای ردیفها و حلقه for دیگری برای ستونها
نوشتن کد تنها با استفاده از دستورات شرطی if
در ساخت جدول ضرب در پایتون باید از حلقه for برای هر دو ردیف و ستون بهره برد، یعنی دو حلقه for تو در تو لازم است. با این روش میتوان تک تک خانههای جدول را محاسبه کرد. راههایی مانند استفاده تنها از while، یا فقط دستور شرطی if، یا حتی نوشتن تابعی بدون حلقه، امکان تهیه جدول ضرب را طبق توضیح داده شده فراهم نمیکند.












