مرکز آموزش میهن وب هاست

مرکز آموزش میهن وب هاست

رفع خطای Type error در پایتون

پرینت این مقاله پرینت این مقاله

خطای TypeError در پایتون معمولاً زمانی رخ می‌دهد که سعی می‌کنید یک عملیات یا تابع را روی نوع داده‌ای انجام دهید که برای آن عملیات مناسب نیست. برای رفع این خطا می بایست  کدی که با خطا روبرو شده است را بررسی کرده و مطمئن شوید که نوع داده‌ها با انتظارات عملیات یا تابع هماهنگ است. از همین رو می بایست مراحل زیر را طی کنید:
1-بررسی متن خطا: متن خطا معمولاً شامل اطلاعات مفیدی چون نوع داده‌ای که مشکل ساز شده، می باشد. لذا درک آن اولین قدم به سوی حل مشکل است. به عنوان مثال خطای زیر نشان می‌دهد که یک عدد صحیح (int) با یک رشته (str) جمع شده که این عملیات مجاز نیست:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
2-بررسی نوع داده‌های ورودی: با استفاده از تابع ()type، می توانید نوع داده‌های خود را بررسی نمایید تا اطمینان پیدا کنید که با نوع عملیاتی که می‌خواهید انجام دهید، سازگار هستند یا خیر:
print(type(variable))
3-تبدیل نوع داده‌ها: اگر نوع داده‌ها ناسازگار است، می‌توانید از توابع تبدیل استفاده کنید:
  • برای تبدیل به عدد صحیح: int(value)

  • برای تبدیل به عدد اعشاری: float(value)

  • برای تبدیل به رشته: str(value)

به طور مثال متغیر num را در نظر بگیرید که به صورت رشته تعریف شده و برابر با "5" است. لذا جمع آن با عدد 10 خطای TypeError را بر میگرداند:
num = "5"
result = 10 + num
اما پس از تبدیل نوع داده num به عدد صحیح، خروجی درست برابر با 15 حاصل می شود.
result = 10 + int(num)
4-بررسی توابع و کتابخانه ها: اگر از تابع یا متدی استفاده می‌کنید، مطمئن شوید که آرگومان‌ها از نوع داده درست هستند. به طور مثال خروجی زیر از نوع رشته است لذا استفاده از اعداد، در ورودی سبب ایجاد خطا شده و لازم است داده ورودی مناسب ارائه شود:
def sayhello(name):
    return "Hello, " + name
sayhello(123)
اصلاح ورودی بر اساس تابع، سبب ایجاد خروجی درست به صورت رشته خواهد شد: "Hello, 123"
sayhello(str(123))
5-بررسی عملیات ناسازگار: پایتون برخی عملیات را بین انواع مختلف داده پشتیبانی نمی‌کند. به عنوان مثال عملیات زیر نادرست بوده و خروجی با خطای TypeError مواجه است.
[1, 2] + (3, 4)
لذا جهت اصلاح مواردی این چنینی می بایست نوع داده ها را یکسان نمود:
data1 = [1, 2]
data2 = (3, 4)
result = data1 + list(data2)
4/5 از 3 رای