آموزشگاه رادمان

42 نمونه سوال برنامه‌نویسی پایتون با جواب، در سطح‌های مقدماتی تا متوسط، شامل تمرین‌های کدنویسی، خروجی کد، عیب‌یابی و سوالات تستی برای تقویت مهارت پایتون.

نمونه سوالات برنامه نویسی پایتون با جواب تستی و تشریحی

  • مقالات آموزشی
  • رادمان
  • 72
  • 05-مهر-1405
نمونه سوالات برنامه نویسی پایتون با جواب تستی و تشریحی

نمونه سوالات برنامه‌نویسی پایتون با جواب در این صفحه، شامل تمرین‌هایی از مباحث مختلف این زبان، از متغیرها و شرط‌ها تا حلقه‌ها، توابع و کار با داده‌هاست؛در این مجموعه ابتدا سوالات کدنویسی را بررسی می‌کنیم، سپس سراغ سوالات خروجی کد، عیب‌یابی، تستی و مصاحبه‌ای می‌رویم و در پایان PDF و آزمون آنلاین را داریم. اگر قصد شرکت در کلاس پایتون مشهد یا دوره‌های آموزشی در تهران و سایر شهرها را دارید، پیش از انتخاب، درباره سابقه مدرس، سرفصل‌ها و شیوه برگزاری کلاس اطلاعات کافی به دست آورید.

نمونه سوالات پایتون سطح مقدماتی با جواب

نمونه سوالات پایتون سطح مقدماتی با جواب

سوالات مقدماتی برای تمرین مفاهیم پایه پایتون طراحی شده‌اند و بیشتر روی متغیرها، دریافت اطلاعات، عملگرها، شرط‌ها، حلقه‌ها و کار با رشته و لیست تمرکز دارند. ابتدا چند مسئله ساده را حل می‌کنیم و سپس به سوالاتی می‌رسیم که ترکیبی از همین مفاهیم را به کار می‌گیرند.

سوالات متغیر، ورودی و خروجی در پایتون

یکی از دلایلی که چرا پایتون برای مبتدیان مناسب است، ساختار ساده و خوانای دستورات آن می‌باشد؛ به همین دلیل یادگیری مفاهیمی مانند متغیر، دریافت ورودی، انجام محاسبات و نمایش خروجی با کدهای کوتاه امکان‌پذیر است. در ادامه، این مفاهیم را با چند نمونه سوال و کد پایتون تمرین می‌کنیم.

سوال 1؛ دریافت دو عدد و محاسبه حاصل جمع

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

پاسخ کد پایتون:

number1 = int(input("عدد اول را وارد کنید: "))
number2 = int(input("عدد دوم را وارد کنید: "))
sum_result = number1 + number2
print("حاصل جمع:", sum_result)

مراحل حل:

  1. با input() عدد اول از کاربر دریافت می‌شود.
  2. int() مقدار دریافت‌شده را به عدد صحیح تبدیل می‌کند و در متغیر number1 قرار می‌دهد.
  3. عدد دوم نیز با input() دریافت و با int() به عدد صحیح تبدیل می‌شود و در number2 ذخیره می‌شود.
  4. با عملگر + مقدار دو متغیر با یکدیگر جمع می‌شود.
  5. حاصل جمع در متغیر sum_result قرار می‌گیرد.
  6. در پایان، print() مقدار sum_result را در خروجی نمایش می‌دهد.

نمونه اعداد ورودی:

  • عدد اول: 12
  • عدد دوم: 8

محاسبه:

20 = 12 + 8

خروجی:

حاصل جمع: 20

نکته: مقداری که با input() دریافت می‌شود به‌صورت رشته است؛ بنابراین برای انجام محاسبات عددی باید آن را با int() به عدد صحیح تبدیل کنیم. اگر قرار باشد اعداد اعشاری نیز دریافت شوند، می‌توان از float() استفاده کرد.

سوال ۲؛ دریافت طول و عرض و محاسبه مساحت مستطیل:

برنامه‌ای بنویسید که طول و عرض یک مستطیل را از کاربر دریافت کند و مساحت آن را محاسبه و نمایش دهد.

پاسخ کد پایتون:

length = float(input("طول مستطیل را وارد کنید: "))
width = float(input("عرض مستطیل را وارد کنید: "))
area = length * width
print("مساحت مستطیل:", area)

مراحل حل:

  1. با input() طول مستطیل از کاربر دریافت می‌شود.
  2. مقدار دریافت‌شده با float() به عدد تبدیل و در متغیر length ذخیره می‌شود.
  3. عرض مستطیل نیز به همین روش دریافت و در متغیر width قرار می‌گیرد.
  4. مساحت مستطیل با ضرب طول در عرض محاسبه می‌شود.
  5. نتیجه در متغیر area ذخیره می‌شود.
  6. در پایان، مقدار مساحت با استفاده از print() نمایش داده می‌شود.

نمونه اعداد ورودی:

  • طول مستطیل: 12
  • عرض مستطیل: 5

محاسبه:

60 = 12 × 5

خروجی:

مساحت مستطیل: 60.0

نکته: در این برنامه از float() استفاده شده تا کاربر بتواند علاوه بر اعداد صحیح، مقدارهای اعشاری مانند 5.5 را نیز وارد کند.

سوال 3؛ تشخیص زوج یا فرد بودن عدد

 برنامه‌ای بنویسید که یک عدد صحیح را از کاربر دریافت کند و مشخص کند عدد وارد شده زوج است یا فرد؟

پاسخ کد پایتون:

number = int(input("یک عدد صحیح وارد کنید: "))
if number % 2 == 0:
    print("عدد زوج است.")
else:
    print("عدد فرد است.")

 مراحل حل:

  1. عدد صحیح با input() از کاربر دریافت و با int() به عدد تبدیل می‌شود.
  2. با عملگر % باقی‌مانده تقسیم عدد بر ۲ محاسبه می‌شود.
  3. اگر باقی‌مانده برابر 0 باشد، عدد زوج است.
  4. در غیر این صورت، عدد فرد است.
  5. نتیجه با استفاده از print() نمایش داده می‌شود.

نمونه اعداد ورودی:

عدد: 17

محاسبه:

1 = 2 % 17

خروجی:

عدد فرد است.

نکته: هر عدد صحیحی که باقیمانده تقسیم آن بر ۲ برابر صفر باشد، زوج است؛ در غیر این صورت، عدد فرد خواهد بود.

سوال 4؛ دریافت سه عدد و محاسبه میانگین

برنامه‌ای بنویسید که سه عدد را از کاربر دریافت کند و میانگین آن‌ها را محاسبه و نمایش دهد.

پاسخ کد پایتون:

number1 = float(input("عدد اول را وارد کنید: "))
number2 = float(input("عدد دوم را وارد کنید: "))
number3 = float(input("عدد سوم را وارد کنید: "))
average = (number1 + number2 + number3) / 3
print("میانگین:", average)

 

مراحل حل:

  1. سه عدد با استفاده از input از کاربر دریافت می‌شوند.
  2. هر مقدار با float به عدد تبدیل و در یک متغیر جداگانه ذخیره می‌شود.
  3. سه عدد با عملگر + با یکدیگر جمع می‌شوند.
  4. حاصل جمع بر تعداد اعداد، یعنی 3، تقسیم می‌شود.
  5. میانگین در متغیر average قرار می‌گیرد.
  6. مقدار میانگین با print() نمایش داده می‌شود.

نمونه اعداد ورودی:

  • عدد اول: 12
  • عدد دوم: 15
  • عدد سوم: 18

محاسبه:

(12 + 15 + 18) ÷ 3 = 15

خروجی:

میانگین: 15.0

نکته: چون از float() استفاده شده است، برنامه می‌تواند اعداد اعشاری را نیز دریافت کند. همچنین نتیجه تقسیم در پایتون می‌تواند به‌صورت عدد اعشاری نمایش داده شود.

سوال 5؛ دریافت دما و تبدیل سلسیوس به فارنهایت:

برنامه‌ای بنویسید که دمای هوا را برحسب درجه سلسیوس از کاربر دریافت کند و معادل آن را برحسب فارنهایت محاسبه و نمایش دهد.

پاسخ کد پایتون:

celsius = float(input("دما بر حسب سلسیوس را وارد کنید: "))
fahrenheit = (celsius * 9 / 5) + 32
print("دما بر حسب فارنهایت:", fahrenheit)

 

مراحل حل:

  1. دما با input() از کاربر دریافت می‌شود.
  2. مقدار دریافت‌شده با float() به عدد تبدیل و در متغیر celsius ذخیره می‌شود.
  3. برای تبدیل سلسیوس به فارنهایت از فرمول (C × 9 / 5) + 32 استفاده می‌شود.
  4. نتیجه در متغیر fahrenheit قرار می‌گیرد.
  5. مقدار تبدیل‌شده با print() نمایش داده می‌شود.

نمونه اعداد ورودی:

دما بر حسب سلسیوس: 25

محاسبه:

(25 × 9 ÷ 5) + 32 = 77

خروجی:

دما بر حسب فارنهایت: 77.0

نکته: در پایتون عملگر / نتیجه تقسیم را به‌صورت عدد اعشاری برمی‌گرداند؛ به همین دلیل خروجی ممکن است حتی برای یک مقدار صحیح، مانند 25، به شکل 77.0 نمایش داده شود.

سوال 6؛ دریافت شعاع و محاسبه مساحت و محیط دایره:

برنامه‌ای بنویسید که شعاع یک دایره را از کاربر دریافت کند و مساحت و محیط آن را محاسبه و نمایش دهد.

پاسخ کد پایتون:

import math
radius = float(input("شعاع دایره را وارد کنید: "))
area = math.pi * radius ** 2
circumference = 2 * math.pi * radius
print("مساحت دایره:", area)
print("محیط دایره:", circumference)

 

مراحل حل:

  1. ;کتابخانه math برای دسترسی به مقدار π وارد می‌شود.
  2. شعاع دایره با input() دریافت و با float() به عدد تبدیل می‌شود.
  3. مساحت با فرمول π × شعاع² محاسبه می‌شود.
  4. محیط با فرمول ۲ × π × شعاع محاسبه می‌شود.
  5. هر دو نتیجه با print() نمایش داده می‌شوند.

نمونه اعداد ورودی:

شعاع دایره: 5

محاسبه:

  • مساحت: π × 5² ≈ 78.54
  • محیط: 2 × π × 5 ≈ 31.42

خروجی:

  • مساحت دایره: 78.53981633974483
  • محیط دایره: 31.41592653589793

نکته: مقدار math.pi مقدار تقریبی عدد π را در اختیار برنامه قرار می‌دهد. اگر خروجی با تعداد رقم اعشار مشخصی لازم باشد، می‌توان از قالب‌بندی عدد در print() استفاده کرد.

سوال 7؛ دریافت قیمت و تعداد و محاسبه مبلغ کل

 برنامه‌ای بنویسید که قیمت یک کالا و تعداد آن را از کاربر دریافت کند و مبلغ کل خرید را محاسبه و نمایش دهد.

پاسخ کد پایتون:

price = float(input("قیمت کالا را وارد کنید: "))
quantity = int(input("تعداد کالا را وارد کنید: "))
total = price * quantity
print("مبلغ کل:", total)

 

مراحل حل:

  1. قیمت کالا با input() دریافت و با float() به عدد تبدیل می‌شود.
  2. تعداد کالا با input() دریافت و با int() به عدد صحیح تبدیل می‌شود.
  3. قیمت در تعداد ضرب می‌شود تا مبلغ کل به دست آید.
  4. نتیجه در متغیر total ذخیره می‌شود.
  5. مبلغ کل با print() نمایش داده می‌شود.

نمونه اعداد ورودی:

  • قیمت کالا: 85000
  • تعداد کالا: 3

محاسبه:

85000 × 3 = 255000

خروجی:

مبلغ کل: 255000.0

نکته: برای قیمت از float() استفاده شده تا در صورت وجود مقدار اعشاری نیز برنامه بتواند آن را دریافت کند؛ اما تعداد کالا با int() دریافت می‌شود، چون تعداد معمولا به‌صورت عدد صحیح وارد می‌شود.

سوال 8؛ دریافت عدد و محاسبه توان آن:

برنامه‌ای بنویسید که یک عدد و توان مورد نظر را از کاربر دریافت کند و حاصل توان را نمایش دهد.

پاسخ کد پایتون:

number = float(input("عدد را وارد کنید: "))
power = int(input("توان را وارد کنید: "))
result = number ** power
print("حاصل توان:", result)

 مراحل حل:

  1. عدد موردنظر با input() دریافت و با float() به عدد تبدیل می‌شود.
  2. توان با input() دریافت و با int() به عدد صحیح تبدیل می‌شود.
  3. با عملگر ** توان عدد محاسبه می‌شود.
  4. نتیجه در متغیر result ذخیره می‌شود.
  5. حاصل توان با print() نمایش داده می‌شود.

نمونه اعداد ورودی:

  • عدد: 4
  • توان: 3

محاسبه: 4³ = 64

خروجی: حاصل توان: 64.0

نکته: در پایتون از عملگر ** برای محاسبه توان استفاده می‌شود. برای مثال، 2 ** 3 برابر با 8 است.

سوال 9؛ دریافت زمان بر حسب دقیقه و تبدیل آن به ساعت و دقیقه

 برنامه‌ای بنویسید که مدت زمان یک فعالیت را بر حسب دقیقه از کاربر دریافت کند و آن را به ساعت و دقیقه تبدیل و نمایش دهد.

پاسخ کد پایتون:

minutes = int(input("مدت زمان را بر حسب دقیقه وارد کنید: "))
hours = minutes // 60
remaining_minutes = minutes % 60
print("ساعت:", hours)
print("دقیقه:", remaining_minutes)

 مراحل حل:

  1. مدت زمان با input() دریافت و با int() به عدد صحیح تبدیل می‌شود.
  2. با تقسیم صحیح // تعداد ساعت‌های کامل محاسبه می‌شود.
  3. با عملگر % تعداد دقیقه باقی‌مانده به دست می‌آید.
  4. تعداد ساعت و دقیقه باقی‌مانده با print() نمایش داده می‌شوند.

نمونه اعداد ورودی:

  • مدت زمان: 135 دقیقه

محاسبه:

135 ÷ 60 = 2 ساعت و 15 دقیقه باقی‌مانده

خروجی:

ساعت: 2، دقیقه: 15

نکته: عملگر // فقط قسمت صحیح حاصل تقسیم را برمی‌گرداند و % باقی‌مانده تقسیم را به دست می‌آورد.

سوال 10؛ دریافت زمان بر حسب ثانیه و تبدیل آن به دقیقه و ثانیه:

برنامه‌ای بنویسید که مدت زمان یک فعالیت را بر حسب ثانیه از کاربر دریافت کند و آن را به دقیقه و ثانیه تبدیل و نمایش دهد.

پاسخ کد پایتون:

seconds = int(input("مدت زمان را بر حسب ثانیه وارد کنید: "))
minutes = seconds // 60
remaining_seconds = seconds % 60
print("دقیقه:", minutes)
print("ثانیه:", remaining_seconds)

 مراحل حل:

  1. مدت زمان با input() دریافت و با int() به عدد صحیح تبدیل می‌شود.
  2. با // تعداد دقیقه‌های کامل محاسبه می‌شود.
  3. با % تعداد ثانیه‌های باقی‌مانده به دست می‌آید.
  4. نتیجه با print() نمایش داده می‌شود.

نمونه اعداد ورودی:

  • مدت زمان: 145 ثانیه

محاسبه:

145 ÷ 60 = 2 دقیقه و 25 ثانیه باقی‌مانده

خروجی:

دقیقه: 2، ثانیه: 25

نکته: در این تمرین، // برای به‌دست‌آوردن تعداد کامل دقیقه‌ها و % برای محاسبه زمان باقی‌مانده استفاده می‌شود.

نمونه سوالات پایتون سطح متوسط با جواب

نمونه سوالات پایتون سطح متوسط با جواب

در سطح متوسط، سوال ها علاوه بر مفاهیم پایه، به کار با ساختارهای داده، توابع و حل مسئله نیاز دارند. این نمونه سوالات با استفاده از مباحث مطرح‌شده در بهترین کتاب آموزش پایتون و منابع آموزشی معتبر انتخاب شده‌اند تا تمرین‌ها از مفاهیم کاربردی و مهم این سطح فاصله نگیرند. در این بخش، موضوعاتی مانند لیست، تاپل، دیکشنری و حل مسائل الگوریتمی را تمرین می‌کنیم.

سوال 11؛ تفاوت کپی و ارجاع در لیست پایتون

 برنامه‌ای بنویسید که یک لیست را به دو متغیر نسبت دهد، سپس یکی از لیست‌ها را تغییر دهد و نتیجه را نمایش دهد.

پاسخ کد پایتون:

numbers = [10, 20, 30]
list_reference = numbers
list_copy = numbers[:]
list_reference.append(40)
list_copy.append(50)
print("لیست اصلی:", numbers)
print("لیست ارجاعی:", list_reference)
print("لیست کپی‌شده:", list_copy)

 

