⬅️ Bosh sahifaga
1 / 9

🏨 Loyiha Ishi: Mehmonxona Dasturi

O'tilgan mavzularni amalda qo'llash

Vaqt taqsimoti

  • Kirish va loyiha talablari - 20 daqiqa
  • Mehmonxona dasturini tuzish (1-qism) - 25 daqiqa
  • Mehmonxona 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:

  • Xonalar ro‘yxatini faylda saqlash.
  • Narxlarga chegirma qo‘llash (map va lambda).
  • Bo‘sh xonalarni filtrlab ko‘rsatish (filter).
  • Jami to‘lovni hisoblash (reduce).
  • Amal vaqtini o‘lchash (dekorator).
  • Xona ID generatori (generatorlar).
  • Standart va custom modullar.

Loyiha tuzilmasi:

📂 `xonalar.txt` — xona ma'lumotlari

📁 `utils.py` — yordamchi funksiyalar moduli

📄 `main.py` — asosiy dastur fayli

🛠️ Dastur Tuzish (1-qism)

1. Xonalarni fayldan o'qish

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

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"Xona ID: {next(gen)}")

🛠️ Dastur Tuzish (1-qism)

3. Chegirma qo‘llash (map va lambda)

# main.py xonalar = xonalarni_ol() chegirma = 0.15 for xona in xonalar: xonalar[xona]["narx"] = list(map(lambda x: x * (1 - chegirma), [xonalar[xona]["narx"]]))[0] print(xonalar)

4. Bo‘sh xonalarni filtrlash (filter)

# main.py xonalar = xonalarni_ol() bosh_xonalar = dict(filter(lambda x: x[1]["holat"] == "bo‘sh", xonalar.items())) print(bosh_xonalar)

🛠️ 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 xonalarni_korsat(): xonalar = xonalarni_ol() for nomi, info in xonalar.items(): print(f"{nomi}: {info['narx']} so‘m, Holat: {info['holat']}") xonalarni_korsat()

🛠️ Dastur Tuzish (2-qism)

2. Jami narxni hisoblash (reduce)

from functools import reduce xonalar = xonalarni_ol() bosh_xonalar = dict(filter(lambda x: x[1]["holat"] == "bo‘sh", xonalar.items())) jami_narx = reduce(lambda x, y: x + y, [info["narx"] for info in bosh_xonalar.values()]) print(f"Bo‘sh xonalar jami narxi: {jami_narx} so‘m")

3. Custom modul yaratish (utils.py)

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

🏋️ Amaliy Mashqlar

Mashq 1 & 2: Faylga yozish & map

  • `xonalar.txt` ga "Xona 104: 400000: band" ni qo'shing.
  • Barcha xonalar narxlariga 5% chegirma qo‘llang.

Mashq 3: reduce & filter

  • Barcha xonalar uchun jami narxni hisoblang.
  • Band holatdagi xonalarni 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:

  • `xonalar.txt` ga yana 2 ta xona qo‘shing.
  • Barcha narxlarga 25% chegirma qo‘llang.
  • 300000 so‘mdan qimmat xonalarni filtrlang.
  • `utils.py`ga jami narx hisoblaydigan funksiya yozing (`reduce` bilan).

Keyingi dars: "Tic Tac Toe" O'yini loyihasi 🎲

🗣️ 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.