چند روزشه؟
سجاد در تاریخ 1999-01-14 میلادی متولد شدهاست. در این تمرین، هدف پیادهسازی تابعی است که یک تاریخ (بهصورت رشته) را بهعنوان ورودی دریافت کند و دو کار را انجام دهد و تعداد روزهای زندگی سجاد تا آن تاریخ را برگرداند یا اینکه مشخص کند سجاد تا آن زمان هنوز به دنیا نیامدهاست.
📌 تابع day_calculator
تابعی به نام day_calculator پیادهسازی کنید. این تابع باید یک تاریخ را بهصورت رشته (مانند فرمت مثالهای زیر) به عنوان ورودی دریافت کند. عملکرد تابع به این صورت خواهد بود:
- اگر تاریخ ورودی قبل از تاریخ تولد سجاد باشد، تابع باید عبارت
Not yet bornرا برگرداند. - در غیر این صورت، تابع باید تعداد روزهای زندگی سجاد تا آن تاریخ را به صورت عدد صحیح برگرداند.
تاریخ تولد سجاد: 1999-01-14
🎯 نمونه
نمونهی ۱
>>> day_calculator('2005-01-06')
2184
نمونهی ۲
>>> day_calculator('2018-10-12')
7211
نمونهی ۳
>>> day_calculator('1118-10-13')
Not yet born
💡 چالشهای حل تمرین
چگونه ورودی را به یک datetime تبدیل کنم؟
برای اینکه بتوانید با تاریخ ورودی بهعنوان یک شیء datetime کار کنید، باید آن را به این نوع تبدیل کنید. میتوانید از تابع datetime.strptime() برای این کار استفاده کنید.
مثال:
from datetime import datetime
date = datetime.strptime('2005-01-06', '%Y-%m-%d')
print("day:", date.day)
print("month:", date.month)
print("year:", date.year)
خروجی:
day: 6
month: 1
year: 2005
برای فرمت
YYYY-MM-DD(مانند2005-01-06)، الگوی%Y-%m-%dرا باید استفاده کنید.
چگونه datetime روز تولد سجاد را بسازم؟
برای انجام محاسبات و مقایسهها، شما به یک شیء datetime برای تاریخ تولد سجاد هم نیاز دارید:
from datetime import datetime
sajjad_birth_date = datetime.strptime("1999-01-14", '%Y-%m-%d')
تعداد روزهای زندگی سجاد را منفی به دست آوردم. مشکل از کجاست؟
برای محاسبهی تعداد روزهای بین دو تاریخ datetime، میتوانید آنها را از هم کم کنید. نتیجهی این تفریق یک شیء timedelta خواهد بود.
# تعداد روزهای زندگی سجاد تا یک تاریخ مشخص
days_alive = (date - sajjad_birth_date).days
- اگر
days_aliveمنفی بود → سجاد هنوز به دنیا نیامده → برگرداند"Not yet born"- در غیر این صورت → سجاد به دنیا آمده → برگرداند
days_alive
⚠️ چالشهای داوری
❌ چرا کد در سیستم خودم کار میکند اما در اینجا نمره صفر میگیرد؟
- نام تابع باید دقیقاً
day_calculatorباشد.- فقط تابع
day_calculatorرا پیادهسازی کنید. نیازی بهinput()یاprint()خارج از تابع نیست.- خروجی تابع باید با
returnبرگردانده شود.- نیازی به فراخوانی تابع نیست. سیستم داوری بهصورت خودکار آن را تست میکند.
💡 راهنمایی نهایی
ساختار کلی تابع به این شکل است:
from datetime import datetime
def day_calculator(date_str):
# تاریخ تولد سجاد
sajjad_birth = datetime.strptime("1999-01-14", "%Y-%m-%d")
# تبدیل تاریخ ورودی به datetime
input_date = datetime.strptime(date_str, "%Y-%m-%d")
# محاسبهی اختلاف روزها
days = (input_date - sajjad_birth).days
# بررسی شرط
if days < 0:
return "Not yet born"
return days
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید و با ورودیهای مختلف تست کنید. به یاد داشته باشید که تابع باید مقدار را برگرداند (return)، نه چاپ کند!
نمونهها
day_calculator('2005-01-06')2184
day_calculator('2018-10-12')7211
day_calculator('1118-10-13')'Not yet born'
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود