Modullar: tayyor koddan foydalanish
Har safar hamma narsani noldan yozish shart emas. Dunyo bo'ylab dasturchilar minglab foydali funksiyalarni yozib, ularni modullarga joylashtirgan. Bu darsda ulardan foydalanishni o'rganamiz.
Bu darsda
- Modul nima va
importqanday ishlaydi math— matematik funksiyalarrandom— tasodifiy sonlardatetime— sana va vaqt- O'z modulingizni yaratish va
pipbilan tanishuv
Modul nima?
Modul — funksiyalar va o'zgaruvchilar saqlangan Python fayli. Python bilan birga yuzlab tayyor modullar keladi — ular standart kutubxona deyiladi. Python haqida «batareyalari bilan sotiladi» degan gap bor: ko'p vazifalar uchun kerakli vositalar qutidan chiqishi bilan tayyor.
Modul — asboblar qutisiga o'xshaydi. Uyda har bir ish uchun asbobni o'zingiz yasamaysiz: kerak bo'lganda omborxonadan bolg'a yoki otvertka olib kelasiz. import — mana shu «olib kelish».
import
Modulni ishlatish uchun avval uni import qilish kerak. Odatda bu dasturning eng yuqorisida yoziladi. Keyin modul ichidagi narsaga nuqta orqali murojaat qilinadi: modul.funksiya().
import math print(math.sqrt(144)) print(math.pi) print(math.ceil(4.1)) print(math.floor(4.9))
12.0 3.141592653589793 5 4
| Funksiya | Nima qiladi | Misol |
|---|---|---|
math.sqrt(x) | Kvadrat ildiz | math.sqrt(25) → 5.0 |
math.ceil(x) | Yuqoriga yaxlitlash | math.ceil(4.1) → 5 |
math.floor(x) | Pastga yaxlitlash | math.floor(4.9) → 4 |
math.pi | π soni | 3.14159... |
math.gcd(a, b) | Eng katta umumiy bo'luvchi | math.gcd(12, 18) → 6 |
math.ceil() hayotda juda qo'l keladi. Masalan, 47 nafar o'quvchini 12 o'rinli avtobuslarga joylash uchun nechta avtobus kerak? 47 / 12 = 3.9..., lekin 3.9 ta avtobus bo'lmaydi — 4 ta kerak:
import math
oquvchilar = 47
orinlar = 12
print("Avtobuslar:", math.ceil(oquvchilar / orinlar))
from ... import ...
Moduldan faqat kerakli narsalarni olib kelish mumkin. Bunda modul nomini har safar yozish shart emas:
from math import sqrt, pi
r = 5
print("Doira yuzi:", round(pi * r ** 2, 2))
print("Ildiz:", sqrt(2))
Modulga qisqa nom ham berish mumkin: import math as m — keyin m.sqrt(16) deb yoziladi. Bu usul nomi uzun modullar bilan ko'p ishlatiladi.
random — tasodifiy sonlar
O'yinlar, test savollarini aralashtirish, tasodifiy g'olibni aniqlash — bularning hammasi uchun random moduli kerak:
import random print(random.randint(1, 6)) # 1 dan 6 gacha tasodifiy butun son (zar) print(random.choice(["tosh", "qaychi", "qog'oz"])) print(random.random()) # 0 va 1 orasidagi kasr son kartalar = ["A", "K", "Q", "J", "10"] random.shuffle(kartalar) # ro'yxatni aralashtiradi print(kartalar)
Kodni bir necha marta ishga tushiring — har safar natija boshqacha bo'ladi.
| Funksiya | Nima qiladi |
|---|---|
random.randint(a, b) | a dan b gacha tasodifiy butun son (b ham kiradi!) |
random.choice(royxat) | Ro'yxatdan tasodifiy bitta element |
random.shuffle(royxat) | Ro'yxatni aralashtiradi |
random.sample(royxat, k) | Ro'yxatdan takrorlanmaydigan k ta element |
random.random() | 0 dan 1 gacha tasodifiy kasr son |
range(1, 6) dan farqli o'laroq, randint(1, 6) da oxirgi son kiradi. Bu Python'dagi kam sonli istisnolardan biri — yodda tuting.
import random
ishtirokchilar = ["Aziz", "Bekzod", "Dilnoza", "Kamola", "Sardor", "Zuhra"]
golib = random.choice(ishtirokchilar)
print("Sovrin egasi:", golib)
print("Jamoa A:", random.sample(ishtirokchilar, 3))
datetime — sana va vaqt
datetime moduli bugungi sanani bilish, sanalar orasidagi farqni hisoblash va vaqtni formatlash imkonini beradi:
from datetime import date, datetime
bugun = date.today()
print("Bugun:", bugun)
print("Yil:", bugun.year, "Oy:", bugun.month, "Kun:", bugun.day)
hozir = datetime.now()
print("Soat:", hozir.strftime("%H:%M"))
print("Sana:", hozir.strftime("%d.%m.%Y"))
strftime() sanani kerakli ko'rinishga keltiradi: %d — kun, %m — oy, %Y — yil, %H — soat, %M — daqiqa.
Sanalar orasidagi farq
Ikki sanani ayirsak, ular orasidagi muddat chiqadi. Navro'zgacha necha kun qolganini hisoblaymiz:
from datetime import date
bugun = date.today()
navroz = date(bugun.year, 3, 21)
if navroz < bugun: # bu yilgi Navro'z o'tib ketgan bo'lsa
navroz = date(bugun.year + 1, 3, 21)
qoldi = (navroz - bugun).days
print(f"Navro'zgacha {qoldi} kun qoldi!")
O'z modulingiz
Har qanday .py fayl — modul. Kompyuteringizda bir papkada ikkita fayl yarating:
yordamchi.py fayli:
def salomlash(ism):
return f"Assalomu alaykum, {ism}!"
def juftmi(n):
return n % 2 == 0
asosiy.py fayli (xuddi shu papkada):
import yordamchi
print(yordamchi.salomlash("Aziz"))
print(yordamchi.juftmi(10))
asosiy.py ni ishga tushirsangiz, Python yordamchi.py faylini topib, undagi funksiyalardan foydalanadi. Katta loyihalar aynan shunday — o'nlab va yuzlab fayllarga bo'lingan holda yoziladi.
O'z faylingizga standart modul nomini bermang: random.py, math.py. Aks holda import random standart modul o'rniga sizning faylingizni ochadi va g'alati xatolar chiqadi.
pip: dunyo bo'ylab yozilgan kutubxonalar
Standart kutubxonadan tashqari, internetda yuz minglab bepul Python paketlari bor. Ular PyPI (Python Package Index) degan omborda saqlanadi va pip dasturi bilan o'rnatiladi. Kompyuterdagi buyruqlar satrida:
pip install requests
Bir nechta mashhur paketlar:
requests— internetdagi saytlar va API'lar bilan ishlash;aiogram— Telegram botlar yaratish;pandas— jadval ko'rinishidagi ma'lumotlarni tahlil qilish;djangovaflask— veb-saytlar yaratish;pygame— oddiy o'yinlar yasash.
Bu saytdagi muharrir faqat standart kutubxona bilan ishlaydi. Qo'shimcha paketlar bilan ishlash uchun Python kompyuteringizda o'rnatilgan bo'lishi kerak (1-dars).
Mashqlar
1-mashq Gipotenuza
To'g'ri burchakli uchburchakning katetlari 3 va 4 ga teng. Pifagor teoremasi bo'yicha gipotenuzani toping: c = √(a² + b²).
import math a = 3 b = 4
Yechimni ko'rish
import math a = 3 b = 4 print(math.sqrt(a ** 2 + b ** 2))
2-mashq Doira yuzi
Radiusi 5 ga teng doiraning yuzini (S = π r²) verguldan keyin 2 xona aniqlikda chiqaring.
r = 5
Yechimni ko'rish
from math import pi r = 5 print(round(pi * r ** 2, 2))
3-mashq Ikki zar
Ikkita zar tashlang (har biri 1 dan 6 gacha) va natijalarini hamda yig'indisini chiqaring. Ikkala zar bir xil chiqsa, Dubl! deb yozing.
import random
Yechimni ko'rish
import random
zar1 = random.randint(1, 6)
zar2 = random.randint(1, 6)
print(f"Zarlar: {zar1} va {zar2}, yig'indi: {zar1 + zar2}")
if zar1 == zar2:
print("Dubl!")
4-mashq Parol generatori
8 ta belgidan iborat tasodifiy parol yarating. Belgilar belgilar satridan tanlansin.
import random belgilar = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789" parol = ""
Ishora
for _ in range(8): sikli ichida parol += random.choice(belgilar).
Yechimni ko'rish
import random
belgilar = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"
parol = ""
for _ in range(8):
parol += random.choice(belgilar)
print("Yangi parol:", parol)
Belgilar orasida l, 1, O, 0 yo'qligini sezdingizmi? Ular bir-biriga o'xshaydi va parolni o'qishda adashtiradi.
O'zingizni sinang
import math dan keyin kvadrat ildiz qanday olinadi?
sqrt(16)math(sqrt, 16)math.sqrt(16)16.sqrt()
To'g'ri. import math bo'lsa, modul nomi va nuqta kerak. from math import sqrt bo'lganda esa shunchaki sqrt(16).
random.randint(1, 3) qaysi qiymatlarni qaytarishi mumkin?
- 1 yoki 2
- 1, 2 yoki 3
- 0, 1, 2 yoki 3
- 1 dan 3 gacha istalgan kasr son
To'g'ri. randint da ikkala chegara ham kiradi.
math.ceil(7.2) nimaga teng?
77.07.28
To'g'ri. ceil doim yuqoriga yaxlitlaydi («ceiling» — shift).
Internetdan qo'shimcha Python paketini o'rnatish uchun qaysi buyruq ishlatiladi?
pip install paket_nomiimport paket_nomipython download paket_nomiinstall(paket_nomi)
To'g'ri. pip paketni o'rnatadi, import esa o'rnatilgan paketni dasturga ulaydi.
Xulosa
- Modul — tayyor funksiyalar saqlangan fayl.
import moduluni dasturga ulaydi. modul.funksiya()yokifrom modul import funksiyako'rinishida ishlatiladi.math— ildiz, π, yaxlitlash;random— tasodifiy son va tanlov;datetime— sana va vaqt.- Har qanday
.pyfayl modul bo'la oladi — katta loyihalar ko'p faylga bo'linadi. pip installinternetdagi yuz minglab paketlardan birini o'rnatadi.