در اینجا پاسخ کامل و دقیق برای تمام سوالات امتحان نهایی شما آورده شده است:
### ۱. خروجی کد تابع format_name
پاسخ: Dr. John Smith
* توضیح: در فراخوانی تابع، مقدار title به صورت Dr. تغییر داده شده است، اما چون برای last مقداری ارسال نشده، همان مقدار پیشفرض یعنی Smith استفاده میشود.
### ۲. خروجی کد کلاس Animal و Dog
پاسخ: Rex barks
* توضیح: این یک مثال از Polymorphism (چندریختی) است. چون شیء d از کلاس Dog ساخته شده، متد speak کلاس فرزند (Dog) جایگزین متد کلاس پدر شده است.
### ۳. توابع ماژول math
پاسخ: تابع math.pow(2, 3) مقدار 8.0 رو برمیگردونه.
* توضیح:
* math.pow همیشه دو ورودی میگیرد.
* خروجی math.sqrt همیشه از نوع اعشاری (float) است، نه رشته.
* math.sqrt(9) مقدار 3.0 را برمیگرداند.
### ۴. اصلاح کد خواندن فایل (سوال تشریحی)
کد اصلاح شده:
### ۵. خروجی بلوک try...except
پاسخ: Error happened
* توضیح: تبدیل رشته 'x' به عدد صحیح (int('x')) باعث بروز خطای ValueError میشود و برنامه مستقیماً به بخش except میرود.
### ۶. تغییر در دیتافریم با df.loc
پاسخ: به نمره دانشآموزهایی که کمتر از ۱۰ گرفتن، ۱ نمره اضافه میشه.
* توضیح: شرط df['score'] < 10 سطرهایی با نمره زیر ۱۰ را انتخاب کرده و عملیات += 1 فقط روی آنها اعمال میشود.
### ۷. عملکرد تابع get_interval
پاسخ: تعداد روزهایی که از تاریخ دادهشده تا امروز گذشته رو حساب میکنه.
* توضیح: تفاضل دو شیء date در پایتون یک شیء از نوع timedelta برمیگرداند که نشاندهنده اختلاف زمانی (روز، ساعت و...) است.
### ۸. میانگین سن با Pandas (سوال تشریحی)
کد پیشنهادی:
### ۹. عنصر لیست با اندیس منفی
پاسخ: h
* توضیح: در لیست ['P', 'y', 't', 'h', 'o', 'n'] اندیسهای منفی از آخر شروع میشوند: n است 1- ، o است 2- و h است 3-.
### ۱۰. خروجی اختلاف تاریخها
پاسخ: 9
* توضیح: اختلاف بین ۱۰ می و ۱ می برابر با ۹ روز است.
### ۱۱. بخش نمایش نمودار در pygal
پاسخ: chart.render()
* توضیح: متد render() وظیفه تولید نهایی نمودار و نمایش آن را بر عهده دارد.
### ۱۲. پیادهسازی کلاس Alarm (سوال تشریحی)
کد اصلاح
import pandas as pd
df = pd.read_csv('students.csv')
average = df['age'].mean()
سوال ۸
سوال ۴
class Alarm:
def init(self, time, message):
self.time = time
self.message = message
a = Alarm('07:30', 'Wake up!')
print(a.time, a.message)
سوال ۱۲
در ادامه، پاسخ بخش دوم امتحان شما (سوالات ۱۳ تا ۲۰) را مشاهده میکنید:
### ۱۳. دسترسی به عدد ۵ در آرایه NumPy
پاسخ: a[1, 1]
* توضیح: در آرایههای دو بعدی، اندیس اول مربوط به ردیف و اندیس دوم مربوط به ستون است. عدد ۵ در ردیف دوم (اندیس ۱) و ستون دوم (اندیس ۱) قرار دارد.
### ۱۴. خروجی تابع filter
پاسخ: [15, 20] (نکته: در گزینههای شما گزینهای که دقیقاً [15, 20] باشد نیست، اما نزدیکترین منطق به خروجی صحیح است. با توجه به کد، خروجی باید اعداد بزرگتر از ۱۰ باشند.)
* توضیح: تابع filter اعدادی را انتخاب میکند که شرط x > 10 برای آنها درست باشد. پس ۱۵ و ۲۰ انتخاب میشوند.
### ۱۵. متد describe() در Pandas
پاسخ: همه موارد
* توضیح: متد describe() اطلاعات آماری جامعی شامل میانگین (mean)، انحراف معیار (std)، کمترین مقدار (min)، بیشترین مقدار (max) و چارکها (quartiles) را نمایش میدهد.
### ۱۶. تابع get_middle() (سوال تشریحی)
کد پیشنهادی
### ۱۷. مقدار c.count (سوال مفهومی)
پاسخ: 0 (با توجه به یک خطای رایج در کد!)
* توضیح بسیار مهم: در کدی که نوشته شده، نام متد سازنده init است، در حالی که در پایتون باید init (با دو عدد زیرخط در هر طرف) باشد. چون متد سازنده صحیح تعریف نشده، ویژگی self.count هرگز ساخته نمیشود و در واقع این کد هنگام اجرا با AttributeError مواجه میشود. اما اگر فرض کنیم هدف سوال صرفاً شمارش است و init درست نوشته شده بود، پاسخ ۵ میشد. (با توجه به ساختار آزمونها، احتمالاً نویسنده فراموش کرده __ را بگذارد و پاسخ مد نظر ۵ است).
### ۱۸. خروجی تابع map و split
پاسخ: ['ALI', 'REZA', 'SARA']
* توضیح: کد ابتدا رشته را از محل : جدا میکند (split)، بخش اول (نام) را برمیدارد و سپس آن را به حروف بزرگ (upper) تبدیل میکند.
### ۱۹. پیادهسازی متد switch در کلاس Lamp
کد
### ۲۰. فیلتر کردن دادهها با Pandas (سوال تشریحی)
کد پیشنهادی:
def get_middle(lst):
length = len(lst)
if length % 2 != 0: # اگر فرد بود
middle_index = length // 2
return lst[middle_index]
else: # اگر زوج بود
return 0
سوال ۱۶
class Lamp:
def init(self): # دقت کنید init صحیح است
self.is_on = False
def switch(self):
self.is_on = not self.is_on
سوال ۱۹
import pandas as pd
df = pd.read_csv('reports.csv')
# فیلتر کردن بر اساس معدل 20 و غیبت 0
result = df[(df['score'] == 20) & (df['absence'] == 0)]
print(result)
سوال ۲۰
من اینارو زدم نمره ۸۹ گرفتم
بازم میخوای بزن چت جی پی تی گوگل که یه وقت اشتباهی نباشه
`