{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cell-0",
   "metadata": {},
   "source": [
    "# 1-3-darslarni takrorlash\n",
    "## 15 ta vazifa\n",
    "\n",
    "\n",
    "**Mavzular:**\n",
    "- 1-dars: turlar, kiritish, shartlar\n",
    "- 2-dars: sikllar, roʻyxatlar, kesmalar\n",
    "- 3-dars: tuple/set/dict, funksiyalar, *args/**kwargs, lambda\n",
    "\n",
    "**Qanday yechiladi:** `pass` ni oʻz kodingiz bilan almashtiring va Shift+Enter bosing."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sec-1",
   "metadata": {},
   "source": [
    "---\n",
    "# 1-boʻlim. 1-dars: turlar va shartlar"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t1-md",
   "metadata": {},
   "source": [
    "## 1-vazifa. Haroratni oʻtkazish\n",
    "\n",
    "Selsiydagi qiymat berilgan. `F = C * 9/5 + 32` formulasi boʻyicha Farengeytga oʻtkazing va vergulgacha ikki xonali aniqlikda chiqaring.\n",
    "\n",
    "Maslahat: `f\"{value:.2f}\"`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t1",
   "metadata": {},
   "outputs": [],
   "source": [
    "c = 25.0\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t2-md",
   "metadata": {},
   "source": [
    "## 2-vazifa. Chegirma kalkulyatori\n",
    "\n",
    "Mahsulot narxi va kategoriya (`\"vip\"`, `\"regular\"`, `\"new\"`) berilgan. Yakuniy summani chiqaring:\n",
    "- VIP: 20% chegirma\n",
    "- regular: 10% chegirma\n",
    "- new: chegirmasiz\n",
    "- aks holda: \"nomaʼlum kategoriya\" "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t2",
   "metadata": {},
   "outputs": [],
   "source": [
    "price = 1000\n",
    "category = \"vip\"\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t3-md",
   "metadata": {},
   "source": [
    "## 3-vazifa. Ball boʻyicha baho\n",
    "\n",
    "0 dan 100 gacha ball berilgan. Bahoni chiqaring:\n",
    "- 90-100: \"A\"\n",
    "- 75-89:  \"B\"\n",
    "- 60-74:  \"C\"\n",
    "- 0-59:   \"F\"\n",
    "- aks holda:  \"nomaqbul ball\"\n",
    "\n",
    "Tekshiring: 95, 75, 60, 40, 150."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sec-2",
   "metadata": {},
   "source": [
    "---\n",
    "# 2-boʻlim. 2-dars: sikllar va roʻyxatlar"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t4-md",
   "metadata": {},
   "source": [
    "## 4-vazifa. 1 dan n gacha sonlar yigʻindisi\n",
    "\n",
    "`n` berilgan. 1 dan n gacha (n qoʻshilgan holda) sonlar yigʻindisini sikl orqali hisoblang (`sum()` siz).\n",
    "\n",
    "Tekshiring: n=100 uchun javob 5050."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t4",
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 100\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t5-md",
   "metadata": {},
   "source": [
    "## 5-vazifa. Roʻyxatni kesma orqali teskari qilish\n",
    "\n",
    "Roʻyxat berilgan. Uning teskarisini bir qatorda `[::-1]` kesma orqali oling.\n",
    "\n",
    "```python\n",
    "items = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n",
    "# Kutilgan natija: ['e', 'd', 'c', 'b', 'a']\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t5",
   "metadata": {},
   "outputs": [],
   "source": [
    "items = [\"a\", \"b\", \"c\", \"d\", \"e\"]\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t6-md",
   "metadata": {},
   "source": [
    "## 6-vazifa. Tartibni saqlab dublikatlarni oʻchirish\n",
    "\n",
    "Takrorlari bor roʻyxat berilgan. Birinchi paydo boʻlish tartibida unikal qiymatlar roʻyxatini oling.\n",
    "\n",
    "```python\n",
    "items = [1, 3, 1, 2, 3, 4, 2, 5]\n",
    "# Kutilgan natija: [1, 3, 2, 4, 5]\n",
    "```\n",
    "\n",
    "Maslahat: sikl va yordamchi `set` dan foydalaning."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t6",
   "metadata": {},
   "outputs": [],
   "source": [
    "items = [1, 3, 1, 2, 3, 4, 2, 5]\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sec-3",
   "metadata": {},
   "source": [
    "---\n",
    "# 3-boʻlim. 3-dars: tuple, set, dict"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t7-md",
   "metadata": {},
   "source": [
    "## 7-vazifa. Unikal soʻzlar\n",
    "\n",
    "Qator berilgan. Unikal soʻzlar sonini hisoblang (registr hisobga olinmasin).\n",
    "\n",
    "```python\n",
    "text = \"Python is great Python is fun and Python is fast\"\n",
    "# Kutilgan natija: 7\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t7",
   "metadata": {},
   "outputs": [],
   "source": [
    "text = \"Python is great Python is fun and Python is fast\"\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t8-md",
   "metadata": {},
   "source": [
    "## 8-vazifa. Harflar chastotasi\n",
    "\n",
    "Soʻz berilgan. `{harf: soni}` lugʻatini tuzing. Registr hisobga olinmasin.\n",
    "\n",
    "```python\n",
    "word = \"programming\"\n",
    "# Kutilgan natija: {'p': 1, 'r': 2, 'o': 1, 'g': 2, 'a': 1, 'm': 2, 'i': 1, 'n': 1}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t8",
   "metadata": {},
   "outputs": [],
   "source": [
    "word = \"programming\"\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t9-md",
   "metadata": {},
   "source": [
    "## 9-vazifa. Qiziqishlar kesishmasi\n",
    "\n",
    "Ikki foydalanuvchining qiziqishlari berilgan. Toping:\n",
    "- umumiy (`&`)\n",
    "- faqat birinchisidagi (`-`)\n",
    "- hammasi birga (`|`)\n",
    "\n",
    "```python\n",
    "anya  = {\"python\", \"sql\", \"git\", \"docker\"}\n",
    "boris = {\"python\", \"java\", \"git\", \"linux\"}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t9",
   "metadata": {},
   "outputs": [],
   "source": [
    "anya  = {\"python\", \"sql\", \"git\", \"docker\"}\n",
    "boris = {\"python\", \"java\", \"git\", \"linux\"}\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sec-4",
   "metadata": {},
   "source": [
    "---\n",
    "# 4-boʻlim. 3-dars: funksiyalar, *args, **kwargs, lambda"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t10-md",
   "metadata": {},
   "source": [
    "## 10-vazifa. *args orqali oʻrtacha ball\n",
    "\n",
    "Oʻrtachani qaytaruvchi `avg(*scores)` funksiyasini yozing. Argument boʻlmasa - `0` ni qaytaring.\n",
    "\n",
    "```python\n",
    "avg(85, 72, 91)   # 82.666...\n",
    "avg()             # 0\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t10",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t11-md",
   "metadata": {},
   "source": [
    "## 11-vazifa. **kwargs orqali CSV-qator\n",
    "\n",
    "`to_csv_row(**fields)` funksiyasini yozing, u `key1=val1,key2=val2,...` koʻrinishidagi qatorni qaytaradi.\n",
    "\n",
    "```python\n",
    "to_csv_row(name=\"Anya\", age=30, city=\"Toshkent\")\n",
    "# 'name=Anya,age=30,city=Toshkent'\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t11",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t12-md",
   "metadata": {},
   "source": [
    "## 12-vazifa. Soʻzlarni uzunlik boʻyicha guruhlash\n",
    "\n",
    "`group_by_len(words)` funksiyasini yozing, u `{uzunlik: [shu uzunlikdagi soʻzlar]}` ni qaytaradi.\n",
    "\n",
    "```python\n",
    "words = [\"sun\", \"moon\", \"sky\", \"star\", \"cloud\", \"rain\", \"snow\"]\n",
    "# {3: ['sun', 'sky'], 4: ['moon', 'star', 'rain', 'snow'], 5: ['cloud']}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t12",
   "metadata": {},
   "outputs": [],
   "source": [
    "words = [\"sun\", \"moon\", \"sky\", \"star\", \"cloud\", \"rain\", \"snow\"]\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sec-5",
   "metadata": {},
   "source": [
    "---\n",
    "# 5-boʻlim. Yakuniy vazifalar"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t13-md",
   "metadata": {},
   "source": [
    "## 13-vazifa. Top-N talabalar\n",
    "\n",
    "`{ism: ball}` lugʻati berilgan. `top_n(scores, n=3)` funksiyasini yozing, u ballar kamayish tartibida `(ism, ball)` juftliklari roʻyxatini qaytaradi.\n",
    "\n",
    "```python\n",
    "scores = {\"Anya\": 85, \"Boris\": 72, \"Vika\": 91, \"Gleb\": 68, \"Dima\": 88}\n",
    "top_n(scores, 3)\n",
    "# [('Vika', 91), ('Dima', 88), ('Anya', 85)]\n",
    "```\n",
    "\n",
    "Maslahat: `sorted(...)` + `lambda` + `[:n]` kesma."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t13",
   "metadata": {},
   "outputs": [],
   "source": [
    "scores = {\"Anya\": 85, \"Boris\": 72, \"Vika\": 91, \"Gleb\": 68, \"Dima\": 88}\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t14-md",
   "metadata": {},
   "source": [
    "## 14-vazifa. CSV-qatorlar parseri\n",
    "\n",
    "`\"ism,yosh,shahar\"` formatidagi qatorlar roʻyxati berilgan. Lugʻatlar roʻyxatini tuzing. Yosh - `int`, qolganlari - qatorlar.\n",
    "\n",
    "```python\n",
    "rows = [\n",
    "    \"Anya,30,Toshkent\",\n",
    "    \"Boris,25,Samarqand\",\n",
    "]\n",
    "# [{'name': 'Anya', 'age': 30, 'city': 'Toshkent'}, ...]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t14",
   "metadata": {},
   "outputs": [],
   "source": [
    "rows = [\n",
    "    \"Anya,30,Toshkent\",\n",
    "    \"Boris,25,Samarqand\",\n",
    "    \"Vika,28,Buxoro\",\n",
    "]\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "t15-md",
   "metadata": {},
   "source": [
    "## 15-vazifa. Baholar tahlilchisi (yakuniy)\n",
    "\n",
    "`analyze(students, passing=60)` funksiyasini yozing. `{\"name\": str, \"score\": int}` koʻrinishidagi lugʻatlar roʻyxatini qabul qiladi va statistikani qaytaradi:\n",
    "\n",
    "- `total` - jami talabalar soni\n",
    "- `passed` - nechtasi oʻtdi (`score >= passing`)\n",
    "- `failed` - nechtasi oʻtmadi\n",
    "- `avg_passed` - oʻtganlarning oʻrtacha bali (yoki 0)\n",
    "- `top` - eng yaxshisining ismi (yoki `None`, agar roʻyxat boʻsh boʻlsa)\n",
    "\n",
    "Bu yerda barcha mavzular ishlaydi: sikl, shart, dict, list, funksiya, default, lambda, max."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "t15",
   "metadata": {},
   "outputs": [],
   "source": [
    "students = [\n",
    "    {\"name\": \"Anya\",  \"score\": 85},\n",
    "    {\"name\": \"Boris\", \"score\": 42},\n",
    "    {\"name\": \"Vika\",  \"score\": 91},\n",
    "    {\"name\": \"Gleb\",  \"score\": 58},\n",
    "    {\"name\": \"Dima\",  \"score\": 73},\n",
    "]\n",
    "\n",
    "# Sizning kodingiz\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cell-final",
   "metadata": {},
   "source": [
    "---\n",
    "## Keyingi qadam\n",
    "\n",
    "Agar barcha 15 ta vazifa yechilgan boʻlsa - **4-darsga** (OOP) tayyorsiz."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}