مبانی زبان

انواع داده در پایتون: int، float، bool، None و تبدیل نوع

۳ دقیقه مطالعه · به‌روزرسانی ۲۲ مهر ۱۴۰۵

برنامه‌ها با داده کار می‌کنند. در پایتون هر داده یک شیء (object) است و هر شیء یک نوع (type) دارد. نوع یک شیء مشخص می‌کند چه کارهایی می‌شود رویش انجام داد: دو عدد را می‌شود ضرب کرد، ولی ضرب دو متن معنی ندارد.

اشیاء دو دسته‌اند:

  • اسکالر (scalar): قابل تقسیم به اجزای کوچک‌تر نیستند؛ مثل عدد 5.
  • غیراسکالر: ساختار داخلی دارند و می‌شود به اجزایشان دسترسی داشت؛ مثل رشتهٔ "salam" که از ۵ حرف ساخته شده. (رشته‌ها را در بخش رشته‌ها می‌بینیم.)

چهار نوع اسکالر

نوع کاربرد مثال
int عدد صحیح (integer) 5، -12، 0
float عدد حقیقی، اعشاری 3.27، 2.0، -0.5
bool مقدار منطقی؛ فقط دو حالت دارد True، False
NoneType فقط یک مقدار دارد: «هیچ» None

⚠️ True، False و None با حرف بزرگ شروع می‌شوند. true در پایتون یک نام تعریف‌نشده است و خطای NameError می‌دهد.

تابع type

با type() می‌شود نوع هر مقدار را پرسید:

print(type(5))
print(type(3.0))
print(type(True))
print(type(None))
print(type("5"))

دقت کنید 5 و 5.0 و "5" سه چیز متفاوت‌اند: عدد صحیح، عدد اعشاری و متن.

💡 در Jupyter و محیط تعاملی، اگر آخرین خط یک سلول یک عبارت باشد، مقدارش خودبه‌خود نمایش داده می‌شود (Out[1]: int). در فایل ‎.py‎ و ویرایشگر همین سایت باید از print استفاده کنید.

تبدیل نوع (Casting)

گاهی لازم است یک مقدار را از یک نوع به نوع دیگر تبدیل کنیم:

print(float(3))      # 3.0
print(int(3.9))      # 3   ← گرد نمی‌کند، قسمت اعشار را دور می‌ریزد!
print(int("42") + 1) # 43
print(str(7) + "7")  # 77
print(round(3.9))    # 4   ← برای گرد کردن از round استفاده کنید
print(round(2.5))    # 2 !  ← گرد کردن به نزدیک‌ترین زوج (چالش ۶ را ببینید)

دام رایج: int(3.9) عدد را گرد نمی‌کند؛ فقط اعشارش را حذف می‌کند (به سمت صفر). برای گرد کردن round را به کار ببرید.

تبدیل همیشه ممکن نیست:

print(int("salam"))

این خطای ValueError می‌دهد: متن «salam» شبیه هیچ عددی نیست.

print(int("3.5"))

این هم خطا می‌دهد! int فقط رشته‌ای را می‌پذیرد که شبیه عدد صحیح باشد. راه درست: int(float("3.5")).

مقدار منطقی (truthiness) هر چیز

هر مقداری در پایتون علاوه بر مقدار خودش، یک ارزش منطقی هم دارد. وقتی جایی شرط می‌گذاریم (مثلاً بعد از if)، پایتون آن را به True یا False تبدیل می‌کند:

  • عدد صفر (0، 0.0) → False؛ هر عدد دیگری → True
  • رشتهٔ خالی "" → False؛ هر رشتهٔ غیرخالی → True
  • None → False
print(bool(0), bool(13), bool(-2))
print(bool(""), bool("salam"), bool(" "))
print(bool(None))

دقت کنید " " (یک فاصله) خالی نیست، پس True است. از این ویژگی بعداً در شرط‌ها استفاده می‌کنیم.

تمرین

خروجی این کد را پیش‌بینی کنید، بعد اجرایش کنید:

a = int(7.99)
b = float("2")
c = a + b
print(a, b, c, type(c))
جواب

7 2.0 9.0 <class 'float'>. چون int(7.99) می‌شود 7 و حاصل جمع int با float همیشه float است.