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

تشخیص خطای نحوی و زمان اجرا در پایتون؛ از پیام تا علت

خواندن خطاهای پایتون و ساخت نمونه بازتولید · 0٪

دیباگ یعنی فاصله بین رفتار مورد انتظار و رفتار واقعی رو پیدا و اصلاح کنیم. اولین قدم، تشخیص نوع مسئله است. خطای نحوی وقتی اتفاق می‌افته که پایتون اصلاً نتونه ساختار نوشته رو بفهمه؛ مثلاً دونقطه یک if جا افتاده. خطای زمان اجرا بعد از شروع اجرای کد رخ می‌ده؛ مثل تقسیم بر صفر. برنامه‌ای هم ممکنه بدون هیچ استثنایی اجرا بشه ولی جواب اشتباه بده که بهش باگ منطقی می‌گیم.

در مثال، ساختار تابع درسته اما ورودی صفر باعث خطای زمان اجرا می‌شه. خطای رایج اینه که همه مشکلات رو با اضافه‌کردن try/except بپوشونیم. مدیریت استثنا، ساختار نحوی خراب رو درست نمی‌کنه و جواب منطقی غلط رو هم قابل اعتماد نمی‌کنه. اول پیام و ورودی ایجادکننده مشکل رو بخون. بعد با یک تغییر کوچک علت رو بررسی کن؛ تغییر هم‌زمان چند بخش، تشخیص اثر اصلاح رو سخت می‌کنه.

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

def divide(a, b):
    return a / b

# divide(8, 0) خطای ZeroDivisionError می‌دهد.
assert divide(8, 2) == 4

حالا نوبت توئه: تابع divide را بررسی کن: ورودی (8, 2) خروجی 4 می‌دهد و ورودی (8, 0) در زمان اجرا ZeroDivisionError دارد. این گام آموزشی است؛ تفاوت این مشکل با if بدون دونقطه و با یک فرمول اشتباه را تشخیص بده. نمونه را بدون ورودی تعاملی بخوان.

فعالیت شما

تابع divide را بررسی کن: ورودی (8, 2) خروجی 4 می‌دهد و ورودی (8, 0) در زمان اجرا ZeroDivisionError دارد. این گام آموزشی است؛ تفاوت این مشکل با if بدون دونقطه و با یک فرمول اشتباه را تشخیص بده. نمونه را بدون ورودی تعاملی بخوان.

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

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

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

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

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

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

def divide(a, b):
    return a / b

assert divide(8, 2) == 4