مبانی زبان
انواع داده در پایتون: 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 و ویرایشگر همین سایت باید از
تبدیل نوع (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 است.