Modul - Args / Kwargs
Modullar + Lambda, map() va filter()
1-dars: Modullar
1. Modul nima?
Modul — bu loyihangiz ichidagi alohida .py fayl. U ichiga funksiyalar va o‘zgaruvchilarni joylab, asosiy dasturdan “yashirish” imkonini beradi.
- Asosiy dastur qisqa va tushunarli bo‘ladi
- Kodni boshqa loyihalarda qayta ishlatish mumkin
- Boshqa dasturchilar bilan ulashish oson
- Katta dasturlar odatda ko‘plab modullardan iborat bo‘ladi
2. Modul yaratish
Asosiy dastur faylini odatda main.py deb nomlash tavsiya etiladi. Funksiyalarni alohida faylga ko‘chiramiz.
Misol: talaba_mod.py nomli modul yaratamiz:
def talaba_info(ism, familiya, yosh, kurs, guruh, stipendya=None):
"""Talaba ma'lumotlarini lug'at ko'rinishida qaytaruvchi funksiya"""
talaba = {
'ism': ism,
'familiya': familiya,
'yosh': yosh,
'kurs': kurs,
'guruh': guruh,
'stipendya': stipendya
}
return talaba
def talaba_kirit():
"""Foydalanuvchidan bir nechta talaba ma'lumotlarini qabul qiluvchi funksiya"""
talabalar = []
while True:
print("\nQuyidagi ma'lumotlarni kiriting:")
ism = input("Ismi: ")
familiya = input("Familiyasi: ")
yosh = input("Yoshi: ")
kurs = input("Kursi: ")
guruh = input("Guruhi: ")
stipendya = input("Stipendyasi (bo'sh qoldirish mumkin): ")
talabalar.append(talaba_info(ism, familiya, yosh, kurs, guruh, stipendya))
javob = input("Yana talaba qo'shasizmi? (ha/yo'q): ")
if javob.lower() == "yo'q":
break
return talabalar
def info_print(talaba):
"""Talaba ma'lumotlarini chiroyli chiqaruvchi funksiya"""
print(f"{talaba['ism'].title()} {talaba['familiya'].title()}, "
f"{talaba['yosh']} yosh, {talaba['kurs']}-kurs, "
f"{talaba['guruh']}-guruh, stipendya: {talaba['stipendya']}")3. Modulni chaqirish usullari
import talaba_mod
talaba1 = talaba_mod.talaba_info("Ali", "Valiyev", 20, 2, "AI-21", 800000)
talaba_mod.info_print(talaba1)import talaba_mod as tm
talaba1 = tm.talaba_info("Ali", "Valiyev", 20, 2, "AI-21", 800000)
tm.info_print(talaba1)3. Kerakli funksiyalarni olish
from talaba_mod import talaba_info, info_print
talaba1 = talaba_info("Ali", "Valiyev", 20, 2, "AI-21", 800000)
info_print(talaba1)4. Funksiyalarga ham qisqa nom berish
from talaba_mod import talaba_info as tinfo, info_print as iprint
talaba1 = tinfo("Ali", "Valiyev", 20, 2, "AI-21", 800000)
iprint(talaba1)5. Barcha funksiyalarni olish (tavsiya etilmaydi)
from talaba_mod import *
DIQQAT! Katta modullarda nomlar to‘qnashuvi bo‘lishi mumkin. Bu usuldan kamroq foydalaning.
4. Pythonning o‘zida bor modullar
math moduli
import math print(math.sqrt(400)) # 20.0 print(math.pow(5, 3)) # 125.0 print(math.pi) # 3.141592653589793 print(math.log2(8)) # 3.0 print(math.log10(100)) # 2.0
Foydali funksiyalar: ceil(), floor(), fabs(), sin(), cos(), tan(), degrees(), radians()
random moduli
import random as r print(r.randint(1, 100)) # 1–100 oralig‘ida tasodifiy son ismlar = ['Ali', 'Vali', 'Hasan', 'Husan'] print(r.choice(ismlar)) # ro‘yxatdan tasodifiy element sonlar = list(range(11)) r.shuffle(sonlar) # ro‘yxatni aralashtirish print(sonlar)
2-mavzu: Lambda, map() va filter()
1. Lambda (nomsiz) funksiya
Lambda — vaqtinchalik, nomsiz funksiya. Faqat bitta ifoda bo‘lishi mumkin.
lambda argumentlar: ifoda
# Ikki sonni ko‘paytirish
kopaytir = lambda x, y: x * y
print(kopaytir(6, 7)) # 42
# Sonning kvadrati
kvadrat = lambda x: x ** 2
print(kvadrat(9)) # 81
# Matnni katta harfga o‘tkazish
katta = lambda matn: matn.upper()
print(katta("python")) # PYTHONdef daraja(n):
return lambda x: x ** n
kvadrat = daraja(2)
kub = daraja(3)
print(f"4 ning kvadrati: {kvadrat(4)}") # 16
print(f"4 ning kubi: {kub(4)}") # 642. map() funksiyasi
map() — ro‘yxat (yoki boshqa iterable) elementlariga berilgan funksiyani qo‘llaydi.
sonlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Har bir sonni 3 ga ko‘paytirish uch_baravar = list(map(lambda x: x * 3, sonlar)) print(uch_baravar) # [3, 6, 9, 12, 15, 18, 21, 24, 27, 30] # Har bir sonning kvadrati kvadratlar = list(map(lambda x: x ** 2, sonlar)) print(kvadratlar) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
ismlar = ['ali', 'vali', 'hasan', 'husan', 'olim'] print(list(map(lambda ism: ism.title(), ismlar))) # ['Ali', 'Vali', 'Hasan', 'Husan', 'Olim']
a = [10, 20, 30] b = [5, 15, 25] yigindi = list(map(lambda x, y: x + y, a, b)) print(yigindi) # [15, 35, 55]
3. filter() funksiyasi
filter() — ro‘yxatdan shartga mos elementlarni ajratib oladi. Funksiya True yoki False qaytarishi kerak.
sonlar = [12, 7, 25, 18, 9, 30, 4, 21, 16, 11] # Faqat juft sonlar juftlar = list(filter(lambda x: x % 2 == 0, sonlar)) print(juftlar) # [12, 18, 30, 4, 16] # 15 dan katta sonlar katta_sonlar = list(filter(lambda x: x > 15, sonlar)) print(katta_sonlar) # [25, 18, 30, 21, 16]
mevalar = ['olma', 'anor', 'anjir', 'shaftoli', "o'rik", 'tarvuz', 'qovun', 'banan']
# 'a' harfi bilan boshlanadiganlar
a_bilan = list(filter(lambda meva: meva.startswith('a'), mevalar))
print(a_bilan)
# Uzunligi 5 yoki undan kam bo‘lganlar
qisqa = list(filter(lambda meva: len(meva) <= 5, mevalar))
print(qisqa)kitoblar = [
"Python asoslari",
"JavaScript to'liq kurs",
"Ma'lumotlar bazasi",
"Sun'iy intellekt",
"Veb dasturlash",
"Algoritmlar"
]
# "Python" so‘zi bor kitoblar
python_kitoblar = list(filter(lambda k: "Python" in k, kitoblar))
print(python_kitoblar)
# 15 harfdan uzun nomli kitoblar
uzun_nomlar = list(filter(lambda k: len(k) > 15, kitoblar))
print(uzun_nomlar)Qisqa xulosa
- talaba_mod.py modulidan foydalanib, 3 ta talaba ma’lumotini kiriting va chiqaring.
- Ro‘yxatdagi sonlardan faqat 3 ga bo‘linadiganlarini filter + lambda yordamida ajrating.
- Ismlar ro‘yxatidan faqat 4 harfli ismlarni ajrating.
- Kitoblar ro‘yxatidan nomi “dasturlash” so‘zini o‘z ichiga olganlarini toping.
- math va random modullaridan foydalanib, 5 ta tasodifiy son oling va ularning kvadrat ildizlarini hisoblang.
Uy vazifasi
# Random moduli yordamida o‘yinlar ro‘yxati
Quyida random modulidan foydalanib qilish mumkin bo‘lgan oddiy va qiziqarli o‘yinlar ro‘yxati keltirilgan. Har biriga qisqa kod misoli qo‘shilgan.
1. Son topish o‘yini (Guess the Number)
Kompyuter 1 dan 100 gacha son o‘ylaydi, siz topasiz.
import random
sirli_son = random.randint(1, 100)
urinish = 0
print("1 dan 100 gacha son o‘yladim. Toping!")
while True:
taxmin = int(input("Sonni kiriting: "))
urinish += 1
if taxmin < sirli_son:
print("Kattaroq son kiriting!")
elif taxmin > sirli_son:
print("Kichikroq son kiriting!")
else:
print(f"Tabriklayman! {urinish} ta urinishda topdingiz.")
break2. Tosh-qog‘oz-qaychi (Rock-Paper-Scissors)
import random
variantlar = ["tosh", "qog'oz", "qaychi"]
while True:
foydalanuvchi = input("tosh / qog'oz / qaychi (chiqish uchun 'exit'): ").lower()
if foydalanuvchi == "exit":
print("O‘yin tugadi!")
break
if foydalanuvchi not in variantlar:
print("Noto‘g‘ri tanlov!")
continue
kompyuter = random.choice(variantlar)
print(f"Kompyuter tanladi: {kompyuter}")
if foydalanuvchi == kompyuter:
print("Durrang!")
elif (foydalanuvchi == "tosh" and kompyuter == "qaychi") or \
(foydalanuvchi == "qog'oz" and kompyuter == "tosh") or \
(foydalanuvchi == "qaychi" and kompyuter == "qog'oz"):
print("Siz yutdingiz!")
else:
print("Kompyuter yutdi!")3. Zar o‘yini (Dice Roll)
import random
while True:
input("Zar tashlash uchun Enter bosing...")
zar = random.randint(1, 6)
print(f"Tushgan son: {zar}")
yana = input("Yana o‘ynaysizmi? (ha/yo'q): ").lower()
if yana != "ha":
break4. Random ism tanlash (Ismlar o‘yini)
import random
ismlar = ["Ali", "Vali", "Hasan", "Husan", "Guli", "Madina", "Jasur", "Dilnoza"]
print("Bugun navbatchi:")
print(random.choice(ismlar))5. Kartalar o‘yini (Oddiy)
import random
suitlar = ["♥", "♦", "♣", "♠"]
qiymatlar = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
karta = f"{random.choice(qiymatlar)}{random.choice(suitlar)}"
print("Sizga tushgan karta:", karta)6. So‘z topish o‘yini (Hangman ga o‘xshash oddiy variant)
import random
sozlar = ["python", "dastur", "kompyuter", "algoritm", "funksiya", "modul"]
sirli_soz = random.choice(sozlar)
topilgan = ["_"] * len(sirli_soz)
urinishlar = 7
print("So‘zni toping!")
print(" ".join(topilgan))
while urinishlar > 0 and "_" in topilgan:
harf = input("Harf kiriting: ").lower()
if harf in sirli_soz:
for i in range(len(sirli_soz)):
if sirli_soz[i] == harf:
topilgan[i] = harf
print("To‘g‘ri!")
else:
urinishlar -= 1
print(f"Noto‘g‘ri! Qolgan urinish: {urinishlar}")
print(" ".join(topilgan))
if "_" not in topilgan:
print("Tabriklayman! So‘zni topdingiz:", sirli_soz)
else:
print("Yutqazdingiz. So‘z:", sirli_soz)7. Random raqamlar bilan lotereya
import random
print("6 ta omadli raqam:")
raqamlar = random.sample(range(1, 50), 6)
raqamlar.sort()
print(raqamlar)8. Tosh-qog‘oz-qaychi (Kompyuter o‘zi o‘ynaydi)
import random
import time
variantlar = ["tosh", "qog'oz", "qaychi"]
print("Kompyuter o‘zi o‘ynamoqda...")
time.sleep(1)
birinchi = random.choice(variantlar)
ikkinchi = random.choice(variantlar)
print(f"1-o‘yinchi: {birinchi}")
print(f"2-o‘yinchi: {ikkinchi}")
if birinchi == ikkinchi:
print("Durrang!")
elif (birinchi == "tosh" and ikkinchi == "qaychi") or \
(birinchi == "qog'oz" and ikkinchi == "tosh") or \
(birinchi == "qaychi" and ikkinchi == "qog'oz"):
print("1-o‘yinchi yutdi!")
else:
print("2-o‘yinchi yutdi!")