راه
۸ کیو· خیلی سادهمبتدیPYTHON۴ ثانیه · ۲۵۶ مگابایت

چند روزشه؟

سجاد در تاریخ 1999-01-14 میلادی متولد شده‌است. در این تمرین، هدف پیاده‌سازی تابعی است که یک تاریخ (به‌صورت رشته) را به‌عنوان ورودی دریافت کند و دو کار را انجام دهد و تعداد روزهای زندگی سجاد تا آن تاریخ را برگرداند یا این‌که مشخص کند سجاد تا آن زمان هنوز به دنیا نیامده‌است.


📌 تابع day_calculator

تابعی به نام day_calculator پیاده‌سازی کنید. این تابع باید یک تاریخ را به‌صورت رشته (مانند فرمت مثال‌های زیر) به عنوان ورودی دریافت کند. عملکرد تابع به این صورت خواهد بود:

  • اگر تاریخ ورودی قبل از تاریخ تولد سجاد باشد، تابع باید عبارت Not yet born را برگرداند.
  • در غیر این صورت، تابع باید تعداد روزهای زندگی سجاد تا آن تاریخ را به صورت عدد صحیح برگرداند.

تاریخ تولد سجاد: 1999-01-14


🎯 نمونه

نمونه‌ی ۱

text
>>> day_calculator('2005-01-06')
2184

نمونه‌ی ۲

text
>>> day_calculator('2018-10-12')
7211

نمونه‌ی ۳

text
>>> day_calculator('1118-10-13')
Not yet born

💡 چالش‌های حل تمرین

چگونه ورودی را به یک datetime تبدیل کنم؟

برای این‌که بتوانید با تاریخ ورودی به‌عنوان یک شیء datetime کار کنید، باید آن را به این نوع تبدیل کنید. می‌توانید از تابع datetime.strptime() برای این کار استفاده کنید.

مثال:

python
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)

خروجی:

python
day: 6
month: 1
year: 2005

برای فرمت YYYY-MM-DD (مانند 2005-01-06)، الگوی %Y-%m-%d را باید استفاده کنید.


چگونه datetime روز تولد سجاد را بسازم؟

برای انجام محاسبات و مقایسه‌ها، شما به یک شیء datetime برای تاریخ تولد سجاد هم نیاز دارید:

python
from datetime import datetime

sajjad_birth_date = datetime.strptime("1999-01-14", '%Y-%m-%d')

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

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

python
# تعداد روزهای زندگی سجاد تا یک تاریخ مشخص
days_alive = (date - sajjad_birth_date).days
  • اگر days_alive منفی بود → سجاد هنوز به دنیا نیامده → برگرداند "Not yet born"
  • در غیر این صورت → سجاد به دنیا آمده → برگرداند days_alive

⚠️ چالش‌های داوری

❌ چرا کد در سیستم خودم کار می‌کند اما در اینجا نمره صفر می‌گیرد؟

  • نام تابع باید دقیقاً day_calculator باشد.
  • فقط تابع day_calculator را پیاده‌سازی کنید. نیازی به input() یا print() خارج از تابع نیست.
  • خروجی تابع باید با return برگردانده شود.
  • نیازی به فراخوانی تابع نیست. سیستم داوری به‌صورت خودکار آن را تست می‌کند.

💡 راهنمایی نهایی

ساختار کلی تابع به این شکل است:

python
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'

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود