2-dars: O'zgaruvchilar va ma'lumot turlari
Dars
Davomiyligi: 90 daqiqa Maqsad: Python turlari va o'zgaruvchilar bilan ishlash.
1. O'zgaruvchi yaratish
name = "Akmal"
age = 22
height = 1.75
is_student = TrueTur belgilash kerak emas — Python avtomatik.
2. Asosiy turlar
| Tur | Misol |
|---|---|
int | 42, -10, 0 |
float | 3.14, -0.5 |
str | "Akmal", 'Hello' |
bool | True, False |
None | None |
list | [1, 2, 3] |
dict | {"key": "value"} |
tuple | (1, 2, 3) |
set | {1, 2, 3} |
3. int va float
x = 42 # int
y = 3.14 # float
z = -5 # int
w = 1.5e10 # float (scientific)Cheksiz katta: Python int — chegarasiz.
big = 10 ** 100 # OK!C'da int 4 byte, lekin Python — istalgancha katta.
4. str (string)
a = "Salom"
b = 'World'
c = """Bir nechta
qatorli matn"""
# F-string
name = "Akmal"
greeting = f"Salom, {name}!"Apostrof yoki qo'shtirnoq — bir xil.
String operatorlar
s = "Hello"
print(len(s)) # 5
print(s + " World") # konkatenatsiya
print(s * 3) # "HelloHelloHello"
print(s[0]) # 'H'
print(s[-1]) # 'o'
print(s[1:4]) # 'ell' (slice)
print("ello" in s) # True5. bool
a = True
b = False
# 0, "", [], None — Falsy
# Boshqalari — Truthy
if 0:
print("0 truthy") # Bu ishlamaydi
if "":
print("'' truthy") # Bu ham
if [1, 2]:
print("list truthy") # Ishlaydi6. None
x = None
if x is None:
print("Bo'sh")C: NULL. JavaScript: null. Python: None.
== o'rniga is ishlatish tavsiya etiladi.
7. type() — turni tekshirish
x = 42
print(type(x)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("Akmal")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>
print(type([1, 2])) # <class 'list'>isinstance() — yaxshiroq
x = 42
if isinstance(x, int):
print("int")8. Tur o'zgartirish
# String → int
n = int("42") # 42
n = int("3.14") # XATO!
n = int(3.14) # 3
# String → float
f = float("3.14") # 3.14
# Int/float → string
s = str(42) # "42"
s = str(3.14) # "3.14"
# Bool
b = bool(0) # False
b = bool(1) # True
b = bool("") # False
b = bool("hello") # True
# Int → bool
b = bool(0) # False
b = bool(-5) # True (har 0 dan boshqasi True)9. Bir nechta o'zgaruvchi
# Bir vaqtda
a, b, c = 1, 2, 3
# Bir xil qiymat
x = y = z = 0
# Swap
a, b = b, a # C'da temp kerak edi!Swap Python'da — bir qator!
10. Constants (konstantalar)
Python'da rasmiy const yo'q. Konventsiya — KATTA HARF:
PI = 3.14159
MAX_USERS = 100
DATABASE_URL = "..."Texnik jihatdan o'zgartirilishi mumkin, lekin uslub bo'yicha — yo'q.
11. Naming conventions
# Yaxshi
user_name = "Akmal" # snake_case (o'zgaruvchi, funksiya)
MAX_VALUE = 100 # SCREAMING_SNAKE_CASE (konstanta)
# Class — keyingi darslarda
class Student: # PascalCase
passReserved keywords:
False, None, True, and, as, assert, async, await,
break, class, continue, def, del, elif, else, except,
finally, for, from, global, if, import, in, is, lambda,
nonlocal, not, or, pass, raise, return, try, while, with, yield12. f-string formatlash
name = "Akmal"
age = 22
pi = 3.14159
# Asosiy
print(f"Salom, {name}!")
# Aniqlik
print(f"Pi: {pi:.2f}") # 3.14
print(f"Pi: {pi:.5f}") # 3.14159
# Maydon kengligi
print(f"|{name:10}|") # |Akmal |
print(f"|{name:>10}|") # | Akmal|
print(f"|{name:^10}|") # | Akmal |
# Raqamlar
print(f"|{age:5d}|") # | 22|
print(f"|{age:05d}|") # |00022|
# Ifoda
print(f"{2 + 3}") # 5
print(f"{name.upper()}") # AKMAL
print(f"{age * 2}") # 44
# Debug (Python 3.8+)
print(f"{age=}") # age=2213. Maxsus belgilar (escape)
print("Birinchi\nIkkinchi") # \n yangi qator
print("Tab\tafter") # \t tab
print("Quote: \"text\"") # \" qo'shtirnoq
print("Backslash: \\") # \\ backslash
# Raw string (escape ishlamaydi)
print(r"C:\Users\Akmal") # \U va boshqalar e'tiborsiz14. Math amallar
+ - * /
** # daraja: 2 ** 10 = 1024
// # butun bo'lish: 7 // 2 = 3
% # qoldiq: 7 % 2 = 1
# Boshqa funksiyalar
abs(-5) # 5
round(3.7) # 4
round(3.14159, 2) # 3.14
min(1, 2, 3) # 1
max(1, 2, 3) # 3
sum([1, 2, 3]) # 6math moduli
import math
math.pi # 3.141592...
math.e # 2.718...
math.sqrt(25) # 5.0
math.pow(2, 10) # 1024.0
math.log(10) # 2.302... (ln)
math.log2(8) # 3.0
math.log10(100) # 2.0
math.sin(math.pi / 2) # 1.0
math.factorial(5) # 12015. random moduli
import random
random.random() # 0.0 - 1.0
random.randint(1, 10) # 1-10 (inclusive)
random.choice(["a","b","c"]) # birini tanlash
random.shuffle([1,2,3]) # aralashtirish16. To'liq misol
# personal_info.py
name = input("Ism: ")
age = int(input("Yosh: "))
height = float(input("Bo'y (m): "))
city = input("Shahar: ")
# Calculations
birth_year = 2026 - age
height_cm = height * 100
age_in_days = age * 365
# Type check
print(f"\n=== Ma'lumotlar ===")
print(f"Ism: {name} ({type(name).__name__})")
print(f"Yosh: {age} ({type(age).__name__})")
print(f"Bo'y: {height} m = {height_cm:.0f} cm")
print(f"Shahar: {city}")
print(f"Tug'ilgan: {birth_year} yil")
print(f"Yashagan kunlar: {age_in_days}")
# Bool
is_adult = age >= 18
is_tall = height > 1.80
print(f"\nKattalar: {is_adult}")
print(f"Bo'yli: {is_tall}")Topshiriqlar
1 — Turlar
turlar.py — beshta har xil turdagi o'zgaruvchi yarating (int, float, str, bool, None) va har birini qiymati bilan birga turini (type()) chop eting.
2 — Aylantirish
convert.py — quyidagi tur o'zgartirishlarni namoyish qiling va har birining natijasini chop eting:
- string → int (so'ng natijaga 5 qo'shing)
- float → int (kasr qismi tashlanadi)
- int → string (so'ng matn bilan biriktiring)
- string → float (so'ng 2 ga ko'paytiring)
3 — Math
math_demo.py — foydalanuvchidan doira radiusini so'rab, math modulidan foydalangan holda quyidagilarni hisoblang va :.2f bilan chiqaring:
- doira yuzasi va perimetri
- shar sirti va hajmi
4 — Random
random_demo.py — random modulini o'rganing:
- tasodifiy float (
random()) va butun son (randint) chiqaring - ro'yxatdan tasodifiy element tanlang (
choice) - olti yoqli zar tashlashni simulyatsiya qiling
- 6 ta tasodifiy lotereya raqamini yaratib chiqaring
5 — F-string
format.py — Dars matnidagi barcha format misollarini sinab ko'ring.
6 — Swap
swap.py — ikkita o'zgaruvchi qiymatini vaqtinchalik o'zgaruvchisiz almashtiring (Python'ning ko'p qiymatli belgilashidan foydalaning). So'ng uchta o'zgaruvchini ham bir qatorda aylantirib ko'ring.
7 — BMI kuchli
bmi_full.py — vazn, bo'y va yoshni so'rab, BMI va ideal vaznni (bo'y² × 22) hisoblang. Natijalarni f-string maydon kengligi bilan chiroyli jadval ko'rinishida chiqaring va BMI kategoriyasini aniqlang.
8 — Kvadrat tenglama
quadratic.py — a, b, c koeffitsientlarini so'rab, kvadrat tenglamani yeching. Diskriminant (b² - 4ac) qiymatiga qarab: manfiy bo'lsa haqiqiy ildiz yo'q, nol bo'lsa bitta ildiz, musbat bo'lsa ikkita ildizni chiqaring (math.sqrt dan foydalaning).
9 — String operatsiyalari
string_ops.py — bitta satr ustida quyidagi amallarni bajarib, natijalarini chop eting: uzunlik (len), katta/kichik harf (upper, lower), title, replace, split, slicing va in operatori.
10 — GitHub
$ mkdir 6-oy-dars-2
$ # fayllar
$ git add . && git commit -m "feat: dars 2 - variables and types"
$ git pushLug'at
| Termin | Izoh |
|---|---|
| int / float / str / bool | Asosiy turlar |
| None | Python NULL |
| type() | Tur tekshirish |
| isinstance() | Tur tekshirish (yaxshiroq) |
| Type conversion | int(), float(), str() |
| f-string | f"{name}" |
| Constants | SCREAMING_SNAKE_CASE |
| snake_case | o'zgaruvchi nomlash |
| math / random | Standart kutubxonalar |
| Truthy / Falsy | 0, "", [], None — false |