اندازه ورودی خودش یک مرزه. فهرست خالی هیچ عضوی برای اندیسگذاری نداره و فهرست تکعضوی ممکنه حلقهای با محدوده اشتباه رو آشکار کنه. برای بسیاری از تابعهای فهرستی، این دو حالت باید قبل از مثالهای بزرگ بررسی بشن. انتخاب انتظار هم از قرارداد میاد؛ برای جمع، خالی صفره اما برای آخرین عضو شاید None تعریف کنیم.
مثال یک تابع جمع رو روی خالی و تکعضوی آزمایش میکنه. خطای رایج نوشتن فقط فهرست طولانیه، چون جواب بزرگتر «واقعیتر» به نظر میرسه. ورودی کوچک مسیر برنامه رو ساده میکنه و وقتی شکست رخ بده علت قابل فهمتره. با یک عضو میتونی ببینی عدد اول حذف نشده و با خالی میفهمی مقدار اولیه مناسب بوده یا نه. در این درس به عملکرد زمانی یا ورودی میلیونعضوی نمیپردازیم؛ هدف، پوشش قرارداد با نمونههای کوچک و دقیق است. یک تست خوب با کمترین اطلاعات اضافه، تفاوت رفتار درست و خراب رو روشن میکنه.
✍️ مثال حلشده:
def total(values):
return sum(values)
assert total([]) == 0
assert total([7]) == 7
assert total([2, 5]) == 7
حالا نوبت توئه: نمونه reverse_items فهرست تازه معکوس برمیگرداند؛ []=>[]، [7]=>[7] و [2,5]=>[5,2]. این گام آموزشی است؛ توضیح بده چرا تست خالی، تکعضوی و دوعضوی هرکدام رفتار متفاوتی را میسنجند. خود ورودی نباید تغییر کند و عضوها عدد صحیحاند.
فعالیت شما
نمونه reverse_items فهرست تازه معکوس برمیگرداند؛ []=>[]، [7]=>[7] و [2,5]=>[5,2]. این گام آموزشی است؛ توضیح بده چرا تست خالی، تکعضوی و دوعضوی هرکدام رفتار متفاوتی را میسنجند. خود ورودی نباید تغییر کند و عضوها عدد صحیحاند.