مراحل حل:

  1. یک لیست شامل سه عدد ایجاد می‌کنیم.
  2. با = متغیر list_reference را به لیست اصلی نسبت می‌دهیم؛ بنابراین هر دو متغیر به یک لیست اشاره می‌کنند.
  3. با [:] یک کپی مستقل از لیست ایجاد می‌کنیم.
  4. عدد 40 را به list_reference اضافه می‌کنیم؛ چون این متغیر به لیست اصلی اشاره دارد، مقدار numbers نیز تغییر می‌کند.
  5. عدد 50 را به list_copy اضافه می‌کنیم؛ این تغییر فقط در کپی ایجاد می‌شود.
  6. هر سه متغیر را چاپ می‌کنیم تا تفاوت آن‌ها مشخص شود.

نمونه ورودی:

  • لیست اولیه: [10, 20, 30]
  • مقدار اضافه‌شده به لیست ارجاعی: 40
  • مقدار اضافه‌شده به لیست کپی‌شده: 50

محاسبه:

  • list_reference = numbers → هر دو متغیر به یک لیست اشاره می‌کنند.
  • list_copy = numbers[:] → یک لیست جدید با همان عناصر ایجاد می‌شود.

خروجی:

  • لیست اصلی: [10, 20, 30, 40]
  • لیست ارجاعی: [10, 20, 30, 40]
  • لیست کپی‌شده: [10, 20, 30, 50]

نکته: استفاده از = برای نسبت دادن یک لیست به متغیر دیگر، کپی مستقل ایجاد نمی‌کند. برای ایجاد یک کپی ساده از لیست می‌توان از [:] استفاده کرد.

سوال 12؛ پیمایش کلیدها و مقادیر دیکشنری در پایتون: برنامه‌ای بنویسید که اطلاعات چند دانش‌آموز را در یک دیکشنری ذخیره کند و نام و نمره هر دانش‌آموز را به‌صورت جداگانه نمایش دهد.

پاسخ کد پایتون:

students = {
    "علی": 18,
    "سارا": 20,
    "مریم": 17
}
for name, score in students.items():
    print("نام:", name, "- نمره:", score)

مراحل حل:

  1. یک دیکشنری ایجاد می‌کنیم که نام دانش‌آموزان کلید و نمره آن‌ها مقدار باشد.
  2. با items() به کلید و مقدار هر عنصر به‌صورت هم‌زمان دسترسی پیدا می‌کنیم.
  3. با حلقه for تمام عناصر دیکشنری را پیمایش می‌کنیم.
  4. نام و نمره هر دانش‌آموز را با print() نمایش می‌دهیم.

نمونه ورودی:

  • علی: 18
  • سارا: 20
  • مریم: 17

محاسبه: در هر بار اجرای حلقه، یک جفت کلید و مقدار از دیکشنری دریافت و چاپ می‌شود.

خروجی:

  • نام: علی - نمره: 18
  • نام: سارا - نمره: 20
  • نام: مریم - نمره: 17

نکته: متد items() جفت‌های کلید و مقدار دیکشنری را در اختیار حلقه قرار می‌دهد؛ برای دسترسی فقط به کلیدها می‌توان از keys() و برای مقادیر از values() استفاده کرد.

سوال 13؛ مرتب‌سازی کلمات بر اساس حروف الفبا در پایتون:

برنامه‌ای بنویسید که چند کلمه را در یک لیست قرار دهد و آن‌ها را به ترتیب حروف الفبا مرتب و نمایش دهد.

پاسخ کد پایتون:

words = ["banana", "apple", "orange", "cherry"]
sorted_words = sorted(words)
print("کلمات مرتب‌شده:", sorted_words)

 مراحل حل:

  1. چند کلمه را در یک لیست ذخیره می‌کنیم.
  2. با تابع sorted() یک لیست مرتب‌شده از کلمات ایجاد می‌کنیم.
  3. نتیجه را در متغیر sorted_words قرار می‌دهیم.
  4. لیست مرتب‌شده را با print() نمایش می‌دهیم.

نمونه ورودی:

  • لیست کلمات: ["banana", "apple", "orange", "cherry"]

محاسبه:

ترتیب الفبایی کلمات به این شکل است: apple، banana، cherry، orange

خروجی:

  • کلمات مرتب‌شده: ['apple', 'banana', 'cherry', 'orange']

نکته: تابع sorted() یک لیست جدید و مرتب‌شده برمی‌گرداند و لیست اصلی را تغییر نمی‌دهد. اگر بخواهید خود لیست اصلی تغییر کند، می‌توانید از متد sort() استفاده کنید.

سوال 14؛ حذف علائم نگارشی از متن در پایتون

برنامه‌ای بنویسید که یک متن را دریافت کند و تمام علائم نگارشی موجود در آن را حذف و متن پاک‌سازی‌شده را نمایش دهد.

پاسخ کد پایتون:

import string
text = input("متن را وارد کنید: ")
clean_text = text.translate(str.maketrans("", "", string.punctuation))
print("متن بدون علائم نگارشی:", clean_text)

مراحل حل:

  1. ماژول string را برای دسترسی به مجموعه علائم نگارشی وارد می‌کنیم.
  2. متن را با input() از کاربر دریافت می‌کنیم.
  3. با string.punctuation علائم نگارشی انگلیسی را مشخص می‌کنیم.
  4. متد translate() این علائم را از متن حذف می‌کند.
  5. متن پاک‌سازی‌شده را نمایش می‌دهیم.

نمونه ورودی:

  • متن: Hello, Python! How are you?

محاسبه:
Hello, Python! How are you ← حذف

, و ! و ? → Hello Python How are you

خروجی:

  • متن بدون علائم نگارشی: Hello Python How are you

نکته: string.punctuation شامل علائم نگارشی رایج انگلیسی است. اگر متن فارسی داشته باشیم، برای حذف علائم نگارشی فارسی باید مجموعه علائم فارسی را نیز جداگانه در نظر گرفت.

سوال 15؛ تبدیل لیست به تاپل در پایتون

برنامه‌ای بنویسید که چند عدد را در یک لیست قرار دهد، آن را به تاپل تبدیل کند و نتیجه را نمایش دهد.

پاسخ کد پایتون:

numbers = [10, 20, 30, 40, 50]
numbers_tuple = tuple(numbers)
print("لیست اصلی:", numbers)
print("تاپل تبدیل‌شده:", numbers_tuple)

مراحل حل:

  1. چند عدد را در یک لیست ذخیره می‌کنیم.
  2. با تابع tuple() لیست را به یک تاپل تبدیل می‌کنیم.
  3. نتیجه تبدیل را در numbers_tuple ذخیره می‌کنیم.
  4. لیست اصلی و تاپل ایجاد شده را نمایش می‌دهیم.

نمونه ورودی:

  • لیست اعداد: [10, 20, 30, 40, 50]

محاسبه:

  • [10, 20, 30, 40, 50] → (10, 20, 30, 40, 50)

خروجی:

  • لیست اصلی: [10 , 20 , 30 , 40 , 50]
  • تاپل تبدیل‌شده: (10 , 20 , 30 , 40 , 50)

نکته: لیست‌ها قابل تغییر هستند، اما عناصر یک تاپل پس از ایجاد آن قابل تغییر نیستند. به همین دلیل تاپل برای نگهداری داده‌هایی که نباید تغییر کنند، کاربرد دارد.

سوال 16؛ حذف عناصر تکراری از لیست با Set در پایتون

برنامه‌ای بنویسید که یک لیست شامل اعداد تکراری را دریافت کند و یک لیست جدید بدون عناصر تکراری ایجاد و نمایش دهد.

پاسخ کد پایتون:

numbers = [4, 7, 4, 2, 7, 9, 2, 5]
unique_numbers = list(set(numbers))
print("لیست بدون عناصر تکراری:", unique_numbers)

مراحل حل:

  1. یک لیست شامل چند عدد تکراری ایجاد می‌کنیم.
  2. با set() عناصر تکراری را حذف می‌کنیم.
  3. نتیجه را دوباره با list() به لیست تبدیل می‌کنیم.
  4. لیست جدید را با print() نمایش می‌دهیم.

نمونه ورودی:

  • لیست اعداد: [4, 7, 4, 2, 7, 9, 2, 5]

محاسبه:

  • عناصر تکراری 4، 7 و 2 حذف می‌شوند و فقط یک نمونه از هر عدد باقی می‌ماند.

خروجی:

  • لیست بدون عناصر تکراری: [2, 4, 5, 7, 9]

نکته: set عناصر تکراری را حذف می‌کند، اما ترتیب عناصر در آن تضمین‌شده نیست؛ بنابراین ممکن است ترتیب خروجی در اجرای برنامه متفاوت باشد.

سوال 17؛ برگرداندن چند مقدار از تابع در پایتون

 برنامه‌ای بنویسید که یک تابع، دو عدد را دریافت کند و حاصل جمع و حاصل ضرب آن‌ها را به‌صورت هم‌زمان برگرداند.

پاسخ کد پایتون:

