حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

دیباگ شرط در پایتون؛ تفاوت بزرگ‌تر و بزرگ‌ترمساوی

باگ‌های منطقی پایتون؛ شرط، حلقه و بازگشت · 0٪

باگ منطقی لزوماً traceback تولید نمی‌کنه. برنامه اجرا می‌شه و مقدار برمی‌گردونه، اما با قانون مسئله هماهنگ نیست. شرط‌های مرزی از رایج‌ترین محل‌های این باگ هستن. تفاوت > و >= فقط یک کاراکتره، ولی روی خود مقدار مرز اثر مستقیم داره. برای بررسی باید جمله مسئله رو به یک مقایسه دقیق تبدیل کنیم.

مثال، حداقل امتیاز قبولی رو با بزرگ‌ترمساوی می‌سنجه. اگر به‌اشتباه > بنویسیم، کسی که دقیقاً روی مرزه رد می‌شه. خطای رایج امتحان‌کردن فقط یک عدد خیلی بالا و یک عدد خیلی پایینه؛ هر دو پیاده‌سازی ممکنه در اون مثال‌ها یکسان جواب بدن. به‌جاش سه ورودی انتخاب کن: یکی درست زیر مرز، خود مرز و یکی درست بالاتر. برای این درس عددهای صحیح کافی‌اند و بحث ورودی نامعتبر نداریم. معنی True و False رو هم با جمله قرارداد مقایسه کن، نه با اسم تابع به‌تنهایی؛ ممکنه اسم خوب باشه ولی شرط داخل تابع غلط نوشته شده باشه.

✍️ مثال حل‌شده:

def passed(score):
    return score >= 50

assert passed(49) is False
assert passed(50) is True
assert passed(51) is True

حالا نوبت توئه: تابع is_adult(age) برای سن صحیح نامنفی، در ۱۸ سال و بیشتر True و زیر ۱۸ False می‌دهد. مثال‌های 17،18،19 را بررسی کن و بگو چرا شرط >18 رفتار دقیق مرز را خراب می‌کند. این گام آموزشی است و قرار نیست مقدارهای خارج از قرارداد را مدیریت کنی.

فعالیت شما

تابع is_adult(age) برای سن صحیح نامنفی، در ۱۸ سال و بیشتر True و زیر ۱۸ False می‌دهد. مثال‌های 17،18،19 را بررسی کن و بگو چرا شرط >18 رفتار دقیق مرز را خراب می‌کند. این گام آموزشی است و قرار نیست مقدارهای خارج از قرارداد را مدیریت کنی.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def is_adult(age):
    return age >= 18