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

خواندن شماره خط در خطای پایتون؛ محل مشاهده باگ

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

شماره خط کمک می‌کنه سریع به محل توقف برسی، اما همیشه همون خط علت اصلی نیست. ممکنه یک مقدار اشتباه چند خط بالاتر ساخته شده باشه و تازه هنگام تبدیل یا محاسبه، خطا آشکار بشه. پس شماره خط رو نقطه شروع بررسی بدون، نه حکم نهایی درباره علت. کدهای سؤال شماره خط واقعی دارن و خط خالی رو هم باید در شمارش حساب کنی.

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

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

text = "سیب"
# int(text) در همین عمل تبدیل ValueError می‌دهد.
number = int("12")
assert number == 12

حالا نوبت توئه: کد سؤال دقیقاً چهار خط دارد: def convert(): در خط ۱، text = "bad" در خط ۲، return int(text) در خط ۳ و convert() در خط ۴. کدام خط داخل تابع محل ایجاد ValueError است؟ خط فراخوانی را از خط عملی که تبدیل را انجام می‌دهد جدا کن.

فعالیت شما

کد سؤال دقیقاً چهار خط دارد: def convert(): در خط ۱، text = "bad" در خط ۲، return int(text) در خط ۳ و convert() در خط ۴. کدام خط داخل تابع محل ایجاد ValueError است؟ خط فراخوانی را از خط عملی که تبدیل را انجام می‌دهد جدا کن.

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

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

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

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

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

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

def convert():
    text = "bad"
    return int(text)
convert()

گزینه‌های پیش‌بینی خروجی

  1. خط ۳؛ تبدیل متن نامعتبر به int
  2. خط ۲؛ ساخت هر رشته نامعتبر است
  3. خط ۱؛ تعریف تابع بدون آرگومان مجاز نیست