def calculate(number1, number2):
    total = number1 + number2
    product = number1 * number2
    return total, product
number1 = 8
number2 = 5
sum_result, multiplication_result = calculate(number1, number2)
print("حاصل جمع:", sum_result)
print("حاصل ضرب:", multiplication_result)

مراحل حل:

  1. تابع calculate() را با دو پارامتر تعریف می‌کنیم.
  2. داخل تابع، حاصل جمع و حاصل ضرب دو عدد را محاسبه می‌کنیم.
  3. با return هر دو نتیجه را برمی‌گردانیم.
  4. هنگام فراخوانی تابع، دو نتیجه را در دو متغیر جداگانه قرار می‌دهیم.
  5. حاصل جمع و ضرب را نمایش می‌دهیم.

نمونه ورودی:

  • عدد اول: 8
  • عدد دوم: 5

محاسبه:

  • حاصل جمع: 8 + 5 = 13
  • حاصل ضرب: 8 × 5 = 40

خروجی:

  • حاصل جمع: 13
  • حاصل ضرب: 40

نکته: در پایتون می‌توان چند مقدار را با return برگرداند. این مقادیر در واقع به‌صورت یک تاپل برگردانده می‌شوند و می‌توان آن‌ها را هم‌زمان در چند متغیر قرار داد.

سوال 18؛ محاسبه توان اعداد با Lambda و Map در پایتون

برنامه‌ای بنویسید که توان دوم چند عدد را با استفاده از تابع lambda و map() محاسبه و نمایش دهد.

پاسخ کد پایتون:

numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda number: number ** 2, numbers))
print("توان دوم اعداد:", squares)

مراحل حل:

  1. چند عدد را در یک لیست قرار می‌دهیم.
  2. با lambda یک تابع کوتاه برای محاسبه توان دوم هر عدد ایجاد می‌کنیم.
  3. تابع map() را روی تمام عناصر لیست اجرا می‌کنیم.
  4. نتیجه map() را با list() به لیست تبدیل می‌کنیم.
  5. لیست توان دوم اعداد را نمایش می‌دهیم.

نمونه ورودی:

  • لیست اعداد: [1, 2, 3, 4, 5]

محاسبه:

  • 1² = 1
  • 2² = 4
  • 3² = 9
  • 4² = 16
  • 5² = 25

خروجی:

  • توان دوم اعداد: [1, 4, 9, 16, 25]

نکته: lambda برای تعریف توابع کوتاه و ساده استفاده می‌شود و map() یک تابع را روی تک‌تک عناصر یک مجموعه اجرا می‌کند.

سوال 19؛ پیدا کردن اعداد بخش‌پذیر بر ۱۳ با Filter در پایتون

 برنامه‌ای بنویسید که از بین چند عدد، اعدادی را که بر ۱۳ بخش‌پذیر هستند پیدا کند و نمایش دهد.

پاسخ کد پایتون:

numbers = [13, 26, 35, 39, 50, 52, 64, 78]
divisible_numbers = list(filter(lambda number: number % 13 == 0, numbers))
print("اعداد بخش‌پذیر بر 13:", divisible_numbers)

مراحل حل:

  1. چند عدد را در یک لیست قرار می‌دهیم.
  2. با lambda شرط بخش‌پذیری عدد بر ۱۳ را مشخص می‌کنیم.
  3. تابع filter() این شرط را روی تمام عناصر لیست اجرا می‌کند.
  4. نتیجه را با list() به یک لیست تبدیل می‌کنیم.
  5. اعداد بخش‌پذیر بر ۱۳ را نمایش می‌دهیم.

نمونه ورودی:

  • لیست اعداد: [13, 26, 35, 39, 50, 52, 64, 78]

محاسبه:

  • 13 ÷ 13 = 1
  • 26 ÷ 13 = 2
  • 39 ÷ 13 = 3
  • 52 ÷ 13 = 4
  • 78 ÷ 13 = 6

خروجی:

  • اعداد بخش‌پذیر بر 13: [13, 26, 39, 52, 78]

نکته: در filter() فقط عناصری باقی می‌مانند که شرط مشخص‌شده برای آن‌ها مقدار True داشته باشد. عملگر % نیز باقی‌مانده تقسیم را محاسبه می‌کند.

سوال 20؛ پیدا کردن اعداد اول در یک محدوده در پایتون

برنامه‌ای بنویسید که دو عدد را به‌عنوان ابتدا و انتهای یک محدوده دریافت کند و تمام اعداد اول موجود در آن محدوده را نمایش دهد.

پاسخ کد پایتون:

start = int(input("ابتدای محدوده را وارد کنید: "))
end = int(input("انتهای محدوده را وارد کنید: "))
prime_numbers = []
for number in range(start, end + 1):
    if number < 2:
        continue
    is_prime = True
    for divisor in range(2, int(number ** 0.5) + 1):
        if number % divisor == 0:
            is_prime = False
            break
    if is_prime:
        prime_numbers.append(number)
print("اعداد اول:", prime_numbers)

مراحل حل:

  1. ابتدا و انتهای محدوده را از کاربر دریافت می‌کنیم.
  2. با حلقه for تمام اعداد موجود در محدوده را بررسی می‌کنیم.
  3. اعداد کوچک‌تر از 2 را کنار می‌گذاریم، چون عدد اول نیستند.
  4. برای هر عدد، مقسوم‌علیه‌های ممکن را از 2 تا جذر آن بررسی می‌کنیم.
  5. اگر عدد بر یکی از این مقسوم‌علیه‌ها بخش‌پذیر باشد، عدد اول نیست.
  6. اعداد اول در لیست prime_numbers ذخیره می‌شوند و در پایان نمایش داده می‌شوند.

نمونه ورودی:

  • ابتدای محدوده: 10
  • انتهای محدوده: 30

محاسبه:
اعداد اول بین ۱۰ و ۳۰ عبارت‌اند از: 11، 13، 17، 19، 23، 29

خروجی:

  • اعداد اول: [11, 13, 17, 19, 23, 29]

نکته: عدد اول بزرگ‌تر از 1 است و فقط بر 1 و خودش بخش‌پذیر است. در این کد به‌جای بررسی تمام اعداد تا خود عدد، فقط تا جذر آن بررسی می‌شود که تعداد محاسبات را کاهش می‌دهد.

نمونه سوالات پایتون سطح پیشرفته با جواب

نمونه سوالات پایتون سطح پیشرفته با جواب

در سطح پیشرفته، سوال ها به مفاهیمی مانند بازگشت (Recursion)، شی گرایی، توابع پیشرفته، کار با فایل و ساختارهای داده نیاز دارند. در این بخش، نمونه سوالات برنامه نویسی پایتون با جواب را با تمرکز بر مفاهیم کاربردی و مسائل چالش‌برانگیزتر ارائه می‌کنیم تا مهارت حل مسئله و پیاده‌سازی الگوریتم‌ها تقویت شود.

سوال 21؛ محاسبه مجموع اعداد طبیعی با تابع بازگشتی

 برنامه‌ای بنویسید که یک عدد طبیعی را دریافت کند و مجموع اعداد ۱ تا آن عدد را با استفاده از تابع بازگشتی محاسبه و نمایش دهد.

پاسخ کد پایتون:

def sum_numbers(number):
    if number <= 1:
        return number
    return number + sum_numbers(number - 1)
number = int(input("عدد را وارد کنید: "))
result = sum_numbers(number)
print("مجموع اعداد طبیعی:", result)

مراحل حل:

  1. تابع sum_numbers() را برای محاسبه مجموع اعداد تعریف می‌کنیم.
  2. اگر عدد به 1 برسد، تابع همان عدد را برمی‌گرداند؛ این شرط، نقطه توقف بازگشت است.
  3. در غیر این صورت، عدد فعلی با نتیجه اجرای دوباره تابع برای عدد قبلی جمع می‌شود.
  4. عدد مورد نظر را از کاربر دریافت می‌کنیم.
  5. تابع را اجرا کرده و نتیجه را نمایش می‌دهیم.

نمونه ورودی:

  • عدد: 5

محاسبه:

  • 5 + 4 + 3 + 2 + 1 = 15

خروجی:

  • مجموع اعداد طبیعی: 15

نکته: در تابع بازگشتی، تابع خودش را فراخوانی می‌کند و حتما باید یک شرط توقف داشته باشد تا فراخوانی‌ها بی‌نهایت ادامه پیدا نکنند.

سوال 22؛ محاسبه دنباله فیبوناچی با تابع بازگشتی

برنامه‌ای بنویسید که تعداد جمله‌های دنباله فیبوناچی را دریافت کند و با استفاده از تابع بازگشتی، جمله‌های این دنباله را نمایش دهد.

پاسخ کد پایتون:

def fibonacci(number):
    if number <= 1:
        return number
    return fibonacci(number - 1) + fibonacci(number - 2)
count = int(input("تعداد جمله‌ها را وارد کنید: "))
print("دنباله فیبوناچی:")
for number in range(count):
    print(fibonacci(number), end=" ")

مراحل حل:

  1. تابع fibonacci() را برای محاسبه هر جمله دنباله تعریف می‌کنیم.
  2. برای 0 و 1، خود عدد به‌عنوان مقدار پایه برگردانده می‌شود.
  3. برای اعداد بزرگ‌تر، هر جمله از جمع دو جمله قبلی به دست می‌آید.
  4. تعداد جمله‌های موردنظر را از کاربر دریافت می‌کنیم.
  5. با حلقه for از جمله صفرم تا تعداد جمله تعیین‌شده، تابع را اجرا می‌کنیم.
  6. جمله‌های دنباله را در یک خط نمایش می‌دهیم.

نمونه ورودی:

  • تعداد جمله‌ها: 8

محاسبه:
0، 1، 1، 2، 3، 5، 8، 13

خروجی:

دنباله فیبوناچی: 0 1 1 2 3 5 8 13

نکته: این روش برای تعداد جمله‌های زیاد به دلیل فراخوانی‌های تکراری بازگشتی، کارایی پایینی دارد و برای مسائل بزرگ‌تر بهتر است از روش‌های بهتر استفاده شود.

سوال 23؛ تبدیل عدد ده‌دهی به باینری با تابع بازگشتی:

برنامه‌ای بنویسید که یک عدد صحیح نامنفی را دریافت کند و با استفاده از تابع بازگشتی، نمایش باینری آن را محاسبه و نمایش دهد.

پاسخ کد پایتون:

