Ma'lumot turlari — int, float, str, bool, None va tur o'zgartirish

~15 daq · Python · Kirish va Asoslar

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 aniqlash
  • int(), float(), str(), bool() — tur o'zgartirish
  • float da kasr aniqlik muammosi bor — pul uchun Decimal
  • None ni is bilan tekshiring — == None emas
  • Matn va sonni + bilan birlashtirish — avval str() ga aylantirish

Keyingi dars

4-dars: Operatorlar — arifmetik, taqqoslash, mantiqiy, is, in