⬅️ Bosh sahifaga
1 / 9

🛒 Loyiha Ishi: Do‘kon Dasturi

O'tilgan mavzularni amalda qo'llash

Vaqt taqsimoti

  • Kirish va loyiha talablari - 20 daqiqa
  • Do‘kon dasturini tuzish (1-qism) - 25 daqiqa
  • Do‘kon dasturini tuzish (2-qism) - 20 daqiqa
  • Amaliy mashqlar - 25 daqiqa
  • Xulosa va uy vazifasi - 20 daqiqa
  • Qayta aloqa va savollar - 10 daqiqa

Jami: 120 daqiqa (2 soat) 🕐

📋 Loyiha Talablari

Dastur vazifalari:

  • Mahsulotlar ro‘yxatini faylda saqlash.
  • Narxlarga chegirma qo‘llash (map va lambda).
  • Qimmat mahsulotlarni filtrlab ko‘rsatish (filter).
  • Jami narxni hisoblash (reduce).
  • Amal vaqtini o‘lchash (dekorator).
  • Mahsulot ID generatori (generatorlar).
  • Standart va custom modullar.

Loyiha tuzilmasi:

📂 `mahsulotlar.txt` — mahsulot ma'lumotlari

📁 `utils.py` — yordamchi funksiyalar moduli

📄 `main.py` — asosiy dastur fayli

🛠️ Dastur Tuzish (1-qism)

1. Mahsulotlarni fayldan o'qish

# main.py def mahsulotlarni_ol(): with open("mahsulotlar.txt", "r") as fayl: mahsulotlar = {} for qator in fayl: nomi, narxi = qator.strip().split(": ") mahsulotlar[nomi] = int(narxi) return mahsulotlar

2. Cheksiz ID generatori

# main.py def id_generator(): id = 1 while True: yield id id += 1 gen = id_generator() for _ in range(3): print(f"Mahsulot ID: {next(gen)}")

🛠️ Dastur Tuzish (1-qism)

3. Chegirma qo‘llash (map va lambda)

# main.py mahsulotlar = mahsulotlarni_ol() chegirma = 0.1 yangi_narxlar = dict(zip(mahsulotlar.keys(), map(lambda x: x * (1 - chegirma), mahsulotlar.values()))) print(yangi_narxlar) # {'Telefon': 4500000.0, ...}

4. Qimmat mahsulotlarni filtrlash (filter)

# main.py qimmat_mahsulotlar = dict(filter(lambda x: x[1] > 5000000, mahsulotlar.items())) print(qimmat_mahsulotlar) # {'Noutbuk': 8000000}

🛠️ Dastur Tuzish (2-qism)

1. Vaqtni o‘lchash uchun dekorator

import time def vaqt_olchagich(funksiya): def wrapper(*args, **kwargs): boshlanish = time.time() natija = funksiya(*args, **kwargs) tugash = time.time() print(f"{funksiya.__name__} {tugash - boshlanish:.4f} sekund davom etdi.") return natija return wrapper @vaqt_olchagich def mahsulotlarni_korsat(): mahsulotlar = mahsulotlarni_ol() for nomi, narxi in mahsulotlar.items(): print(f"{nomi}: {narxi} so‘m") mahsulotlarni_korsat()

🛠️ Dastur Tuzish (2-qism)

2. Jami narxni hisoblash (reduce)

from functools import reduce mahsulotlar = mahsulotlarni_ol() jami_narx = reduce(lambda x, y: x + y, mahsulotlar.values()) print(f"Jami narx: {jami_narx} so‘m")

3. Custom modul yaratish (utils.py)

# utils.py import random def tasodifiy_mahsulot(mahsulotlar): return random.choice(list(mahsulotlar.keys())) # main.py da ishlatish: from utils import tasodifiy_mahsulot tanlangan = tasodifiy_mahsulot(mahsulotlar) print(f"Tasodifiy mahsulot: {tanlangan}")

🏋️ Amaliy Mashqlar

Mashq 1 & 2: Faylga yozish & map

  • `mahsulotlar.txt` ga "Konditsioner: 6000000" ni qo'shing.
  • Barcha mahsulotlar narxlariga 5% chegirma qo‘llang.

Mashq 3: reduce & filter

  • Barcha mahsulotlarning jami narxini hisoblang.
  • 4 milliondan qimmat mahsulotlarni filtrlab chiqaring.

🎯 Xulosa va 🏠 Uy Vazifasi

Bugun o'rgandik:

✅ O‘tilgan barcha mavzularni (fayllar, map, filter, reduce, generator, dekoratorlar, modullar) bir loyiha ichida qo‘lladik.

Uy vazifasi:

  • `mahsulotlar.txt` ga yana 2 ta mahsulot qo‘shing.
  • Barcha narxlarga 25% chegirma qo‘llang.
  • 1 milliondan qimmat mahsulotlarni filtrlang.
  • `utils.py`ga jami narx hisoblaydigan funksiya yozing (`reduce` bilan).

Keyingi dars: Loyiha Ishi: Mehmonxona Dasturi 🏨

🗣️ Savollar va Qayta Aloqa

Savollaringiz bormi? 🤔

Bugungi darsda faol ishtirok etganingiz uchun rahmat! 👏

Asosiy qoida: Nazariy bilimlarni amaliyotda qo'llash dasturchi uchun eng muhim ko'nikmadir.