نمونه حداقلی یعنی کوچکترین ورودی و کمترین کدی که هنوز رفتار مسئلهدار رو نشون میده. هدف حذف اطلاعات اضافیه، نه حذف شرطی که باگ رو ایجاد میکنه. برای خطای دسترسی به فهرست، لازم نیست یک برنامه بزرگ یا فایل واقعی رو همراه داشته باشیم؛ یک تابع کوتاه و فهرست خالی میتونن مسئله رو کاملاً بازتولید کنن.
مثال، اولین عضو رو فقط وقتی میخونه که فهرست خالی نباشه. توی فعالیت همین تصمیم رو برای آخرین عضو مینویسی. خطای رایج امتحانکردن فقط ورودیهای معمولی مثل سه عدد است؛ اونها خطای مرزی فهرست خالی رو آشکار نمیکنن. از کوچکترین حالت شروع کن و بعد یک عضو و چند عضو رو اضافه کن تا اصلاح، رفتار عادی رو خراب نکرده باشه. این تمرین فقط فهرستهای JSON رو میگیره و نیاز به input یا چاپ نداره. مقدار None در خروجی یک تصمیم مشخص برای نبودن عضو است و نباید با رشته "None" جایگزین بشه.
✍️ مثال حلشده:
def first_or_none(items):
if not items:
return None
return items[0]
assert first_or_none([]) is None
حالا نوبت توئه: تابع last_or_none(items) را بنویس: برای فهرست خالی None واقعی و برای فهرست غیرخالی آخرین عضو را برگردان. [] باید None، [8] باید 8 و [1,2,3] باید 3 بدهد. ترتیب و محتوای ورودی را تغییر نده؛ عضوها عدد یا رشتهاند و چاپ جای return نیست.
فعالیت شما
تابع last_or_none(items) را بنویس: برای فهرست خالی None واقعی و برای فهرست غیرخالی آخرین عضو را برگردان. [] باید None، [8] باید 8 و [1,2,3] باید 3 بدهد. ترتیب و محتوای ورودی را تغییر نده؛ عضوها عدد یا رشتهاند و چاپ جای return نیست.