Python · از صفر

شمارندهٔ روز تا موعد

تمرین مرحلهٔ 19: پردازش تاریخ ISO با کتابخانهٔ استاندارد datetime؛ بدون نیاز به یادگیری ماشین و با ارزیابی واقعی خروجی.

۵۶ دقیقه · ۱۱۵ XP · datetime · date · timedelta

هدف و راهنمای انجام

پردازش تاریخ ISO با کتابخانهٔ استاندارد datetime

ورودی

request.json: today و due: رشتهٔ تاریخ میلادی YYYY-MM-DD؛ days برابر due منهای today است. تاریخ ناممکن: invalid_date.

خروجی

result.json مطابق ساختار مثال؛ تمام کلیدهای نشان‌داده‌شده الزامی هستند.

  1. مقالهٔ پیش‌نیاز را بخوانید و نمونه‌کد آن را جدا اجرا کنید.
  2. fromisoformat تاریخ با شکل YYYY-MM-DD را می‌خواند. تاریخ due را از today کم می‌کنیم و days را از نتیجه می‌گیریم. مقدار مثبت یعنی موعد در آینده است، صفر یعنی امروز و مقدار منفی یعنی موعد گذشته. overdue فقط وقتی درست است که فاصله منفی باشد. عبور از مرز ماه یا سال به‌صورت خودکار محاسبه می‌شود.
  3. در main.py تابع solve(data) را تکمیل کنید؛ بخش خواندن request.json و نوشتن result.json را حفظ کنید.
  4. با ورودی نمونه و حالت‌های مرزیِ راهنما اجرا کنید؛ سپس ارزیابی را بزنید.

Python 3؛ دادهٔ ورودی طبق قرارداد است. تابع solve باید برای همهٔ ورودی‌ها کار کند، نه فقط مثال. کتابخانهٔ خارجی لازم نیست؛ ماژول‌های استاندارد همراه Python 3 هستند.

مثال ورودی و خروجی

{
    "input": {
        "today": "2024-02-28",
        "due": "2024-03-01"
    },
    "output": {
        "days": 2,
        "overdue": false
    }
}

معیارهای موفقیت

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

کتابخانه‌ها: json, pathlib

پیش‌نیاز و ترتیب یادگیری

  • خطایابی در پایتون؛ try و except هدفمند
تاریخ در پایتون؛ محاسبهٔ فاصلهٔ روزها ←

برای شروع، مقالهٔ بالا را بخوانید. Python 3 و کتابخانه‌های موردنیاز در میزکار آماده‌اند؛ نصب آنلاین از ترمینال میزکار لازم نیست.

برای نوشتن و اجرای کد وارد شوید