def decimal_to_binary(number):
    if number < 2:
        return str(number)
    return decimal_to_binary(number // 2) + str(number % 2)
number = int(input("عدد ده‌دهی را وارد کنید: "))
binary = decimal_to_binary(number)
print("عدد باینری:", binary)

مراحل حل:

  1. عدد ده‌دهی را از کاربر دریافت می‌کنیم.
  2. اگر عدد کمتر از 2 باشد، همان عدد به‌عنوان حالت پایه برگردانده می‌شود.
  3. در غیر این صورت، عدد را بر 2 تقسیم صحیح می‌کنیم و تابع را دوباره فراخوانی می‌کنیم.
  4. باقی‌مانده تقسیم بر 2 را به نتیجه اضافه می‌کنیم.
  5. با تکرار این فرایند، نمایش باینری عدد ساخته می‌شود.

نمونه ورودی:

  • عدد ده‌دهی: 13

محاسبه:

  • 13 ÷ 2 → باقی‌مانده 1
  • 6 ÷ 2 → باقی‌مانده 0
  • 3 ÷ 2 → باقی‌مانده 1
  • 1 ÷ 2 → باقی‌مانده 1
  • با خواندن باقی‌مانده‌ها از آخر به اول: 1101

خروجی: عدد باینری: 1101

نکته: این تابع برای اعداد صحیح نامنفی نوشته شده است. در هر مرحله، // خارج‌قسمت صحیح و % باقی‌مانده تقسیم را به دست می‌آورد.

سوال 24؛ بررسی نوع و نام کلاس در پایتون:

برنامه‌ای بنویسید که یک کلاس برای اطلاعات یک دانش‌آموز ایجاد کند و با استفاده از type() و __name__، نام کلاس شیء را نمایش دهد.

پاسخ کد پایتون:

class Student:
    def __init__(self, name):
        self.name = name
student = Student("Ali")
class_name = type(student).__name__
print("نام کلاس:", class_name)

مراحل حل:

  1. یک کلاس به نام Student تعریف می‌کنیم.
  2. در سازنده کلاس، نام دانش‌آموز را دریافت و ذخیره می‌کنیم.
  3. از کلاس Student یک شیء به نام student ایجاد می‌کنیم.
  4. با type(student) نوع شیء را مشخص می‌کنیم.
  5. با __name__ نام کلاس را از نتیجه type() دریافت می‌کنیم.
  6. نام کلاس را نمایش می‌دهیم.

نمونه ورودی:

  • نام دانش‌آموز: Ali

محاسبه: نوع شیء student برابر با کلاس Student است؛ بنابراین type(student).__name__ مقدار Student را برمی‌گرداند.

خروجی: نام کلاس: Student

نکته: type() نوع یا کلاس یک شیء را برمی‌گرداند و ویژگی __name__ نام آن کلاس را به‌صورت رشته در اختیار ما قرار می‌دهد.

سوال 25؛ تشخیص تفاوت type() و isinstance() در پایتون

برنامه‌ای بنویسید که یک کلاس پایه و یک کلاس فرزند ایجاد کند و با استفاده از type() و isinstance() نوع یک شیء را بررسی و نتیجه هر دو روش را نمایش دهد.

پاسخ کد پایتون:

class Animal:
    pass
class Dog(Animal):
    pass
dog = Dog()
print("نتیجه type:", type(dog) == Animal)
print("نتیجه isinstance:", isinstance(dog, Animal))

مراحل حل:

  1. کلاس Animal را به‌عنوان کلاس پایه تعریف می‌کنیم.
  2. کلاس Dog را از Animal به ارث می‌بریم.
  3. یک شیء از کلاس Dog ایجاد می‌کنیم.
  4. با type() بررسی می‌کنیم که نوع دقیق شیء Animal است یا خیر.
  5. با isinstance() بررسی می‌کنیم که شیء از نوع Animal یا یکی از کلاس‌های فرزند آن هست یا خیر.
  6. نتیجه هر دو بررسی را نمایش می‌دهیم.

نمونه ورودی:

  • شیء ایجادشده: Dog

محاسبه:

  • type(dog) == Animal → False
  • isinstance(dog, Animal) → True

خروجی:

  • نتیجه type: False
  • نتیجه isinstance: True

نکته: type() نوع دقیق شیء را بررسی می‌کند، اما isinstance() رابطه ارث‌بری را هم در نظر می‌گیرد. به همین دلیل شیء Dog با isinstance(dog, Animal) از نوع Animal نیز شناخته می‌شود.

سوال 26؛ پیدا کردن اعداد آرمسترانگ در یک محدوده در پایتون

 برنامه‌ای بنویسید که ابتدا و انتهای یک محدوده را دریافت کند و تمام اعداد آرمسترانگ موجود در آن محدوده را نمایش دهد.

پاسخ کد پایتون:

start = int(input("ابتدای محدوده را وارد کنید: "))
end = int(input("انتهای محدوده را وارد کنید: "))
armstrong_numbers = []
for number in range(start, end + 1):
    digits = str(number)
    power = len(digits)
    total = sum(int(digit) ** power for digit in digits)
    if total == number:
        armstrong_numbers.append(number)
print("اعداد آرمسترانگ:", armstrong_numbers)

مراحل حل:

  1. ابتدا و انتهای محدوده را از کاربر دریافت می‌کنیم.
  2. هر عدد موجود در محدوده را به رشته تبدیل می‌کنیم تا بتوانیم رقم‌های آن را جداگانه بررسی کنیم.
  3. تعداد رقم‌های عدد را با len() به دست می‌آوریم.
  4. هر رقم را به توان تعداد رقم‌های عدد می‌رسانیم و مجموع آن‌ها را محاسبه می‌کنیم.
  5. اگر مجموع به‌دست‌آمده با خود عدد برابر باشد، آن عدد آرمسترانگ است.
  6. اعداد آرمسترانگ را در لیست armstrong_numbers ذخیره و در پایان نمایش می‌دهیم.

نمونه ورودی:

  • ابتدای محدوده: 100
  • انتهای محدوده: 500

محاسبه:
برای عدد 153 داریم:

1³ + 5³ + 3³ = 1 + 125 + 27 = 153

بنابراین 153 یک عدد آرمسترانگ است.

خروجی:

  • اعداد آرمسترانگ: [153, 370, 371, 407]

نکته: در یک عدد آرمسترانگ، مجموع توان رقم‌های آن با توان برابر تعداد رقم‌های عدد، برابر خود عدد است. برای مثال، اعداد سه‌رقمی با مجموع مکعب رقم‌هایشان بررسی می‌شوند.

سوال 27؛ جمع دو ماتریس در پایتون: برنامه‌ای بنویسید که دو ماتریس هم‌اندازه را دریافت کند و حاصل جمع آن‌ها را با استفاده از حلقه‌های تو‌در‌تو محاسبه و نمایش دهد.

پاسخ کد پایتون:

matrix1 = [
    [1, 2],
    [3, 4]
]
matrix2 = [
    [5, 6],
    [7, 8]
]
result = []
for i in range(len(matrix1)):
    row = []
    for j in range(len(matrix1[i])):
        row.append(matrix1[i][j] + matrix2[i][j])
    result.append(row)
print("حاصل جمع دو ماتریس:")
for row in result:
    print(row)

مراحل حل:

  1. دو ماتریس هم‌اندازه با دو سطر و دو ستون ایجاد می‌کنیم.
  2. یک لیست خالی برای ذخیره ماتریس حاصل در نظر می‌گیریم.
  3. با حلقه اول، سطرهای ماتریس را پیمایش می‌کنیم.
  4. با حلقه دوم، عناصر هر سطر را بررسی می‌کنیم.
  5. عنصر متناظر از دو ماتریس را با هم جمع می‌کنیم.
  6. نتیجه هر سطر را به ماتریس result اضافه می‌کنیم.
  7. در پایان، ماتریس حاصل را سطر به سطر نمایش می‌دهیم.

نمونه ورودی:

ماتریس اول:

  • [1, 2]
  • [3, 4]

ماتریس دوم:

  • [5, 6]
  • [7, 8]

محاسبه:

  • 1 + 5 = 6
  • 2 + 6 = 8
  • 3 + 7 = 10
  • 4 + 8 = 12

خروجی:

حاصل جمع دو ماتریس:

  • [6, 8]
  • [10, 12]

نکته: برای جمع دو ماتریس، هر عنصر باید با عنصر متناظر خود در ماتریس دیگر جمع شود؛ بنابراین دو ماتریس باید تعداد سطر و ستون یکسانی داشته باشند.

سوال ۲۸؛ ضرب دو ماتریس در پایتون

دو ماتریس را در پایتون تعریف کنید و حاصل‌ضرب آن‌ها را با استفاده از حلقه‌های تو در تو به دست آورید. برای ضرب ماتریس‌ها، تعداد ستون‌های ماتریس اول باید با تعداد سطرهای ماتریس دوم برابر باشد.

پاسخ کد پایتون:

matrix1 = [
    [1, 2],
    [3, 4]
]
matrix2 = [
    [5, 6],
    [7, 8]
]
result = []
for i in range(len(matrix1)):
    row = []
    for j in range(len(matrix2[0])):
        total = 0
        for k in range(len(matrix2)):
            total += matrix1[i][k] * matrix2[k][j]
        row.append(total)
    result.append(row)
print("حاصل ضرب دو ماتریس:")
for row in result:
    print(row)

مراحل حل:

  1. دو ماتریس matrix1 و matrix2 تعریف می‌کنیم.
  2. برای هر سطر ماتریس اول و هر ستون ماتریس دوم یک مقدار جدید محاسبه می‌کنیم.
  3. عناصر سطر ماتریس اول را در عناصر متناظر ستون ماتریس دوم ضرب کرده و حاصل‌ها را با هم جمع می‌کنیم.
  4. نتیجه هر سطر را در result قرار می‌دهیم.
  5. در پایان، ماتریس حاصل چاپ می‌شود.

نمونه اعداد ورودی:

ماتریس اول:

  • [1, 2]
  • [3, 4]

ماتریس دوم:

  • [5, 6]
  • [7, 8]

محاسبه:

  • عنصر اول: (1 × 5) + (2 × 7) = 19
  • عنصر دوم: (1 × 6) + (2 × 8) = 22
  • عنصر سوم: (3 × 5) + (4 × 7) = 43
  • عنصر چهارم: (3 × 6) + (4 × 8) = 50

خروجی:

حاصل ضرب دو ماتریس:

  • [19, 22]
  • [43, 50]

نکته: در ضرب ماتریس‌ها، برای محاسبه هر عنصر باید سطر ماتریس اول در ستون ماتریس دوم ضرب داخلی شود. همچنین تعداد ستون‌های ماتریس اول باید با تعداد سطرهای ماتریس دوم برابر باشد.

سوال ۲۹؛ محاسبه زمان اجرای یک بخش از کد پایتون

برنامه‌ای بنویسید که زمان اجرای یک بخش از کد را اندازه‌گیری کند و مدت زمان سپری‌شده را بر حسب ثانیه نمایش دهد.

پاسخ کد پایتون:

import time
start_time = time.perf_counter()
total = 0
for number in range(1, 1000001):
    total += number
end_time = time.perf_counter()
elapsed_time = end_time - start_time
print("مجموع اعداد:", total)
print("زمان اجرای برنامه:", elapsed_time, "ثانیه")

مراحل حل:

  1. ماژول time را وارد می‌کنیم.
  2. با time.perf_counter() زمان شروع اجرای بخش مورد نظر را ثبت می‌کنیم.
  3. یک حلقه برای جمع اعداد ۱ تا ۱۰۰۰۰۰۰ اجرا می‌کنیم.
  4. پس از پایان حلقه، زمان را دوباره با perf_counter() می‌گیریم.
  5. با کم کردن زمان شروع از زمان پایان، مدت اجرای کد به دست می‌آید.
  6. نتیجه محاسبه و زمان اجرا را چاپ می‌کنیم.

نمونه اعداد ورودی:

  • در این سوال ورودی از کاربر دریافت نمی‌شود و محدوده در خود برنامه مشخص شده است: از 1 تا 1000000

محاسبه:

  • مجموع اعداد از ۱ تا ۱۰۰۰۰۰۰ برابر است با: 500000500000
  • زمان اجرا به سرعت سیستم و شرایط اجرای برنامه بستگی دارد و مقدار ثابتی ندارد.

خروجی:

  • مجموع اعداد: 500000500000
  • زمان اجرای برنامه: 0.0... ثانیه

نکته: time.perf_counter() برای اندازه‌گیری مدت زمان سپری‌شده مناسب است، چون برای سنجش بازه‌های زمانی با دقت بالا طراحی شده است. مقدار زمان اجرا ممکن است در هر بار اجرای برنامه متفاوت باشد.

سوال ۳۰؛ محاسبه حجم فایل در پایتون

برنامه‌ای بنویسید که مسیر یک فایل را دریافت کند و حجم آن را بر حسب بایت نمایش دهد.

پاسخ کد پایتون:

import os
file_path = input("مسیر فایل را وارد کنید: ")
if os.path.isfile(file_path):
    file_size = os.path.getsize(file_path)
    print("حجم فایل:", file_size, "بایت")
else:
    print("فایل موردنظر پیدا نشد.")

مراحل حل:

  1. ماژول os را برای کار با فایل‌ها و مسیرها وارد می‌کنیم.
  2. مسیر فایل را از کاربر دریافت می‌کنیم.
  3. با os.path.isfile() بررسی می‌کنیم که فایل موردنظر وجود داشته باشد.
  4. با os.path.getsize() حجم فایل را بر حسب بایت به دست می‌آوریم.
  5. در صورت وجود فایل، حجم آن را نمایش می‌دهیم؛ در غیر این صورت پیام خطا چاپ می‌شود.

نمونه ورودی:

  • مسیر فایل: example.txt

محاسبه:

  • اگر اندازه فایل example.txt برابر با 2048 بایت باشد، مقدار دریافت‌شده از os.path.getsize() برابر با 2048 خواهد بود.

خروجی:

  • حجم فایل: 2048 بایت

نکته: تابع os.path.getsize() اندازه فایل را بر حسب بایت برمی‌گرداند. اگر بخواهید حجم فایل را به کیلوبایت نمایش دهید، می‌توانید مقدار به‌دست‌آمده را بر 1024 تقسیم کنید.

نمونه سوالات خروجی کد پایتون با جواب

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

سوال ۳۱؛ خروجی کد پایتون با شرط

خروجی کد زیر چیست؟

پاسخ کد پایتون:

number = 15
if number % 2 == 0:
    print("زوج")
else:
    print("فرد")

پاسخ: فرد

مراحل حل:

  1. مقدار number برابر 15 است.
  2. باقی‌مانده تقسیم 15 بر 2 برابر 1 است.
  3. بنابراین شرط number % 2 == 0 برقرار نیست.
  4. در نتیجه، بخش else اجرا می‌شود.

نکته: عملگر % باقی‌مانده تقسیم را برمی‌گرداند. اگر باقی‌مانده تقسیم یک عدد بر 2 برابر صفر باشد، عدد زوج می‌باشد؛ در غیر این صورت عدد فرد است.

سوال ۳۲؛ خروجی کد پایتون با لیست

 خروجی کد زیر چیست؟

پاسخ کد پایتون:

numbers = [10, 20, 30, 40]
numbers.append(50)
numbers[1] = 25
print(numbers)
print(numbers[-1])

خروجی:

  • [10, 25, 30, 40, 50]
  • 50

مراحل حل:

  1. ابتدا لیست شامل [10, 20, 30, 40] است.
  2. با append(50) عدد 50 به انتهای لیست اضافه می‌شود.
  3. دستور numbers[1] = 25 مقدار عنصر دوم لیست را از 20 به 25 تغییر می‌دهد.
  4. بنابراین لیست نهایی [10, 25, 30, 40, 50] خواهد بود.
  5. اندیس -1 به آخرین عنصر لیست اشاره می‌کند؛ بنابراین مقدار 50 چاپ می‌شود.

نکته: در پایتون، اندیس لیست از 0 شروع می‌شود و اندیس -1 برای دسترسی به آخرین عنصر استفاده می‌شود.

سوال ۳۳؛ خروجی کد پایتون با حلقه

 خروجی کد زیر چیست؟

پاسخ کد پایتون:

total = 0
for number in range(1, 5):
    total += number
print(total)

مراحل حل:

  1. متغیر total ابتدا برابر 0 است.
  2. range(1, 5) اعداد 1 تا 4 را ایجاد می‌کند.
  3. در هر بار اجرای حلقه، مقدار number به total اضافه می‌شود.
  4. محاسبه به صورت 0 + 1 + 2 + 3 + 4 انجام می‌شود.
  5. در پایان، مقدار total برابر 10 خواهد بود.

خروجی: 10

نکته: عدد انتهایی در range() شامل محدوده نیست؛ بنابراین range(1, 5) شامل اعداد 1، 2، 3 و 4 است.

نمونه سوالات چهارگزینه ای پایتون با جواب

سوال‌های چهارگزینه‌ای پایتون برای مرور مفاهیم و سنجش میزان یادگیری مناسب هستند؛ در ادامه به بررسی این سوال‌ها می‌پردازیم و پاسخ صحیح همراه با توضیح کوتاه مشخص خواهد شد.

سوال ۳۴؛ عملگر تقسیم صحیح در پایتون

کدام گزینه نتیجه اجرای کد زیر را به‌درستی نشان می‌دهد؟

number = 17
result = number // 5
print(result)

گزینه‌ها:

الف) 2     

ب) 3     

ج) 3.4     

د) 4

پاسخ صحیح:

گزینه ب) 3

توضیح: عملگر // در پایتون برای تقسیم صحیح استفاده می‌شود و بخش اعشاری حاصل تقسیم را حذف می‌کند. بنابراین حاصل 17 // 5 برابر 3 است.

نکته: تفاوت // و / را در سوال های پایتون به خاطر داشته باشید؛ 17 / 5 مقدار 3.4 و 17 // 5 مقدار 3 را برمی‌گرداند.

سوال ۳۵؛ متد get در دیکشنری پایتون

 کدام گزینه نتیجه اجرای کد زیر را به‌درستی نشان می‌دهد؟

student = {
    "name": "Ali",
    "score": 18
}
print(student.get("age", 20))

 

گزینه‌ها:

الف) None

ب) 18

ج) 20

د) KeyError

پاسخ صحیح:

گزینه ج) 20

توضیح: کلید age در دیکشنری وجود ندارد، اما متد get() در صورت پیدا نکردن کلید، مقدار پیش‌فرضی را که به عنوان آرگومان دوم مشخص شده است برمی‌گرداند. در اینجا مقدار پیش‌فرض 20 است.

نکته: استفاده از get() برای دسترسی به کلیدهای احتمالیِ موجود در دیکشنری، از ایجاد KeyError در صورت نبودن کلید جلوگیری می‌کند.

سوال ۳۶؛ تفاوت لیست و تاپل در پایتون

 کدام گزینه درباره کد زیر صحیح است؟

numbers = [10, 20, 30]
values = (10, 20, 30)
numbers[0] = 50

 

گزینه‌ها:

الف) هر دو متغیر قابل تغییر هستند.
ب) فقط numbers قابل تغییر است.
ج) فقط values قابل تغییر است.
د) هیچ‌کدام قابل تغییر نیستند.

پاسخ صحیح:

گزینه ب) فقط numbers قابل تغییر است.

توضیح: numbers یک لیست (List) است و عناصر آن پس از ایجاد می‌توانند تغییر کنند. در مقابل، values یک تاپل (Tuple) است و عناصر آن قابل تغییر نیستند.

نکته: قابل‌تغییر بودن یکی از تفاوت‌های مهم لیست و تاپل در پایتون است. برای مثال، numbers[0] = 50 مجاز است، اما تغییر مستقیم values[0] باعث ایجاد TypeError می‌شود.

نمونه سوالات عیب یابی پایتون با جواب

در این بخش، خطاهای رایج در کدهای پایتون را بررسی می‌کنیم و علت ایجاد خطا و روش اصلاح کد را مشخص می‌کنیم. این تمرین‌ها به تقویت مهارت پیدا کردن و رفع خطا کمک می‌کنند.

سوال ۳۷؛ حذف عناصر لیست هنگام پیمایش در پایتون

 کد زیر قرار است تمام اعداد زوج را از لیست حذف کند، اما نتیجه مورد انتظار را نمی‌دهد. مشکل کجاست و کد را چگونه اصلاح می‌کنید؟

کد دارای مشکل:

numbers = [1, 2, 4, 6, 7, 8, 10]
for number in numbers:
    if number % 2 == 0:
        numbers.remove(number)
print(numbers)

پاسخ کد اصلاح‌شده:

numbers = [1, 2, 4, 6, 7, 8, 10]
numbers = [number for number in numbers if number % 2 != 0]
print(numbers)

مراحل حل:

  1. در کد اولیه، هنگام پیمایش numbers، هم‌زمان عناصر همان لیست حذف می‌شوند.
  2. با حذف یک عنصر، جای عناصر بعدی تغییر می‌کند و حلقه ممکن است بعضی عناصر را بررسی نکند.
  3. بنابراین استفاده از remove() روی همان لیستی که در حال پیمایش آن هستیم، روش مناسبی برای این کار نیست.
  4. در کد اصلاح‌شده، با List Comprehension فقط اعداد فرد را انتخاب می‌کنیم.
  5. لیست جدید جایگزین لیست قبلی می‌شود.

خروجی: [1, 7]

نکته: هنگام حذف چند عنصر از یک لیست، بهتر است در همان زمان روی خود لیست پیمایش نکنید. استفاده از List Comprehension یا ساخت یک لیست جدید، از تغییر هم‌زمان ساختار لیست جلوگیری می‌کند.

سوال ۳۸؛ مقدار پیش‌فرض قابل تغییر در پایتون

 کد زیر در هر بار فراخوانی تابع انتظار می‌رود فقط نام جدید را به لیست اضافه کند، اما خروجی غیرمنتظره است. علت مشکل چیست و چگونه باید آن را اصلاح کرد؟

کد دارای مشکل:

def add_name(name, names=[]):
    names.append(name)
    return names
print(add_name("Ali"))
print(add_name("Sara"))
print(add_name("Reza"))

خروجی کد اولیه:

  • ['Ali']
  • ['Ali', 'Sara']
  • ['Ali', 'Sara', 'Reza']

پاسخ کد اصلاح‌شده:

def add_name(name, names=None):
    if names is None:
        names = []
    names.append(name)
    return names
print(add_name("Ali"))
print(add_name("Sara"))
print(add_name("Reza"))

خروجی کد اصلاح‌شده:

  • ['Ali']
  • ['Sara']
  • ['Reza']

مراحل حل:

  1. در نسخه اولیه، names=[] فقط یک بار هنگام تعریف تابع ساخته می‌شود.
  2. در هر بار فراخوانی تابع، اگر آرگومان names ارسال نشود، همان لیست قبلی دوباره استفاده می‌شود.
  3. بنابراین نام‌های فراخوانی‌های قبلی داخل لیست باقی می‌مانند.
  4. برای جلوگیری از این رفتار، مقدار پیش‌فرض را None قرار می‌دهیم.
  5. سپس داخل تابع، اگر names برابر None بود، یک لیست جدید می‌سازیم.

نکته: استفاده از لیست، دیکشنری یا سایر اشیای قابل‌تغییر به‌عنوان مقدار پیش‌فرض تابع می‌تواند باعث حفظ تغییرات بین فراخوانی‌های مختلف شود. استفاده از None و ساخت شیء جدید داخل تابع، الگوی رایج برای جلوگیری از این مشکل است.

سوال ۳۹؛ تغییر نوع داده هنگام محاسبه در پایتون

 کد زیر برای محاسبه میانگین نمره‌ها نوشته شده، اما با خطا اجرا می‌شود. مشکل کجاست و چگونه باید آن را اصلاح کرد؟

کد دارای مشکل:

scores = ["18", "16", "20", "15"]
total = sum(scores)
average = total / len(scores)
print("میانگین:", average)

پاسخ کد اصلاح‌شده:

scores = ["18", "16", "20", "15"]
scores = [float(score) for score in scores]
total = sum(scores)
average = total / len(scores)
print("میانگین:", average)

مراحل حل:

  1. مقادیر داخل scores به صورت رشته (str) ذخیره شده‌اند، نه عدد.
  2. تابع sum() برای جمع کردن مقادیر عددی استفاده می‌شود و نمی‌تواند رشته‌ها را مستقیما با هم جمع کند.
  3. بنابراین ابتدا با List Comprehension و float()، تمام مقادیر رشته‌ای را به عدد اعشاری تبدیل می‌کنیم.
  4. سپس sum() مجموع نمره‌ها را محاسبه می‌کند.
  5. در پایان، مجموع بر تعداد نمره‌ها تقسیم می‌شود.

خروجی: میانگین: 17.25

نکته: دریافت داده با input() نیز به صورت رشته انجام می‌شود؛ بنابراین هنگام انجام محاسبات ریاضی، معمولا باید ورودی را با int() یا float() به نوع عددی تبدیل کنید.

سوالات مفهومی پایتون با جواب

سوال های مفهومی به درک بهتر نحوه عملکرد پایتون کمک می‌کنند و مفاهیم مهم این زبان را بدون نیاز به نوشتن برنامه‌های طولانی مرور می‌کنند.

سوال ۴۰؛ تفاوت کپی سطحی و ارجاع در پایتون

 چرا تغییر یک لیست در کد زیر روی متغیر دیگر اثر می‌گذارد، اما در حالت دوم این اتفاق نمی‌افتد؟

کد:

numbers = [10, 20, 30]
reference = numbers
copy_numbers = numbers[:]
reference.append(40)
copy_numbers.append(50)
print(numbers)
print(reference)
print(copy_numbers)

پاسخ:

  • [10, 20, 30, 40]
  • [10, 20, 30, 40]
  • [10, 20, 30, 50]

توضیح:

  • در reference = numbers، متغیر reference به همان شیء لیست numbers اشاره می‌کند؛ بنابراین تغییر reference، لیست اصلی را نیز تغییر می‌دهد.
  • در copy_numbers = numbers[:]، یک کپی سطحی از لیست ساخته می‌شود؛ بنابراین اضافه کردن 50 به آن، لیست اصلی را تغییر نمی‌دهد.

نکته:
کپی سطحی برای لیست‌های ساده مناسب است، اما اگر لیست شامل اشیای تو‌در‌تو و قابل‌تغییر باشد، ممکن است عناصر داخلی همچنان بین کپی و لیست اصلی مشترک باشند.

سوال ۴۱؛ تفاوت is و == در پایتون

چرا ممکن است دو شیء مقدار یکسانی داشته باشند اما نتیجه is برای آن‌ها False باشد؟

کد:

numbers1 = [1, 2, 3]
numbers2 = [1, 2, 3]
print(numbers1 == numbers2)
print(numbers1 is numbers2)

خروجی:

  • True
  • False

توضیح:

  1. عملگر == بررسی می‌کند که مقدار یا محتوای دو شیء برابر است یا نه. چون هر دو لیست دقیقاً شامل [1, 2, 3] هستند، نتیجه True است.
  2. اما is بررسی می‌کند که آیا دو متغیر به همان شیء در حافظه اشاره می‌کنند یا خیر. در این کد، دو لیست جداگانه ساخته شده‌اند؛ بنابراین با وجود محتوای یکسان، دو شیء متفاوت هستند و نتیجه False می‌شود.
  3. برای درک بهتر:
numbers1 = [1, 2, 3]
numbers2 = numbers1
print(numbers1 == numbers2)
print(numbers1 is numbers2)

 

در این حالت هر دو نتیجه True هستند، زیرا numbers2 به همان شیئی اشاره می‌کند که numbers 1 به آن اشاره دارد.

نکته:
برای مقایسه مقدار معمولا از == و برای بررسی هویت یک شیء از is استفاده می‌شود. استفاده از is برای مقایسه معمول مقادیر، روش درستی نیست.

سوال ۴۲؛ ویژگی کلاس و ویژگی شیء در پایتون: خروجی کد زیر چیست و چرا تغییر ویژگی name روی شیء دیگر تاثیر نمی‌گذارد، اما تغییر school روی هر دو شیء دیده می‌شود؟

کد:

class Student:
    school = "Python Academy"
    def __init__(self, name):
        self.name = name
student1 = Student("Ali")
student2 = Student("Sara")
student1.name = "Reza"
Student.school = "Code Academy"
print(student1.name)
print(student2.name)
print(student1.school)
print(student2.school)

خروجی:

  • Reza
  • Sara
  • Code Academy
  • Code Academy

توضیح:

  1. ویژگی name با استفاده از self.name داخل متد __init__ ساخته شده است؛ بنابراین هر شیء مقدار مستقل خودش را برای این ویژگی دارد. تغییر student1.name فقط ویژگی همان شیء را تغییر می‌دهد و روی student2.name اثری ندارد.
  2. اما school مستقیماً داخل کلاس Student تعریف شده است و یک ویژگی کلاس (Class Attribute) محسوب می‌شود. تا زمانی که شیء ویژگی مستقلی با همین نام نداشته باشد، هر دو شیء مقدار school را از کلاس دریافت می‌کنند.
  3. وقتی می‌نویسیم: Student.school = "Code Academy"
  4. ویژگی کلاس تغییر می‌کند؛ بنابراین هر دو شیء مقدار جدید school را مشاهده می‌کنند.

نکته: ویژگی‌های نمونه با self به هر شیء اختصاص دارند، اما ویژگی‌های کلاس به خود کلاس تعلق دارند و می‌توانند بین نمونه‌های آن کلاس مشترک باشند.

دانلود نمونه سوالات پایتون با جواب PDF

اگر می‌خواهید نمونه سوالات برنامه نویسی پایتون با جواب را برای مطالعه و تمرین ذخیره کنید، نسخه PDF می‌تواند دسترسی به سوال‌ها را ساده کند. فایل PDF این مجموعه را می‌توانید برای مرور مباحث، تمرین حل مسئله و آمادگی آزمون در اختیار داشته باشید و در زمان‌های مختلف به سوال ها مراجعه کنید.

 

تیم تحریریه رادمان با ارائه مقالات آموزشی و کاربردی در زمینه فناوری، کسب‌وکار، مهارت‌های فنی و توسعه فردی، تلاش می‌کند دانش به‌روز و عملی را در اختیار کاربران قرار دهد. هدف ما تولید محتوای مفید و قابل اجرا برای کمک به رشد و پیشرفت شما در دنیای دیجیتال و حرفه‌ای است.

رادمان نویسنده مقاله : رادمان

اشتراک گذاری مقاله :

  • eitaa rubika bale
  • سوالات متداول نمونه سوالات برنامه نویسی پایتون با جواب تستی و تشریحی

    1برای شروع حل نمونه سوالات پایتون چه مباحثی را باید بلد باشیم؟

    برای شروع، آشنایی با متغیرها، انواع داده، ورودی و خروجی، شرط‌ها، حلقه‌ها و ساختارهای داده پایه مانند لیست و دیکشنری کافی است.

    2چطور از نمونه سوالات پایتون برای آمادگی آزمون استفاده کنیم؟

    می‌توانید ابتدا سوال ها را بدون مشاهده جواب حل کنید، زمان مشخصی برای پاسخ‌گویی در نظر بگیرید و در پایان پاسخ‌ها را بررسی کنید. سوال هایی که اشتباه حل کرده‌اید، برای مرور مجدد مناسب‌تر هستند.

    3آیا حل سوالات خروجی کد پایتون به یادگیری برنامه نویسی کمک می‌کند؟

    بله، این سوال ها باعث می‌شوند ترتیب اجرای دستورات، تغییر مقدار متغیرها و رفتار ساختارهایی مانند شرط، حلقه و لیست را دقیق‌تر بررسی کنید و درک بهتری از کد داشته باشید.

    4آیا نمونه سوالات پایتون برای یادگیری برنامه نویسی مناسب هستند؟

    بله، حل مسئله در کنار یادگیری مباحث پایتون به درک بهتر مفاهیم و تقویت مهارت کدنویسی کمک می‌کند. بهتر است ابتدا سوال را بدون دیدن پاسخ حل کنید و سپس راه‌حل خود را با پاسخ مقایسه کنید.

     

    5نمونه سوالات پایتون با جواب برای چه سطحی مناسب هستند؟

    این مجموعه از سوال های مقدماتی تا پیشرفته را پوشش می‌دهد؛ بنابراین می‌توانید بر اساس سطح فعلی خود، از سوال های ساده‌تر شروع کرده و به تمرین‌های چالش‌برانگیزتر برسید.

    نظرات کاربران و ارسال دیدگاه
      0
    ارسال دیدگاه
    امتیاز شما به این مقاله  0   

    نظرات کاربران

      0
    جدیدترین مقالات
  • مشاوره رایگان True پیش نمایش