Ma'lumot turlari — int, float, str, bool, None va tur o'zgartirish
Muammodan boshlaylik
Siz do'konda kassir dasturi yozyapsiz. Mijoz ismi, mahsulot narxi, soni, chegirma bor-yo'qligi — bularning hammasi dasturda saqlanadi. Lekin "Jasur" va 45000 bir xil narsa emas. Ularni birlashtirmoqchi bo'lsangiz — xato chiqadi.
ism = "Jasur"
summa = 45000
print(ism + summa) # TypeError!
Dasturlashda har bir qiymatning turi bor. Tur degani — qiymat qanday saqlanadi, u bilan qanday amallar qilish mumkin. Turlarni bilmasdan — xatolar nima sababdan chiqayotganini tushunmaysiz.
Python ning beshta asosiy turi
| Tur | Nomi | Misol |
|---|---|---|
| Butun son | int |
25, -10, 0 |
| Kasr son | float |
3.14, -0.5 |
| Matn | str |
"Salom", 'Python' |
| Mantiqiy | bool |
True, False |
| Bo'sh | NoneType |
None |
int — butun son
Manfiy, nol, musbat. Kasr yo'q.
yosh = 25
temperatura = -7
aholi = 37_000_000 # ← katta sonlarda _ o'qishni osonlashtiradi
Python da int ning chegarasi yo'q — xotira yetgancha istalgancha katta son. Java da int maksimum ~2 milliard. Python da bu cheklov yo'q.
float — kasr son
narx = 19.99
pi = 3.14159
Muhim: float da aniqlik muammosi bor:
print(0.1 + 0.2) # 0.30000000000000004
Bu Python ning emas — kompyuter arxitekturasining xususiyati. Barcha zamonaviy tillar (JavaScript, Java, C++) da bir xil.
Nima uchun? Float sonlar xotirada ikkilik (binary) sistemada saqlanadi. 0.1 ni ikkilikda aniq ifodalab bo'lmaydi — o'xshatma: 1/3 ni o'nlikda aniq yozib bo'lmaydi (0.333...).
Pul hisob-kitobida bu muammo real zarar beradi. Bunday hollarda:
from decimal import Decimal
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b) # 0.3 — aniq!
str — matn
Bitta yoki qo'sh tirnoq ichida. Ikkalasi ham to'g'ri:
ism = "Jasur"
shahar = 'Toshkent'
Ko'p qatorli matn uchun uch tirnoq:
xabar = """
Salom!
Bu ko'p qatorli matn.
"""
len() — uzunlikni beradi:
print(len("Salom")) # 5
print(len("")) # 0
bool — mantiqiy qiymat
Faqat ikki qiymat: True yoki False. Katta harf bilan boshlanadi — bu muhim.
aktiv = True
o_chirilgan = False
Taqqoslash natijalari doim bool:
print(5 > 3) # True
print(10 == 5) # False
Falsy va Truthy — Python da istalgan qiymatni True yoki False sifatida ko'rish mumkin:
# False sifatida ko'riladi (falsy):
bool(0) # False
bool("") # False — bo'sh matn
bool([]) # False — bo'sh ro'yxat
bool(None) # False
# True sifatida ko'riladi (truthy):
bool(1) # True
bool("x") # True
bool([1]) # True
Bu bilim keyingi darslarda — shartlar va sikllar yozishda juda foydali bo'ladi.
None — bo'sh qiymat
None — "hech nima yo'q". Boshqa tillardagi null ga o'xshash.
natija = None # hali qiymat yo'q
print(natija) # None
None ni tekshirishda == emas, is ishlatiladi:
# ✅ To'g'ri
if natija is None:
print("Natija hali yo'q")
# ❌ Ishlaydi, lekin Python uslubi emas
if natija == None:
print("Natija hali yo'q")
Nima uchun is? == qiymatlarni solishtiradi. is esa xotira manzilini — "aynan bir xil ob'ektmi?". None Python da bitta nusxada mavjud, shuning uchun is semantik jihatdan to'g'riroq.
Tur o'zgartirish
Ba'zan bir turni boshqasiga aylantirish kerak:
# str → int
yosh_matn = "25"
yosh = int(yosh_matn) # 25
# int → str
son = 42
matn = str(son) # "42"
# str → float
narx_matn = "19.99"
narx = float(narx_matn) # 19.99
# float → int — kasr qismi tashlanadi, yaxlitlanmaydi
x = int(3.9) # 3, NOT 4
Avtomatik o'zgartirish — Python ba'zan o'zi qiladi:
son = 5 + 2.0 # int + float → float avtomatik
print(son) # 7.0
Tez-tez uchraydigan xatolar
Matn va sonni qo'shish:
yosh = 25
# ❌
print("Yoshim: " + yosh) # TypeError
# ✅
print("Yoshim: " + str(yosh))
print(f"Yoshim: {yosh}") # f-string — keyingi darsda batafsil
int() ga harf kiritish:
int("25") # ✅ ishlaydi
int("25.5") # ❌ ValueError — bu float, avval float() kerak
int("yosh") # ❌ ValueError — harf bor
# To'g'ri ketma-ketlik:
int(float("25.5")) # ✅ 25
float aniqlik muammosini e'tibordan qochirish:
# ❌ Pul hisob-kitobida xavfli
balans = 0.1 + 0.2
if balans == 0.3: # False bo'ladi!
print("To'lov o'tdi")
# ✅ Pul uchun Decimal
from decimal import Decimal
balans = Decimal("0.1") + Decimal("0.2")
Xulosa
Python ning beshta asosiy turi: int, float, str, bool, None.
Eslab qoling:
type(x)— turni aniqlashint(),float(),str(),bool()— tur o'zgartirishfloatda kasr aniqlik muammosi bor — pul uchunDecimalNoneniisbilan tekshiring —== Noneemas- Matn va sonni
+bilan birlashtirish — avvalstr()ga aylantirish
Keyingi dars
4-dars: Operatorlar — arifmetik, taqqoslash, mantiqiy, is, in