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

پیش‌بینی ValueError در پایتون؛ متن معتبر با مقدار نامناسب

استثناهای رایج پایتون و مدیریت دقیق خطا · 0٪

ValueError با TypeError فرق داره. گاهی نوع آرگومان قابل قبوله اما مقدارش برای کار موردنظر معنی نداره. int رشته می‌پذیره، ولی هر رشته‌ای نمایش عدد صحیح نیست. مثلاً متن اعشاری با نقطه رو نمی‌شه مستقیماً با int به عدد صحیح تبدیل کرد. این رفتار رو باید از تبدیل float یا بریدن دستی متن جدا بدونیم.

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

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

assert int(" 15 ") == 15
# فاصله دور نمایش صحیح پذیرفته می‌شود.

حالا نوبت توئه: در تابع parse، دستور return int("3.5") اجرا می‌شود و هیچ مدیریت استثنایی وجود ندارد. نتیجه چیست؟ تبدیل مستقیم رشته را در نظر بگیر؛ float یا گردکردن دیگری در برنامه انجام نشده و نوع ورودی همچنان str است.

فعالیت شما

در تابع parse، دستور return int("3.5") اجرا می‌شود و هیچ مدیریت استثنایی وجود ندارد. نتیجه چیست؟ تبدیل مستقیم رشته را در نظر بگیر؛ float یا گردکردن دیگری در برنامه انجام نشده و نوع ورودی همچنان str است.

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

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

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

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

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

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

def parse():
    return int("3.5")
parse()

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

  1. عدد 3؛ بخش اعشار خودکار حذف می‌شود
  2. ValueError؛ رشته نمایش عدد صحیح نیست
  3. TypeError؛ int هیچ رشته‌ای قبول نمی‌کند