4-bo‘lim
O'zgaruvchilar va ma'lumot turlari
O'zgaruvchi nima, xotirada qanday saqlanadi, Python'dagi asosiy ma'lumot turlari va ular orasida o'zaro o'tkazish (type casting).
Ushbu bo‘lim mundarijasi
- O'zgaruvchi yaratish
- Asosiy ma'lumot turlari
- Sonlar bilan ishlash
- int - butun sonlar
- float - o'nlik sonlar
- Matn (str)
- bool - mantiqiy qiymat
- None - qiymat yo'qligi
- Turlarni o'zgartirish (type casting)
- Bir vaqtda bir nechta qiymat berish
- f-satrlar bilan chiroyli chiqarish
- Amaliy misol: do'kon cheki
- Xulosa
O'zgaruvchi - dasturlashning eng asosiy tushunchasi. Uni nom yozilgan quti deb tasavvur qiling: quti ichida qiymat turadi, siz esa unga nom orqali murojaat qilasiz.
O'zgaruvchi yaratish #
Python'da o'zgaruvchi e'lon qilish uchun alohida buyruq yo'q - shunchaki qiymat berasiz:
ism = "Husanboy" # matn
yosh = 25 # butun son
boy = 1.68 # o'nlik son
talabami = True # mantiqiy qiymat
print(ism, yosh, boy, talabami)
Husanboy 25 1.68 True
Asosiy ma'lumot turlari #
| Tur | Nomi | Misol | Nima uchun kerak |
|---|---|---|---|
int | Butun son | 22, -5, 1000000 | Yosh, miqdor, hisoblagich |
float | O'nlik son | 1.68, -0.5, 3.14 | Narx, o'rtacha, o'lchov |
str | Matn | "Salom", 'Toshkent' | Ism, manzil, xabar |
bool | Mantiqiy | True, False | Ha/yo'q holatlar |
list | Ro'yxat | [1, 2, 3] | Tartiblangan to'plam |
tuple | Kortej | (1, 2, 3) | O'zgarmas to'plam |
dict | Lug'at | {"ism": "Ali"} | Kalit-qiymat juftliklari |
set | To'plam | {1, 2, 3} | Takrorlanmaydigan elementlar |
NoneType | Bo'shlik | None | "Qiymat yo'q" holati |
Turni tekshirish uchun type() funksiyasi ishlatiladi:
print(type(25))
print(type(1.68))
print(type("Husanboy"))
print(type(True))
print(type([1, 2, 3]))
print(type(None))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'list'>
<class 'NoneType'>
Sonlar bilan ishlash #
int - butun sonlar #
talabalar_soni = 30
harorat = -12
aholi = 36_000_000 # pastki chiziq o'qishni osonlashtiradi
print(aholi)
36000000
Ko'p tillarda butun son 64 bitga sig'ishi kerak. Python'da esa xotira yetguncha istalgan katta son bilan ishlash mumkin:
print(2 ** 200)
1606938044258990275541962092341162602522202993782792835301376
float - o'nlik sonlar #
narx = 15500.75
foiz = 0.12
tezlik = 3.5e8 # 3.5 * 10^8 ilmiy shakl
print(narx, foiz, tezlik)
15500.75 0.12 350000000.0
print(0.1 + 0.2)
0.30000000000000004
Bu Python'ning kamchiligi emas - barcha tillarda kasr sonlar ikkilik sistemada taxminiy saqlanadi. Pul bilan ishlaganda decimal modulidan foydalaning:
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2"))
0.3
Matn (str) #
Matn bir yoki qo'shtirnoq ichida yoziladi - farqi yo'q:
shahar = "Toshkent"
mamlakat = 'O\'zbekiston'
# Uch qo'shtirnoq - ko'p satrli matn uchun
manzil = """Toshkent shahri,
Chilonzor tumani,
12-uy"""
print(manzil)
Toshkent shahri,
Chilonzor tumani,
12-uy
Matnlarni birlashtirish va takrorlash:
ism = "Husanboy"
familiya = "Qodirov"
toliq_ism = ism + " " + familiya
print(toliq_ism)
print("-" * 30)
print(len(toliq_ism), "ta belgi")
Husanboy Qodirov
------------------------------
16 ta belgi
bool - mantiqiy qiymat #
Faqat ikkita qiymatga ega: True va False (bosh harf bilan!).
imtihon_topshirildi = True
qarzi_bor = False
print(10 > 5)
print(10 == 5)
print("a" in "salom")
True
False
True
Python har qanday qiymatni mantiqiy kontekstda tekshira oladi. Quyidagilar False deb qaraladi:
| Qiymat | Turi |
|---|---|
False | bool |
0, 0.0 | son |
"" | bo'sh matn |
[], (), {} | bo'sh to'plamlar |
None | bo'shlik |
Qolgan hamma narsa True.
ism = ""
if ism:
print("Ism kiritilgan")
else:
print("Ism bo'sh!")
Ism bo'sh!
None - qiymat yo'qligi #
None "hali qiymat berilmagan" degan ma'noni bildiradi:
natija = None
print(natija)
print(natija is None)
None
True
None ni == bilan solishtirmangnatija == None emas, natija is None deb yozing. is operatori xotiradagi aynan bir xil obyektni tekshiradi va bu None uchun to'g'ri usul.
Turlarni o'zgartirish (type casting) #
# Matndan songa
yosh_matn = "22"
yosh_son = int(yosh_matn)
print(yosh_son + 1)
# Sondan matnga
narx = 15000
xabar = "Narxi: " + str(narx) + " so'm"
print(xabar)
# Butundan kasrga va aksincha
print(float(7)) # 7.0
print(int(7.9)) # 7 -- kasr qismi tashlanadi, yaxlitlanmaydi!
print(round(7.9)) # 8 -- yaxlitlash uchun round()
23
Narxi: 15000 so'm
7.0
7
8
| Funksiya | Vazifasi | Misol | Natija |
|---|---|---|---|
int(x) | Butun songa | int("42") | 42 |
float(x) | Kasr songa | float("3.14") | 3.14 |
str(x) | Matnga | str(99) | "99" |
bool(x) | Mantiqiyga | bool(0) | False |
list(x) | Ro'yxatga | list("abc") | ['a','b','c'] |
son = int("yigirma")
ValueError: invalid literal for int() with base 10: 'yigirma'
14-bo'limda bunday xatolarni qanday xavfsiz ushlashni o'rganamiz.
Bir vaqtda bir nechta qiymat berish #
# Bir nechta o'zgaruvchi bir satrda
ism, yosh, shahar = "Sardor", 25, "Buxoro"
print(ism, yosh, shahar)
# Bir xil qiymat
a = b = c = 0
print(a, b, c)
# Qiymatlarni almashtirish - Python'da juda oson
birinchi = 10
ikkinchi = 20
birinchi, ikkinchi = ikkinchi, birinchi
print(birinchi, ikkinchi)
Sardor 25 Buxoro
0 0 0
20 10
f-satrlar bilan chiroyli chiqarish #
Bu Python'ning eng qulay imkoniyatlaridan biri:
ism = "Husanboy"
yosh = 25
ortacha_baho = 4.6789
print(f"Salom, {ism}! Sizga {yosh} yosh.")
print(f"Kelasi yili {yosh + 1} yoshga to'lasiz.")
print(f"O'rtacha bahoyingiz: {ortacha_baho:.2f}")
print(f"Ism uzunligi: {len(ism)}")
Salom, Husanboy! Sizga 25 yosh.
Kelasi yili 26 yoshga to'lasiz.
O'rtacha bahoyingiz: 4.68
Ism uzunligi: 8
Amaliy misol: do'kon cheki #
# ============================================
# Oddiy chek generatori
# ============================================
MAHSULOT_NOMI = "Klaviatura"
NARX = 185000
SONI = 2
QQS_FOIZI = 0.12
oraliq_summa = NARX * SONI
qqs = oraliq_summa * QQS_FOIZI
jami = oraliq_summa + qqs
print("=" * 36)
print(f"{'CHEK':^36}")
print("=" * 36)
print(f"{MAHSULOT_NOMI:<20}{SONI:>3} x {NARX:>9,}")
print("-" * 36)
print(f"{'Oraliq summa:':<24}{oraliq_summa:>11,}")
print(f"{'QQS (12%):':<24}{qqs:>11,.0f}")
print(f"{'JAMI:':<24}{jami:>11,.0f}")
print("=" * 36)
====================================
CHEK
====================================
Klaviatura 2 x 185,000
------------------------------------
Oraliq summa: 370,000
QQS (12%): 44,400
JAMI: 414,400
====================================
tana_massasi.py dasturini yozing:
- Foydalanuvchidan bo'y (metrda,
float) va vazn (kg,float) so'rang. - Tana massasi indeksini hisoblang:
vazn / (boy ** 2). - Natijani f-satr yordamida ikkita kasr xonagacha chiqaring.
type()bilan har bir o'zgaruvchining turini ham ko'rsating.
Xulosa #
- O'zgaruvchi e'lon qilish uchun alohida buyruq kerak emas:
nom = qiymat. - Asosiy turlar:
int,float,str,bool,Noneva to'plamlar. type()turni ko'rsatadi,int()/str()/float()turni o'zgartiradi.- Kasr sonlar taxminiy saqlanadi - pul uchun
decimalishlating. f"..."satrlari qiymatlarni matnga qo'shishning eng qulay usuli.
Keyingi bo'limda operatorlar - arifmetik, taqqoslash va mantiqiy amallarni ko'rib chiqamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.