<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Nodir Ustoz</title><generator>teletype.in</generator><description><![CDATA[Nodir Ustoz]]></description><image><url>https://img1.teletype.in/files/cb/8b/cb8b6713-d1b9-453a-b9dd-69904e08471c.png</url><title>Nodir Ustoz</title><link>https://teletype.in/@nodirustoz</link></image><link>https://teletype.in/@nodirustoz?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/nodirustoz?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/nodirustoz?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 17 May 2026 22:35:15 GMT</pubDate><lastBuildDate>Sun, 17 May 2026 22:35:15 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/SQL</guid><link>https://teletype.in/@nodirustoz/SQL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/SQL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python SQLite — To'liq o'quv qo'llanma</title><pubDate>Sat, 04 Apr 2026 17:18:36 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/75/59/75590d5d-d270-4a69-a98c-143813cdeb28.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/8a/ea/8aeae461-5455-48c9-9ef4-10bc2409140e.png"></img>Ma'lumotlar bazasi (MB) — bu ma'lumotlarni tartibli, xavfsiz va tezkor saqlash, boshqarish va qidirish imkonini beradigan tizim. Oddiy qilib aytganda, bu kompyuter xotirasidagi &quot;aqlli daftar&quot; — lekin oddiy daftardan ming marta kuchli va tezkor.]]></description><content:encoded><![CDATA[
  <h1 id="python-sqlite--toliq-oquv-qollanma">Mundarija</h1>
  <ol id="0eQZ">
    <li id="pIfn"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#1-mbbt-nima-va-relyatsion-malumotlar-bazalari" target="_blank">MBBT nima va relyatsion ma&#x27;lumotlar bazalari</a></li>
    <li id="O3Hl"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#2-malumotlar-bazasiga-ulanish-jadval-yaratish-va-ochirish" target="_blank">Ma&#x27;lumotlar bazasiga ulanish, jadval yaratish va o&#x27;chirish</a></li>
    <li id="uvBT"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#3-select-va-insert-buyruqlari" target="_blank">SELECT va INSERT buyruqlari</a></li>
    <li id="t0i5"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#4-update-va-delete-buyruqlari" target="_blank">UPDATE va DELETE buyruqlari</a></li>
    <li id="NlKZ"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#5-agregirlash-va-group-by-bilan-guruhlash" target="_blank">Agregirlash va GROUP BY bilan guruhlash</a></li>
    <li id="HkMB"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#6-join-operatori--svodka-hisobot-yaratish" target="_blank">JOIN operatori — svodka hisobot yaratish</a></li>
    <li id="7WsU"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#7-union-operatori--jadvallarni-birlashtirish" target="_blank">UNION operatori — jadvallarni birlashtirish</a></li>
    <li id="Z8FL"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#8-ichki-sql-sorovlar" target="_blank">Ichki SQL so&#x27;rovlar</a></li>
    <li id="abhE"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#9-execute-executemany-executescript-commit-rollback-metodlari" target="_blank">execute, executemany, executescript, commit, rollback metodlari</a></li>
    <li id="35J0"><a href="https://file+.vscode-resource.vscode-cdn.net/d%3A/Downloads/python_sqlite_toliq_qollanma.md#10-fetchall-fetchmany-fetchone-iterdump-metodlari" target="_blank">fetchall, fetchmany, fetchone, iterdump metodlari</a></li>
  </ol>
  <hr />
  <h2 id="1-mbbt-nima-va-relyatsion-malumotlar-bazalari">1. MBBT nima va relyatsion ma&#x27;lumotlar bazalari</h2>
  <h3 id="malumotlar-bazasi-nima">Ma&#x27;lumotlar bazasi nima?</h3>
  <p id="NkKI">Ma&#x27;lumotlar bazasi (MB) — bu ma&#x27;lumotlarni tartibli, xavfsiz va tezkor saqlash, boshqarish va qidirish imkonini beradigan tizim. Oddiy qilib aytganda, bu kompyuter xotirasidagi &quot;aqlli daftar&quot; — lekin oddiy daftardan ming marta kuchli va tezkor.</p>
  <p id="oQGM">Keling, hayotiy misol bilan tushunaylik. Tasavvur qiling, siz &quot;Mina qidiruvchi&quot; (Saper) o&#x27;yinini yaratyapsiz. O&#x27;yinda o&#x27;yinchilarning natijalari va profillarini saqlash kerak. Har bir o&#x27;yinchining ismi, yoshi, jinsi, o&#x27;yinlardagi natijalari — bularning barchasini biror joyda saqlash va kerak bo&#x27;lganda tezda topish kerak bo&#x27;ladi.</p>
  <p id="Nt6t">Odatda, bu maqsadda <strong>ma&#x27;lumotlar bazasi</strong> yaratiladi va unda <strong>jadvallar</strong> to&#x27;plami saqlanadi. Jadval — bu xuddi Excel dagi kataklarga o&#x27;xshash tuzilma: ustunlar (maydonlar) va satrlar (yozuvlar) dan iborat.</p>
  <p id="7Kv0">Bizning misolda ikkita jadval bo&#x27;lsin: <strong>&quot;O&#x27;yinchilar&quot;</strong> (users) va <strong>&quot;O&#x27;yinlar&quot;</strong> (games). Har bir jadval belgilangan tuzilmaga (ustunlar to&#x27;plami) va ma&#x27;lum miqdordagi yozuvlarga (satrlar) ega bo&#x27;ladi.</p>
  <figure id="SvkO" class="m_column">
    <img src="https://img4.teletype.in/files/3a/77/3a77ebe7-b338-48c8-a498-3a6a737368af.png" width="947" />
  </figure>
  <figure id="Phvl" class="m_column">
    <img src="https://img3.teletype.in/files/69/4f/694f74d3-a74d-4f1b-8a2b-7378fdc7063b.png" width="954" />
  </figure>
  <p id="PKVd">Bu yerda diqqatga sazovor narsa bor: games jadvalidagi <code>user_id</code> maydoni. Bu maydon o&#x27;yinchi identifikatorini saqlaydi va u orqali &quot;bu o&#x27;yinni KIM o&#x27;ynagan?&quot; degan savolga javob topish mumkin. Shu kalit orqali keyinchalik ikkala jadvalni <strong>bog&#x27;lab</strong>, svodka (yig&#x27;ma) ma&#x27;lumotlar olish mumkin bo&#x27;ladi.</p>
  <p id="zmbu">Bunday bog&#x27;lanish ingliz tilida <strong>relation</strong> (munosabat) deb ataladi. Shu so&#x27;zdan <strong>relyatsion ma&#x27;lumotlar bazasi</strong> nomi kelib chiqqan — ya&#x27;ni, jadvallar o&#x27;zaro bog&#x27;lanish imkoniyatiga ega bazalar. Keyingi darslarda biz faqat shu turdagi ma&#x27;lumotlar bazalari haqida gaplashamiz.</p>
  <p id="Becy">Ahamiyatli nuqta: jadvallarning tuzilmasi — qanday ustunlar bo&#x27;lishi, ularning turlari va nomlari — dasturchi tomonidan belgilanadi va loyihaga qarab har xil bo&#x27;lishi mumkin. Yuqoridagi jadvallar faqat misol, sizning loyihangizda butunlay boshqacha tuzilma bo&#x27;lishi tabiiy.</p>
  <h3 id="nima-uchun-oddiy-faylga-yozmaslik-kerak">Nima uchun oddiy faylga yozmaslik kerak?</h3>
  <p id="Om7a">Yaxshi savol! Ko&#x27;pchilik boshlovchi dasturchilarda shunday savol tug&#x27;iladi: &quot;Nima uchun shunchaki fayl yaratib, ma&#x27;lumotlarni u yerga yozib qo&#x27;ymaslik kerak?&quot;</p>
  <p id="UH6S">Darhaqiqat, oddiy faylga yozish ham mumkin. Lekin bu yo&#x27;lda bir qator jiddiy muammolar yuzaga keladi:</p>
  <p id="eyPQ"><strong>1. Xavfsizlik muammosi:</strong> Dastur ma&#x27;lumotni faylga yozayotgan paytda elektr toki o&#x27;chib qolsa yoki dastur xatolikka uchrasa nima bo&#x27;ladi? Ma&#x27;lumotlar yarim yozilgan holatda qolishi va buzilishi mumkin. Ma&#x27;lumotlar bazasi esa maxsus mexanizmlar orqali bunday holatlardan himoyalangan — u yoki ma&#x27;lumotni to&#x27;liq yozadi, yoki umuman yozmaydi.</p>
  <p id="IJBn"><strong>2. Format muammosi:</strong> Ma&#x27;lumotni faylda qanday formatda saqlash kerak? Vergul bilan ajratib yozamizmi? Har bir ma&#x27;lumotni yangi qatorga yozamizmi? Agar format to&#x27;g&#x27;ri tanlanmasa, keyinchalik ma&#x27;lumotni o&#x27;qish va tahlil qilish juda qiyinlashadi. Ma&#x27;lumotlar bazasida esa format avtomatik boshqariladi.</p>
  <p id="AAtK"><strong>3. Qidirish muammosi:</strong> Faylda 100 000 ta yozuv bor deylik. Ichidan bitta aniq yozuvni qanday topasiz? Butun faylni boshidan oxirigacha o&#x27;qib chiqishdan boshqa iloj yo&#x27;q. Bu juda sekin. Ma&#x27;lumotlar bazasi esa maxsus indekslar yordamida yozuvni deyarli bir zumda topadi.</p>
  <p id="XZ2W"><strong>4. Bir nechta jadval muammosi:</strong> Agar ma&#x27;lumotlar bir nechta jadvallarga bo&#x27;lingan bo&#x27;lsa (masalan, o&#x27;yinchilar va o&#x27;yinlar alohida), ularni faylda qanday bog&#x27;laysiz? Bu uchun murakkab kod yozish kerak. Ma&#x27;lumotlar bazasida esa bu bitta SQL buyrug&#x27;i bilan hal bo&#x27;ladi.</p>
  <p id="JIMA"><strong>5. Bir vaqtda foydalanish:</strong> Agar bir nechta dastur yoki foydalanuvchi bir vaqtda bitta faylga yozmoqchi bo&#x27;lsa nima bo&#x27;ladi? Ma&#x27;lumotlar aralashib ketishi yoki yo&#x27;qolib qolishi mumkin. Ma&#x27;lumotlar bazasi esa bunday holatlarni avtomatik boshqaradi.</p>
  <p id="mm8N">Bularning barchasi — oddiy masalalar emas. Shu sababli, dasturchilar turli xil <strong>MBBT (Ma&#x27;lumotlar Bazasini Boshqarish Tizimi)</strong> dan foydalanishadi. MBBT — bu maxsus dasturiy ta&#x27;minot bo&#x27;lib, u ma&#x27;lumotlarni saqlash, qidirish, o&#x27;zgartirish va himoya qilish bilan shug&#x27;ullanadi. Dasturchi esa faqat &quot;nima kerak&quot; deb aytadi, MBBT &quot;qanday qilish kerak&quot; ni o&#x27;zi hal qiladi.</p>
  <h3 id="mbbt-qanday-ishlaydi">MBBT qanday ishlaydi?</h3>
  <p id="b94x">Ma&#x27;lum bir MBBT tanlagach, dasturchi uning <strong>API</strong> (Application Programming Interface — Ilovalar Dasturlash Interfeysi) ga kirish huquqini oladi. API — bu MBBT bilan muloqot qilish uchun tayyor funksiyalar to&#x27;plami. Dasturchi bu funksiyalar orqali ma&#x27;lumotlar bazasiga buyruqlar yuboradi: &quot;jadval yarat&quot;, &quot;yozuv qo&#x27;sh&quot;, &quot;ma&#x27;lumot top&quot; va hokazo.</p>
  <p id="8BrY">Sodda qilib aytganda, API — bu MBBT ning &quot;eshigi&quot;. Siz bu eshikdan kirib, o&#x27;z so&#x27;rovlaringizni aytasiz va javob olasiz. Ichkarida nima sodir bo&#x27;layotganini bilishingiz shart emas — MBBT o&#x27;zi boshqaradi.</p>
  <h3 id="python-uchun-mashhur-mbbtlar">Python uchun mashhur MBBT&#x27;lar</h3>
  <p id="35C0">Python dasturlash tilida quyidagi MBBT&#x27;lar eng mashhur:</p>
  <ul id="g0lZ">
    <li id="dTGM"><strong>PyMySQL</strong> — MySQL bilan ishlash uchun mo&#x27;ljallangan. MySQL — bu asosan veb-saytlar va onlayn tizimlar uchun ishlatiladigan kuchli MBBT.</li>
    <li id="DTsE"><strong>Python SQLite</strong> — yengil va tezkor baza. Alohida server o&#x27;rnatish talab qilinmaydi, butun baza bitta faylda saqlanadi. Kichik va o&#x27;rta loyihalar uchun ideal.</li>
    <li id="8F21"><strong>Python PostgreSQL</strong> — kuchli korporativ baza. Katta va murakkab loyihalar uchun ishlatiladi.</li>
  </ul>
  <p id="mHTB">Biz <strong>SQLite</strong> paketini o&#x27;rganamiz. Buning bir nechta muhim sababi bor:</p>
  <ol id="eIbJ">
    <li id="P99e"><strong>Eng sodda</strong> — o&#x27;rganish uchun eng qulay MBBT</li>
    <li id="Oiy1"><strong>Standart ta&#x27;minotda</strong> — Python&#x27;ning standart kutubxonasiga kiritilgan, alohida o&#x27;rnatish shart emas</li>
    <li id="EISg"><strong>Keng tarqalgan</strong> — juda ko&#x27;p ilovalarda ishlatiladi (masalan, Android telefonlardagi ko&#x27;plab ilovalar SQLite dan foydalanadi)</li>
    <li id="DwWA"><strong>SQL tilini o&#x27;rgatadi</strong> — bu yerda o&#x27;rgangan SQL bilimlaringiz MySQL, PostgreSQL va boshqa MBBT&#x27;larda ham ishlaydi</li>
  </ol>
  <h3 id="sqlite-xususiyatlari">SQLite xususiyatlari</h3>
  <p id="LpeH">SQLite yengil diskli MB yaratish uchun ishlatiladi. Butun ma&#x27;lumotlar bazasi bitta <code>.db</code> faylida saqlanadi. Uning ba&#x27;zi muhim xususiyatlarini bilish kerak:</p>
  <p id="oW0g"><strong>Afzalliklari:</strong></p>
  <ul id="G9co">
    <li id="3sai">Alohida server o&#x27;rnatish kerak emas (MySQL yoki PostgreSQL&#x27;dan farqli o&#x27;laroq)</li>
    <li id="w669">Butun baza bitta faylda — ko&#x27;chirish, zaxira olish oson</li>
    <li id="yOyD">Python&#x27;ning standart ta&#x27;minotida bor</li>
    <li id="6dnG">Juda tez ishlaydi (ayniqsa o&#x27;qish operatsiyalarida)</li>
    <li id="l1vj">Kichik hajmli ilovalar uchun ideal</li>
  </ul>
  <p id="VMRB"><strong>Cheklovlari:</strong></p>
  <ul id="3uKm">
    <li id="Z9x8">Tarmoq aloqasini qo&#x27;llab-quvvatlamaydi (faqat lokal fayl bilan ishlaydi). Ya&#x27;ni, boshqa kompyuterdan ulanib ishlab bo&#x27;lmaydi (faqat faylni ulashish orqali)</li>
    <li id="B1ne">Yozish cheklovi: bir vaqtda faqat bitta oqim (thread) yoki jarayon (process) yozishi mumkin. Ikkinchi dastur yozmoqchi bo&#x27;lsa, birinchisi tugashini kutishi kerak</li>
    <li id="qRzz">O&#x27;qish cheklovi yo&#x27;q: bir vaqtda ko&#x27;plab foydalanuvchilar o&#x27;qishi mumkin</li>
    <li id="pnQc">&quot;Bir yozadi — ko&#x27;plari o&#x27;qiydi&quot; tamoyili bo&#x27;yicha ishlaydi</li>
  </ul>
  <p id="FZjK">SQLite turli ilovalar uchun ma&#x27;lumot saqlashda ideal yechim — o&#x27;yinlar, mobil ilovalar, kichik veb-saytlar, shaxsiy loyihalar uchun juda mos keladi. MBBT bilan barcha aloqa bir nechta metod orqali amalga oshiriladi, ularning eng asosiysi:</p>
  <pre id="4T4i">execute(SQL)
</pre>
  <p id="3lgK">Bu metod MBBT&#x27;ga <strong>SQL</strong> (Structured Query Language — Tuzilmali So&#x27;rovlar Tili) tilida yozilgan so&#x27;rovni bajarish ko&#x27;rsatmasini beradi. Amalda, MB bilan barcha muloqot shu til orqali amalga oshiriladi.</p>
  <h3 id="sql-tili-haqida">SQL tili haqida</h3>
  <p id="ISok">Ehtimol, sizga &quot;ma&#x27;lumotlar bazasi bilan ishlash uchun yana bitta tilni o&#x27;rganish kerakmi?&quot; deb tuyulishi mumkin. Lekin bu bunga arziydi, chunki:</p>
  <ol id="qKUh">
    <li id="o1yZ"><strong>SQL juda keng tarqalgan</strong> — dunyodagi deyarli barcha MBBT&#x27;lar SQL tilini ishlatadi</li>
    <li id="gWAx"><strong>SQL oddiy</strong> — u faqat bir nechta asosiy buyruqdan iborat va o&#x27;rganish oson</li>
    <li id="GgyF"><strong>SQL universal</strong> — bir MBBT&#x27;da o&#x27;rgangan bilimlaringiz boshqasida ham ishlaydi</li>
    <li id="6iJ1"><strong>SQL kuchli</strong> — bir necha so&#x27;z bilan millionlab yozuvlardan kerakligini topish mumkin</li>
  </ol>
  <p id="Lfye">SQL — juda keng tarqalgan til va ko&#x27;plab MBBT&#x27;lar uni interfeys sifatida ishlatadi. Masalan, saytlar yaratishda mashhur bo&#x27;lgan MySQL ham SQL tilini ishlatadi. Turli MBBT&#x27;larda bu tilning biroz farqli <strong>dialektlari</strong> (lahjalar) mavjud — ayrim buyruqlar biroz boshqacha yozilishi mumkin. Lekin eng ko&#x27;p ishlatiladigan elementlari barcha MBBT&#x27;larda bir xilligicha qoladi.</p>
  <p id="sgb2">Shunday qilib, SQLite bilan ishlashni o&#x27;rganish uchun asosan SQL tilini o&#x27;zlashtirish kerak.</p>
  <h3 id="db-browser-for-sqlite-dasturi">DB Browser for SQLite dasturi</h3>
  <p id="akY7">SQLite bilan ishlashni o&#x27;rganishda <strong>DB Browser for SQLite</strong> dasturi juda qo&#x27;l keladi. Bu bepul dastur bo&#x27;lib, u orqali:</p>
  <ul id="1des">
    <li id="sMjn">Ma&#x27;lumotlar bazasini vizual (ko&#x27;z bilan ko&#x27;rinadigan) ko&#x27;rinishda ochish mumkin</li>
    <li id="Pb9s">Jadvallarni ko&#x27;rish, yozuvlarni qo&#x27;shish va tahrirlash mumkin</li>
    <li id="uD4y">SQL so&#x27;rovlarni yozib bajarish va natijalarni darhol ko&#x27;rish mumkin</li>
    <li id="wwwe">Jadval tuzilmasini ko&#x27;rib chiqish mumkin</li>
  </ul>
  <p id="Lm39">Dasturni rasmiy saytdan yuklab olish mumkin: <strong><a href="https://sqlitebrowser.org/" target="_blank">https://sqlitebrowser.org</a></strong></p>
  <p id="DFXS">Saytga kirib, &quot;Download&quot; tugmasini bosing va o&#x27;z operatsion tizimingiz (Windows, macOS yoki Linux) uchun o&#x27;rnatgichni tanlang. O&#x27;rnatib ishga tushirganingizdan so&#x27;ng, dastur oynasini ko&#x27;rasiz — u yerda MB fayllarini ochish va boshqarish mumkin.</p>
  <p id="bgo4">Bu dastur bizga SQL so&#x27;rovlarni sinab ko&#x27;rishda juda yordam beradi — Python dasturida yozmasdan oldin, avval DB Browser&#x27;da sinab ko&#x27;rish va natijani ko&#x27;rish qulayroq.</p>
  <hr />
  <h2 id="2-malumotlar-bazasiga-ulanish-jadval-yaratish-va-ochirish">2. Ma&#x27;lumotlar bazasiga ulanish, jadval yaratish va o&#x27;chirish</h2>
  <h3 id="sqlite-modulini-ulash">SQLite modulini ulash</h3>
  <p id="s2eK">Python dasturida SQLite MBBT&#x27;dan foydalanish uchun avvalo modulni import qilish kerak:</p>
  <pre id="xtDP">import sqlite3
</pre>
  <p id="GZRv">Bu bitta qatorni dasturingizning boshiga yozsangiz bas — SQLite&#x27;ning barcha funksiyalari mavjud bo&#x27;ladi. Hech qanday qo&#x27;shimcha o&#x27;rnatish kerak emas, chunki <code>sqlite3</code> moduli Python bilan birga keladi.</p>
  <p id="xGy6">Ko&#x27;p dasturchilar modulga qisqa nom berishadi, shunda har safar <code>sqlite3</code> deb to&#x27;liq yozish shart bo&#x27;lmaydi:</p>
  <pre id="TXez">import sqlite3 as sq
</pre>
  <p id="Sf6S">Endi <code>sqlite3</code> o&#x27;rniga qisqacha <code>sq</code> deb yozish mumkin.</p>
  <h3 id="bazaga-ulanish--oddiy-shablon">Bazaga ulanish — oddiy shablon</h3>
  <p id="qaEB">Ma&#x27;lumotlar bazasi bilan ishlash uchun avval unga <strong>ulanish</strong> (connect) kerak. Bu xuddi telefon qilish uchun avval raqamni terish kabi — avval aloqa o&#x27;rnatiladi, keyin gaplashiladi:</p>
  <pre id="oIgo">import sqlite3 as sq

con = sq.connect(&quot;saper.db&quot;)
cur = con.cursor()

cur.execute(&quot;&quot;&quot;
&quot;&quot;&quot;)

con.close()
</pre>
  <p id="zJRk">Bu kodda nima bo&#x27;layotganini bosqichma-bosqich tushuntiramiz:</p>
  <p id="dGEz"><strong>1-qadam: <code>sq.connect(&quot;saper.db&quot;)</code></strong> — bu metod <code>saper.db</code> nomli fayl bilan aloqa o&#x27;rnatadi. Agar bu fayl mavjud bo&#x27;lsa — ochiladi. Agar mavjud bo&#x27;lmasa — yangi fayl yaratiladi. Ya&#x27;ni, siz birinchi marta dasturni ishga tushirganingizda, MB fayli avtomatik yaratiladi! Fayl kengaytmalari odatda quyidagicha bo&#x27;ladi: <code>.db</code>, <code>.db3</code>, <code>.sqlite</code>, <code>.sqlite3</code>. Bu kengaytmalarning barchasi bir xil ma&#x27;noga ega, lekin <code>.db</code> eng qisqa va qulay.</p>
  <p id="K04c"><strong>2-qadam: <code>con.cursor()</code></strong> — &quot;kursor&quot; yaratiladi. Kursor — bu MB bilan muloqot qilish uchun &quot;vositachi&quot; ob&#x27;ekt. Barcha SQL so&#x27;rovlar kursor orqali yuboriladi. Kursorni MB ning &quot;qo&#x27;li&quot; deb tasavvur qilish mumkin — u sizning buyruqlaringizni bajaradi.</p>
  <p id="Cild"><strong>3-qadam: <code>cur.execute(&quot;...&quot;)</code></strong> — kursor orqali SQL so&#x27;rov yuboriladi. Bu metod MBBT&#x27;ga &quot;mana bu buyruqni bajaring&quot; deb aytadi. Hozircha biz hech qanday buyruq yozmaymiz (bo&#x27;sh qoldiramiz).</p>
  <p id="ZS5H"><strong>4-qadam: <code>con.close()</code></strong> — ish tugagach, ulanish yopiladi. Bu muhim qadam! Agar ulanishni yopmasangiz, fayl &quot;band&quot; holatida qolib ketishi mumkin.</p>
  <h3 id="kontekst-menejeri-bilan-ishlash-tavsiya-etiladi">Kontekst menejeri bilan ishlash (tavsiya etiladi)</h3>
  <p id="k9wN">Yuqoridagi usulda bir muammo bor: agar dastur o&#x27;rtasida xatolik yuz bersa, <code>con.close()</code> qatoriga yetib bormasligi mumkin va ulanish ochiq qolib ketadi. Bu muammoni hal qilish uchun Python&#x27;ning <strong>kontekst menejeri</strong> (<code>with</code> kalit so&#x27;zi) dan foydalaniladi:</p>
  <pre id="EweQ">with sq.connect(&quot;saper.db&quot;) as con:
    cur = con.cursor()
    cur.execute(&quot;&quot;&quot;
    &quot;&quot;&quot;)
</pre>
  <p id="XDIk">Kontekst menejeri avtomatik ravishda ikkita muhim amalni bajaradi:</p>
  <ul id="BVw1">
    <li id="dBBh"><code>con.commit()</code> — barcha o&#x27;zgarishlarni MB&#x27;ga saqlaydi (diskka yozadi)</li>
    <li id="jdry"><code>con.close()</code> — ulanishni yopadi</li>
  </ul>
  <p id="h9ti"><strong>Eng muhimi:</strong> kontekst menejeri bu amallarni <strong>hatto xatolik yuz berganda ham</strong> bajaradi. Shuning uchun bu usul ancha xavfsiz va ishonchli. Biz keyingi barcha misollarda aynan shu usuldan foydalanamiz.</p>
  <p id="LzZC"><code>commit()</code> metodini tushuntirish: Siz MB&#x27;ga o&#x27;zgartirishlar kiritganingizda (yozuv qo&#x27;shish, o&#x27;zgartirish, o&#x27;chirish), bu o&#x27;zgarishlar darhol diskka yozilmaydi — ular xotirada (RAM) saqlanadi. Faqat <code>commit()</code> chaqirilganda barcha o&#x27;zgarishlar diskdagi faylga yoziladi. Bu samaradorlik uchun qilingan — diskka yozish sekin operatsiya, shuning uchun ko&#x27;plab o&#x27;zgarishlarni to&#x27;plab, bir marta yozish tezroq ishlaydi.</p>
  <h3 id="jadval-yaratish">Jadval yaratish</h3>
  <p id="KYAX">Ma&#x27;lumotlar bazasida ma&#x27;lumotlar <strong>jadvallar</strong> ko&#x27;rinishida saqlanadi. Har bir MB ko&#x27;plab jadvallarni o&#x27;z ichiga olishi mumkin. Har bir jadval bitta mavzuga tegishli ma&#x27;lumotlarni saqlaydi: masalan, &quot;O&#x27;yinchilar&quot; jadvali faqat o&#x27;yinchilar haqida, &quot;O&#x27;yinlar&quot; jadvali faqat o&#x27;yinlar haqida.</p>
  <p id="jdJQ">Jadval yaratishdan oldin uning <strong>tuzilmasini</strong> aniqlash kerak — qanday ustunlar bo&#x27;ladi va ular qanday turdagi ma&#x27;lumotlarni saqlaydi.</p>
  <p id="ZiTh">Birinchi jadvalimizni quyidagi tuzilma bilan yaratamiz:</p>
  <figure id="zFxe" class="m_original">
    <img src="https://img1.teletype.in/files/cb/5b/cb5b061f-d1e0-4e90-bd9e-463394e13855.png" width="709" />
  </figure>
  <h3 id="sqlite-malumot-turlari">SQLite ma&#x27;lumot turlari</h3>
  <p id="4vQp">Har bir ustunning ma&#x27;lumot turini to&#x27;g&#x27;ri tanlash juda muhim. SQLite&#x27;da quyidagi asosiy turlar mavjud:</p>
  <figure id="43Th" class="m_column">
    <img src="https://img4.teletype.in/files/72/da/72dab55b-3a87-4be9-af55-2330e0dd0a45.png" width="910" />
  </figure>
  <p id="CmJC"><strong>TEXT</strong> — eng ko&#x27;p ishlatiladigan tur. Ismlar, manzillar, tavsiflar — barchasi TEXT turiga kiradi.</p>
  <p id="3GZr"><strong>INTEGER</strong> — butun sonlar uchun. Yosh, ochkolar soni, miqdor — barchasi INTEGER.</p>
  <p id="9vqx"><strong>REAL</strong> — o&#x27;nlik sonlar uchun. Narxlar, harorat, koordinatalar.</p>
  <p id="EuvG"><strong>BLOB</strong> — ikkilik ma&#x27;lumotlar uchun. Bu maxsus tur bo&#x27;lib, rasmlar yoki boshqa fayllarni to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri bazada saqlash uchun ishlatiladi. Bu haqda 10-darsda batafsil gaplashamiz.</p>
  <p id="sGUO"><strong>NULL</strong> — bu &quot;hech narsa&quot; yoki &quot;noma&#x27;lum&quot; ma&#x27;nosini bildiradi. Masalan, agar o&#x27;yinchining telefon raqami kiritilmagan bo&#x27;lsa, u yerda NULL bo&#x27;ladi.</p>
  <h3 id="sql-sorov-bilan-jadval-yaratish">SQL so&#x27;rov bilan jadval yaratish</h3>
  <p id="UoEK">Endi jadval yaratish uchun SQL buyrug&#x27;ini yozamiz:</p>
  <pre id="B6fH">cur.execute(&quot;&quot;&quot;CREATE TABLE users (
    name TEXT,
    jins INTEGER,
    old INTEGER,
    score INTEGER
)&quot;&quot;&quot;)
</pre>
  <p id="Opzs">Bu yerda nima bo&#x27;layotganini tushuntiramiz:</p>
  <ul id="8D2J">
    <li id="qCAg"><code>CREATE TABLE</code> — &quot;jadval yarat&quot; degan SQL buyrug&#x27;i</li>
    <li id="cnqa"><code>users</code> — jadval nomi (biz tanlagan nom)</li>
    <li id="hBPt">Qavslar ichida — ustunlar ro&#x27;yxati: har bir ustunning nomi va turi vergul bilan ajratiladi</li>
  </ul>
  <p id="G7mf"><strong>Yozish qoidasi:</strong> SQL buyruqlar va turlar nomlari <strong>KATTA HARFDA</strong> (masalan, <code>CREATE TABLE</code>, <code>TEXT</code>, <code>INTEGER</code>), jadval va ustun nomlari esa <strong>kichik harfda</strong> (masalan, <code>users</code>, <code>name</code>, <code>score</code>) yoziladi. Bu majburiy emas — SQLite katta-kichik harfni farqlamaydi — lekin bu umume&#x27;tirof etilgan qoida va kodni o&#x27;qishni osonlashtiradi.</p>
  <h3 id="if-not-exists--mavjud-bolsa-yaratmaslik">IF NOT EXISTS — mavjud bo&#x27;lsa yaratmaslik</h3>
  <p id="lHty">Dasturni ikkinchi marta ishga tushirsangiz, <code>users</code> jadvali allaqachon mavjud bo&#x27;lgani uchun <strong>xatolik</strong> yuzaga keladi: &quot;jadval allaqachon bor!&quot; Buni oldini olish uchun <code>IF NOT EXISTS</code> iborasini qo&#x27;shamiz:</p>
  <pre id="qFva">cur.execute(&quot;&quot;&quot;CREATE TABLE IF NOT EXISTS users (
    name TEXT,
    jins INTEGER,
    old INTEGER,
    score INTEGER
)&quot;&quot;&quot;)
</pre>
  <p id="UFkz">Bu &quot;agar jadval mavjud bo&#x27;lmasa yarat&quot; degan ma&#x27;noni bildiradi. Agar jadval allaqachon bor bo&#x27;lsa — hech narsa qilmaydi, xatolik ham bermaydi. Endi dasturni necha marta ishga tushirsangiz ham muammo bo&#x27;lmaydi.</p>
  <h3 id="db-browser-orqali-malumot-qoshish">DB Browser orqali ma&#x27;lumot qo&#x27;shish</h3>
  <p id="j0Fp">Dasturni ishga tushirib, jadval yaratgandan so&#x27;ng, DB Browser dasturida MB faylini ochib, jadvalga qo&#x27;lda yozuvlar qo&#x27;shish mumkin. &quot;Yozuv qo&#x27;shish&quot; tugmasini bosib, quyidagi ma&#x27;lumotlarni kiritamiz:</p>
  <pre id="6ik3">Ali       1    22    1000
Mirzo     1    19    800
Farhod    1    26    1100
Mohinur   2    18    1500
</pre>
  <p id="D5CJ">Kiritgandan so&#x27;ng albatta <strong>&quot;O&#x27;zgarishlarni saqlash&quot;</strong> tugmasini bosish kerak — aks holda ma&#x27;lumotlar saqlanmaydi.</p>
  <p id="K0NQ">DB Browser&#x27;da <strong>&quot;SQL&quot;</strong> bo&#x27;limiga o&#x27;tib, SQL so&#x27;rovlarni yozish va bajarish ham mumkin. Masalan, barcha yozuvlarni ko&#x27;rish uchun:</p>
  <pre id="qYnr">SELECT * FROM users
</pre>
  <h3 id="rowid--yashirin-maydon">rowid — yashirin maydon</h3>
  <p id="x38g">Har bir SQLite jadvali <strong>yashirin <code>rowid</code> maydoni</strong>ga ega. Bu maydon har bir yozuvga avtomatik beriladigan noyob raqam. Siz uni yaratmaysiz — MBBT o&#x27;zi boshqaradi. Uni ko&#x27;rish uchun:</p>
  <pre id="HrY4">SELECT rowid, * FROM users
</pre>
  <p id="6uRx">Bu so&#x27;rov natijasida har bir yozuv oldida uning <code>rowid</code> raqamini ko&#x27;rasiz:</p>
  <pre id="KcQL">1  Ali      1  22  1000
2  Mirzo    1  19  800
3  Farhod   1  26  1100
4  Mohinur  2  18  1500
</pre>
  <p id="V1ZX"><code>rowid</code> ning ahamiyati shundaki, u orqali har bir yozuvni <strong>aniq</strong> aniqlash mumkin. Agar jadvalda ikki Ali bo&#x27;lsa ham, ularning <code>rowid</code> lari har xil bo&#x27;ladi. Keyinchalik bu raqam orqali jadvallarni bog&#x27;lash ham mumkin.</p>
  <h3 id="jadvalni-ochirish">Jadvalni o&#x27;chirish</h3>
  <p id="xn4f">Agar jadval umuman kerak bo&#x27;lmay qolsa, uni butunlay o&#x27;chirish mumkin:</p>
  <pre id="GxAz">cur.execute(&quot;DROP TABLE users&quot;)
</pre>
  <p id="KawP"><strong>DIQQAT:</strong> Bu buyruq jadvalni va undagi <strong>barcha ma&#x27;lumotlarni</strong> qaytarib bo&#x27;lmas tarzda o&#x27;chiradi! Ehtiyotkorlik bilan ishlating.</p>
  <h3 id="primary-key-va-autoincrement">PRIMARY KEY va AUTOINCREMENT</h3>
  <p id="f420"><code>rowid</code> ga o&#x27;xshash maydonni o&#x27;zingiz ham yaratishingiz mumkin. Buning uchun <code>PRIMARY KEY</code> kalit so&#x27;zi ishlatiladi:</p>
  <pre id="u3Ef">cur.execute(&quot;&quot;&quot;CREATE TABLE IF NOT EXISTS users (
    user_id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    jins INTEGER,
    old INTEGER,
    score INTEGER
)&quot;&quot;&quot;)
</pre>
  <ul id="Rsg2">
    <li id="WtYw"><strong>PRIMARY KEY</strong> (birlamchi kalit) — bu maydon faqat <strong>noyob</strong> (takrorlanmas) qiymatlarni saqlashi kerakligini bildiradi. Ikkita yozuvda bir xil <code>user_id</code> bo&#x27;lishi mumkin emas.</li>
    <li id="qtbl"><strong>AUTOINCREMENT</strong> — yangi yozuv qo&#x27;shilganda qiymat <strong>avtomatik</strong> 1 ga oshadi. Birinchi yozuvda 1, ikkinchisida 2, uchinchisida 3 va hokazo. Siz yangi yozuv qo&#x27;shayotganda <code>user_id</code> ni ko&#x27;rsatishingiz shart emas — MBBT uni o&#x27;zi belgilaydi.</li>
  </ul>
  <h3 id="not-null--bosh-bolmasin">NOT NULL — bo&#x27;sh bo&#x27;lmasin</h3>
  <p id="mTq1">Ba&#x27;zan siz xohlaysizki, ma&#x27;lum bir maydon albatta to&#x27;ldirilgan bo&#x27;lsin. Masalan, o&#x27;yinchining ismi albatta bo&#x27;lishi kerak. Buning uchun <code>NOT NULL</code> cheklovi qo&#x27;yiladi:</p>
  <pre id="GjEW">name TEXT NOT NULL
</pre>
  <p id="Ge0K">Endi agar kimdir ism ko&#x27;rsatmasdan yozuv qo&#x27;shmoqchi bo&#x27;lsa, MBBT xatolik beradi.</p>
  <h3 id="default--standart-qiymat">DEFAULT — standart qiymat</h3>
  <p id="tx5X">Maydon uchun &quot;agar hech narsa ko&#x27;rsatilmasa, shu qiymatni qo&#x27;y&quot; degan standart qiymat belgilash:</p>
  <pre id="pgBc">jins INTEGER DEFAULT 1
</pre>
  <p id="BEFQ">To&#x27;liq misol:</p>
  <pre id="uk7V">cur.execute(&quot;&quot;&quot;CREATE TABLE IF NOT EXISTS users (
    user_id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    jins INTEGER NOT NULL DEFAULT 1,
    old INTEGER,
    score INTEGER
)&quot;&quot;&quot;)
</pre>
  <p id="nKma">Endi <code>jins</code> maydoni albatta qiymatga ega bo&#x27;ladi va ko&#x27;rsatilmasa sukut bo&#x27;yicha 1 ga teng bo&#x27;ladi.</p>
  <hr />
  <h2 id="3-select-va-insert-buyruqlari">3. SELECT va INSERT buyruqlari</h2>
  <h3 id="insert--yozuv-qoshish">INSERT — yozuv qo&#x27;shish</h3>
  <p id="JdPi"><code>INSERT</code> buyrug&#x27;i jadvalga yangi yozuv qo&#x27;shadi. Ikkita asosiy sintaksisi bor:</p>
  <pre id="SYpA">-- 1-variant: Ustunlarni ko&#x27;rsatib (tavsiya etiladi)
INSERT INTO jadval_nomi (ustun1, ustun2) VALUES (qiymat1, qiymat2)

-- 2-variant: Ustunlarni ko&#x27;rsatmasdan (barcha ustunlar uchun qiymat kerak)
INSERT INTO jadval_nomi VALUES (qiymat1, qiymat2, ...)
</pre>
  <p id="3kbv"><strong>Misollar:</strong></p>
  <pre id="vLAb">INSERT INTO users VALUES(&#x27;Mirzo&#x27;, 1, 19, 1000)

-- jins ko&#x27;rsatilmagan — DEFAULT 1 ishlatiladi
INSERT INTO users (name, old, score) VALUES(&#x27;Farhod&#x27;, 32, 200)
</pre>
  <h3 id="select--malumot-tanlash">SELECT — ma&#x27;lumot tanlash</h3>
  <p id="UD4T"><code>SELECT</code> — SQL&#x27;da <strong>eng ko&#x27;p ishlatiladigan</strong> buyruq:</p>
  <pre id="JKHq">SELECT name, old, score FROM users    -- Ba&#x27;zi ustunlar
SELECT * FROM users                    -- Barcha ustunlar
</pre>
  <h3 id="where--filtr">WHERE — filtr</h3>
  <pre id="Gqfv">SELECT * FROM users WHERE score &lt; 1000
SELECT * FROM users WHERE score BETWEEN 500 AND 1000
SELECT * FROM users WHERE old = 32
</pre>
  <p id="K8Rg">Solishtirish operatorlari: <code>=</code>, <code>==</code>, <code>&gt;</code>, <code>&lt;</code>, <code>&gt;=</code>, <code>&lt;=</code>, <code>!=</code>, <code>BETWEEN</code></p>
  <h3 id="murakkab-shartlar">Murakkab shartlar</h3>
  <figure id="qX80" class="m_column">
    <img src="https://img1.teletype.in/files/cf/1b/cf1bf26a-722f-47ec-9342-16e8c0adb902.png" width="869" />
  </figure>
  <pre id="Lf5P">SELECT * FROM users WHERE old &gt; 20 AND score &lt; 1000
SELECT * FROM users WHERE old IN(19, 32) AND score &lt; 1000
</pre>
  <p id="tZQT"><strong>Ustuvorlik:</strong> <code>AND</code> ning ustuvorligi <code>OR</code> dan yuqori. Qavslar bilan o&#x27;zgartirish mumkin:</p>
  <pre id="SggC">SELECT * FROM users WHERE (old IN(19, 32) OR jins = 1) AND score &gt; 300
</pre>
  <h3 id="order-by--saralash">ORDER BY — saralash</h3>
  <pre id="Kkdo">SELECT * FROM users ORDER BY old           -- O&#x27;sish (standart)
SELECT * FROM users ORDER BY old DESC      -- Kamayish
SELECT * FROM users ORDER BY old ASC       -- O&#x27;sish (aniq ko&#x27;rsatish)
</pre>
  <h3 id="limit-va-offset--cheklash">LIMIT va OFFSET — cheklash</h3>
  <pre id="vAbX">SELECT * FROM users ORDER BY score DESC LIMIT 5           -- Eng yaxshi 5 ta
SELECT * FROM users ORDER BY score DESC LIMIT 5 OFFSET 2  -- 2 tasini o&#x27;tkazib, 5 ta
SELECT * FROM users ORDER BY score DESC LIMIT 2, 5        -- Shu narsa
</pre>
  <h3 id="pythonda-natijalarni-olish">Python&#x27;da natijalarni olish</h3>
  <pre id="Dbfa">with sq.connect(&quot;saper.db&quot;) as con:
    cur = con.cursor()
    cur.execute(&quot;SELECT * FROM users ORDER BY score DESC LIMIT 5&quot;)
    
    result = cur.fetchall()      # Barcha natijalar — ro&#x27;yxat
    result = cur.fetchone()      # Birinchi yozuv — kortej
    result = cur.fetchmany(2)    # Ko&#x27;pi bilan 2 ta — ro&#x27;yxat
    
    # Iterator (xotirani tejaydi)
    for row in cur:
        print(row)
</pre>
  <hr />
  <h2 id="4-update-va-delete-buyruqlari">4. UPDATE va DELETE buyruqlari</h2>
  <h3 id="update--yozuvlarni-ozgartirish">UPDATE — yozuvlarni o&#x27;zgartirish</h3>
  <pre id="dGq2">UPDATE jadval_nomi SET ustun = yangi_qiymat WHERE shart
</pre>
  <p id="s3h9"><strong>Misollar:</strong></p>
  <pre id="OsVJ">UPDATE users SET score = 0                          -- BARCHA yozuvlar!
UPDATE users SET score = 1000 WHERE rowid = 1       -- Faqat bitta
UPDATE users SET score = score + 500 WHERE jins = 2 -- Hisob bilan
UPDATE users SET score = 700, old = 45 WHERE old &gt; 40  -- Bir nechta ustun
</pre>
  <p id="VgCk"><strong>⚠️ WHERE yo&#x27;q bo&#x27;lsa barcha yozuvlar o&#x27;zgaradi!</strong></p>
  <h3 id="like--shablon-solishtirish">LIKE — shablon solishtirish</h3>
  <figure id="YlQx" class="m_original">
    <img src="https://img3.teletype.in/files/63/af/63af3d9b-a46f-4021-9f1d-931ba6758554.png" width="421" />
  </figure>
  <pre id="y7Zo">UPDATE users SET score = 1500 WHERE name LIKE &#x27;Farhod&#x27;
UPDATE users SET score = score + 100 WHERE name LIKE &#x27;M%&#x27;      -- M bilan boshlanadiganlar
UPDATE users SET score = score + 100 WHERE name LIKE &#x27;S_rd%&#x27;   -- Sardor, Sirdor...
</pre>
  <h3 id="delete--yozuvlarni-ochirish">DELETE — yozuvlarni o&#x27;chirish</h3>
  <pre id="WW9h">DELETE FROM jadval_nomi WHERE shart
</pre>
  <pre id="Xm3H">DELETE FROM users WHERE rowid IN(2, 5)   -- rowid 2 va 5 o&#x27;chiriladi
</pre>
  <p id="BHZU"><strong>⚠️ WHERE yo&#x27;q bo&#x27;lsa BARCHA yozuvlar o&#x27;chadi!</strong></p>
  <p id="dqIJ">O&#x27;chirilgan <code>rowid</code> lar qayta ishlatilmaydi. Yangi yozuv keyingi raqamni oladi.</p>
  <hr />
  <h2 id="5-agregirlash-va-group-by-bilan-guruhlash">5. Agregirlash va GROUP BY bilan guruhlash</h2>
  <figure id="C9gI" class="m_original">
    <img src="https://img3.teletype.in/files/ad/99/ad99e8da-38c7-444e-898d-e92a91bc376a.png" width="441" />
  </figure>
  <pre id="C8BJ">SELECT count() AS soni FROM games WHERE user_id = 1
SELECT sum(score) AS yigindi FROM games WHERE user_id = 1
SELECT avg(score) AS ortacha FROM games
SELECT max(score) FROM games WHERE user_id = 1
SELECT min(score) FROM games WHERE user_id = 1
</pre>
  <p id="RI8P"><strong>DISTINCT</strong> — faqat noyob qiymatlarni tanlash:</p>
  <pre id="qnPl">SELECT count(DISTINCT user_id) AS soni FROM games
SELECT DISTINCT user_id FROM games
</pre>
  <p id="5MNl"><strong>AS</strong> (alias/taxallus) — natija ustuniga nom berish:</p>
  <pre id="pZ7E">SELECT count() AS soni FROM games    -- Ustun nomi &quot;soni&quot; bo&#x27;ladi
</pre>
  <h3 id="group-by--guruhlash">GROUP BY — guruhlash</h3>
  <p id="w4Dr">Yozuvlarni ustun bo&#x27;yicha guruhlaydi, agregirlash funksiyalari har guruhda alohida ishlaydi:</p>
  <pre id="CH6G">SELECT user_id, sum(score) AS yigindi
FROM games
GROUP BY user_id
ORDER BY yigindi DESC
</pre>
  <p id="KX6l"><strong>Ishlash tartibi:</strong> WHERE → GROUP BY → Agregirlash → ORDER BY → LIMIT</p>
  <pre id="BsRb">SELECT user_id, sum(score) AS yigindi
FROM games
WHERE score &gt; 300
GROUP BY user_id
ORDER BY yigindi DESC
LIMIT 1
</pre>
  <hr />
  <h2 id="6-join-operatori--svodka-hisobot-yaratish">6. JOIN operatori — svodka hisobot yaratish</h2>
  <h3 id="inner-join-standart-join">INNER JOIN (standart JOIN)</h3>
  <p id="lPYo">Ikki jadvalni bog&#x27;lab, svodka ma&#x27;lumot olish:</p>
  <pre id="dOEU">SELECT name, jins, games.score
FROM games
JOIN users ON games.user_id = users.rowid
</pre>
  <p id="Hnj8"><strong>Muhim:</strong> <code>games.score</code> — qaysi jadvaldan olishni aniq ko&#x27;rsatadi (chunki ikkala jadvalda ham <code>score</code> bor).</p>
  <p id="a36t"><strong>INNER JOIN</strong> faqat ikkala jadvalda ham mos kelish topilgan yozuvlarni qaytaradi.</p>
  <h3 id="left-join">LEFT JOIN</h3>
  <p id="0iLm">Asosiy jadvalning <strong>barcha</strong> yozuvlarini saqlaydi, mos topilmasa <code>NULL</code> qo&#x27;yadi:</p>
  <pre id="oxkx">SELECT name, jins, games.score
FROM games
LEFT JOIN users ON games.user_id = users.rowid
</pre>
  <h3 id="join--agregirlash">JOIN + agregirlash</h3>
  <pre id="hV4V">SELECT name, jins, sum(games.score) AS ochko
FROM games
JOIN users ON games.user_id = users.rowid
GROUP BY user_id
ORDER BY ochko DESC
</pre>
  <h3 id="bir-nechta-join">Bir nechta JOIN</h3>
  <pre id="RFsG">SELECT maydonlar FROM jadval1
JOIN jadval2 ON shart1
JOIN jadval3 ON shart2
</pre>
  <hr />
  <h2 id="7-union-operatori--jadvallarni-birlashtirish">7. UNION operatori — jadvallarni birlashtirish</h2>
  <p id="irwz"><code>JOIN</code> ustunlar bo&#x27;yicha (gorizontal), <code>UNION</code> satrlar bo&#x27;yicha (vertikal) birlashtiradi.</p>
  <pre id="MbaZ">SELECT score, &#x60;from&#x60; FROM tab1
UNION
SELECT val, type FROM tab2
</pre>
  <p id="nk7i"><strong>Muhim:</strong> UNION faqat <strong>noyob</strong> yozuvlarni qoldiradi.</p>
  <p id="Ll3L">Jadval belgisi qo&#x27;shish:</p>
  <pre id="szr1">SELECT score, &#x27;1-jadval&#x27; AS jadval FROM tab1
UNION
SELECT val, &#x27;2-jadval&#x27; FROM tab2
ORDER BY score DESC
LIMIT 3
</pre>
  <hr />
  <h2 id="8-ichki-sql-sorovlar">8. Ichki SQL so&#x27;rovlar</h2>
  <p id="arrG">Ichki so&#x27;rov — SQL buyrug&#x27;i ichidagi yana bir SQL buyrug&#x27;i. Qavslar ichida yoziladi:</p>
  <pre id="pBrL">-- Moshaning bahosidan yuqori olganlar
SELECT name, subject, mark FROM marks
JOIN students ON students.rowid = marks.id
WHERE mark &gt; (SELECT mark FROM marks WHERE id = 2 AND subject LIKE &#x27;Si&#x27;)
AND subject LIKE &#x27;Si&#x27;
</pre>
  <h3 id="insert-ichida">INSERT ichida</h3>
  <pre id="yWTy">INSERT INTO ayollar SELECT * FROM students WHERE jins = 2
</pre>
  <h3 id="update-ichida">UPDATE ichida</h3>
  <pre id="Md6x">UPDATE marks SET mark = 0
WHERE mark &lt;= (SELECT min(mark) FROM marks WHERE id = 1)
</pre>
  <h3 id="delete-ichida">DELETE ichida</h3>
  <pre id="Owny">DELETE FROM students
WHERE old &lt; (SELECT old FROM students WHERE id = 2)
</pre>
  <p id="SXU1"><strong>Maslahat:</strong> Ichki so&#x27;rovlardan faqat boshqa yo&#x27;l bo&#x27;lmaganda foydalaning — ular qo&#x27;shimcha resurslarga tushadi.</p>
  <hr />
  <h2 id="9-execute-executemany-executescript-commit-rollback-metodlari">9. execute, executemany, executescript, commit, rollback metodlari</h2>
  <h3 id="execute--bitta-sorov">execute — bitta so&#x27;rov</h3>
  <pre id="6HC0">cur.execute(&quot;INSERT INTO cars VALUES(1,&#x27;Audi&#x27;,52642)&quot;)
</pre>
  <h3 id="shablonli-sorovlar--belgisi">Shablonli so&#x27;rovlar (? belgisi)</h3>
  <pre id="a6GM">cars = [(&#x27;Audi&#x27;, 52642), (&#x27;Mercedes&#x27;, 57127), (&#x27;Skoda&#x27;, 9000)]
cur.execute(&quot;INSERT INTO cars VALUES(NULL, ?, ?)&quot;, cars[0])
</pre>
  <p id="vxvE"><code>?</code> belgisi SQL injection hujumlaridan himoya qiladi.</p>
  <h3 id="executemany--kop-yozuv-birdan">executemany — ko&#x27;p yozuv birdan</h3>
  <pre id="RT7C">cur.executemany(&quot;INSERT INTO cars VALUES(NULL, ?, ?)&quot;, cars)
</pre>
  <h3 id="nomlangan-parametrlar">Nomlangan parametrlar</h3>
  <pre id="s78w">cur.execute(&quot;UPDATE cars SET price = :Narx WHERE model LIKE &#x27;A%&#x27;&quot;, {&#x27;Narx&#x27;: 0})
</pre>
  <h3 id="executescript--bir-nechta-buyruq">executescript — bir nechta buyruq</h3>
  <pre id="K5fH">cur.executescript(&quot;&quot;&quot;DELETE FROM cars WHERE model LIKE &#x27;A%&#x27;;
    UPDATE cars SET price = price + 1000
&quot;&quot;&quot;)
</pre>
  <p id="HOah">Buyruqlar <code>;</code> bilan ajratiladi. <code>?</code> shablonlar ishlatib bo&#x27;lmaydi.</p>
  <h3 id="commit-va-rollback--tranzaksiyalar">commit va rollback — tranzaksiyalar</h3>
  <pre id="RIZu">con = None
try:
    con = sq.connect(&quot;mashinalar.db&quot;)
    cur = con.cursor()
    cur.executescript(&quot;&quot;&quot;BEGIN;
        INSERT INTO cars VALUES(NULL,&#x27;Audi&#x27;,52642);
        INSERT INTO cars VALUES(NULL,&#x27;Mercedes&#x27;,57127);
        UPDATE cars SET price = price + 1000
    &quot;&quot;&quot;)
    con.commit()      # Muvaffaqiyat — saqlash
except sq.Error as e:
    if con: con.rollback()  # Xatolik — bekor qilish
    print(&quot;Xatolik yuz berdi&quot;)
finally:
    if con: con.close()
</pre>
  <p id="HWr0"><strong>rollback</strong> — MB holatini <code>BEGIN</code> nuqtasiga qaytaradi.</p>
  <h3 id="lastrowid">lastrowid</h3>
  <pre id="PEv9">cur.execute(&quot;INSERT INTO cars VALUES(NULL,&#x27;Damas&#x27;, 5000)&quot;)
last_id = cur.lastrowid    # Oxirgi qo&#x27;shilgan yozuv ID&#x27;si
</pre>
  <hr />
  <h2 id="10-fetchall-fetchmany-fetchone-iterdump-metodlari">10. fetchall, fetchmany, fetchone, iterdump metodlari</h2>
  <h3 id="malumot-olish">Ma&#x27;lumot olish</h3>
  <figure id="FAuR" class="m_original">
    <img src="https://img4.teletype.in/files/fc/c5/fcc5b6f6-5cca-43d0-9497-a523059a4b83.png" width="490" />
  </figure>
  <h3 id="row_factory--lugat-sifatida-olish">row_factory — lug&#x27;at sifatida olish</h3>
  <pre id="I285">con.row_factory = sq.Row
cur.execute(&quot;SELECT * FROM cars&quot;)
for row in cur:
    print(row[&#x27;model&#x27;], row[&#x27;price&#x27;])
</pre>
  <h3 id="blob--rasmlarni-saqlash">BLOB — rasmlarni saqlash</h3>
  <pre id="bQkD"># Bazaga yozish
img = open(&quot;rasm.png&quot;, &quot;rb&quot;).read()
binary = sq.Binary(img)
cur.execute(&quot;INSERT INTO users VALUES (&#x27;Sardor&#x27;, ?, 1000)&quot;, (binary,))

# Bazadan o&#x27;qish
cur.execute(&quot;SELECT ava FROM users LIMIT 1&quot;)
img = cur.fetchone()[&#x27;ava&#x27;]
open(&quot;natija.png&quot;, &quot;wb&quot;).write(img)
</pre>
  <h3 id="iterdump--zaxira-nusxa">iterdump — zaxira nusxa</h3>
  <pre id="uy5H"># Zaxira yaratish
with open(&quot;zaxira.sql&quot;, &quot;w&quot;) as f:
    for sql in con.iterdump():
        f.write(sql)

# Zaxiradan tiklash
with open(&quot;zaxira.sql&quot;, &quot;r&quot;) as f:
    cur.executescript(f.read())
</pre>
  <h3 id="xotirada-mb">Xotirada MB</h3>
  <pre id="0qkn">con = sq.connect(&#x27;:memory:&#x27;)
with con:
    cur = con.cursor()
    cur.execute(&quot;CREATE TABLE lugat(eng TEXT, rus TEXT)&quot;)
    cur.executemany(&quot;INSERT INTO lugat VALUES(?,?)&quot;,
        [(&quot;car&quot;,&quot;mashina&quot;), (&quot;house&quot;,&quot;uy&quot;)])
    cur.execute(&quot;SELECT rus FROM lugat WHERE eng LIKE &#x27;c%&#x27;&quot;)
    print(cur.fetchall())   # [(&#x27;mashina&#x27;,)]
</pre>
  <p id="7Zqb">Dastur yopilganda xotiradagi ma&#x27;lumotlar yo&#x27;qoladi.</p>
  <hr />
  <h2 id="umumiy-xulosa">Umumiy xulosa</h2>
  <figure id="WWtU" class="m_column">
    <img src="https://img3.teletype.in/files/2f/ff/2fff2fe2-7a5c-47ba-b1f7-fbbbeb49e4bc.png" width="1296" />
  </figure>
  <hr />
  <blockquote id="6odC"><strong>Bu material sizga ko&#x27;plab ilovalar uchun yetarli bo&#x27;ladi. Asosiysi — amaliyot! Har bir buyruqni o&#x27;zingiz yozib sinab ko&#x27;ring.</strong></blockquote>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/ShartOperatorlari</guid><link>https://teletype.in/@nodirustoz/ShartOperatorlari?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/ShartOperatorlari?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python dasturlash tilida Shart operatorlari (if, elif, else)</title><pubDate>Fri, 10 Oct 2025 17:48:42 GMT</pubDate><description><![CDATA[Shart operatorlari dasturda qaror qabul qilish uchun ishlatiladi. Ular shart (logical condition) asosida kodning muayyan qismini bajarish yoki bajarmaslikni belgilaydi. Python'da shart operatorlari quyidagilardan iborat:]]></description><content:encoded><![CDATA[
  <h1 id="BdYm">Shart operatorlari nima?</h1>
  <hr />
  <p id="jDeg">Shart operatorlari dasturda qaror qabul qilish uchun ishlatiladi. Ular shart (logical condition) asosida kodning muayyan qismini bajarish yoki bajarmaslikni belgilaydi. Python&#x27;da shart operatorlari quyidagilardan iborat:</p>
  <ul id="LKcD">
    <li id="anJ9"><code>if</code> - <strong>Agar</strong>: Bu shart operatori biror shart to&#x27;g&#x27;ri bo&#x27;lsa, muayyan kod blokini bajarishni bildiradi. Masalan, &quot;Agar yosh 18 dan katta bo&#x27;lsa&quot; deb tushunsa bo&#x27;ladi.</li>
    <li id="EzDQ"><code>elif</code> - <strong>Aks holda Agar</strong>: Bu &quot;else if&quot; ning qisqartmasi bo&#x27;lib, birinchi if sharti noto&#x27;g&#x27;ri bo&#x27;lsa, boshqa shartni tekshirish uchun ishlatiladi.</li>
    <li id="bCB1"><code>else</code> - <strong>Aks holda</strong>: Agar if yoki elif shartlarining hech biri to&#x27;g&#x27;ri bo&#x27;lmasa, bu blok ishlaydi. O&#x27;zbek tilida &quot;Aks holda&quot; yoki &quot;Boshqa hollarda&quot; deb tushuniladi.</li>
  </ul>
  <p id="DUDs">Shart operatorlari dastur oqimini boshqarishda muhim rol o&#x27;ynaydi va deyarli har qanday dasturda qo&#x27;llaniladi.</p>
  <h3 id="QJFn">Sintaksis:</h3>
  <pre id="xICx" data-lang="python">if shart:
    # Shart to&#x27;g&#x27;ri bo&#x27;lsa bajariladigan kod
elif boshqa_shart:
    # Boshqa shart to&#x27;g&#x27;ri bo&#x27;lsa bajariladigan kod
else:
    # Hech qanday shart to&#x27;g&#x27;ri bo&#x27;lmasa bajariladigan kod

</pre>
  <hr />
  <h2 id="1zaC"><code>if</code> operatori</h2>
  <p id="xqOh"><code>if</code> operatori shartni tekshiradi va agar shart <code>True</code> (to&#x27;g&#x27;ri) bo&#x27;lsa, uning ostidagi kod bloki bajariladi. Shart odatda mantiqiy ifoda (logical expression) sifatida yoziladi.</p>
  <h3 id="gTiy">Misol: Oddiy <code>if</code> operatori</h3>
  <pre id="ARO6" data-lang="python">yosh = 20
if yosh &gt;= 18:
    print(&quot;Siz voyaga yetgansiz!&quot;)

</pre>
  <p id="ekIr"><strong>Tushuntirish</strong>: Yuqoridagi kodda <code>yosh &gt;= 18</code> sharti tekshiriladi. Agar <code>yosh</code> 18 yoki undan katta bo&#x27;lsa, &quot;Siz voyaga yetgansiz!&quot; xabari chiqariladi.</p>
  <h3 id="OHv3">Muhim Eslatma:</h3>
  <ul id="8WRt">
    <li id="C3GD">Shartdan keyin ikki nuqta (<code>:</code>) qo&#x27;yilishi shart.</li>
    <li id="zkLK"><code>if</code> ostidagi kod bloki ichkariga surilgan (indentation) bo&#x27;lishi kerak (odatda 4 ta bo&#x27;sh joy yoki 1 tab).</li>
    <li id="owdO">Agar shart <code>False</code> bo&#x27;lsa, <code>if</code> bloki o&#x27;tkazib yuboriladi.</li>
  </ul>
  <hr />
  <h2 id="fgLF"><code>elif</code> operatori</h2>
  <p id="IfrF">elif bir nechta shartlarni ketma-ket tekshirish imkonini beradi. Agar if sharti noto&#x27;g&#x27;ri bo&#x27;lsa, dastur elif shartlarini tekshiradi. Agar hech biri to&#x27;g&#x27;ri kelmasa, else bloki ishlaydi (agar mavjud bo&#x27;lsa).</p>
  <h3 id="nEvD">Misol: <code>if</code>, <code>elif</code>, <code>else</code></h3>
  <pre id="g0iQ" data-lang="python">ball = 85
if ball &gt;= 90:
    print(&quot;Sizning bahoyingiz: A&#x27;lo&quot;)
elif ball &gt;= 80:
    print(&quot;Sizning bahoyingiz: Yaxshi&quot;)
elif ball &gt;= 70:
    print(&quot;Sizning bahoyingiz: Qoniqarli&quot;)
else:
    print(&quot;Sizning bahoyingiz: Qoniqarsiz&quot;)

</pre>
  <p id="SYOZ"><strong>Tushuntirish</strong>:</p>
  <ul id="TyzW">
    <li id="nAaw">Agar ball 90 yoki undan yuqori bo&#x27;lsa, &quot;A&#x27;lo&quot; bahosi chiqariladi.</li>
    <li id="oCvB">Agar ball 80-89 oralig&#x27;ida bo&#x27;lsa, &quot;Yaxshi&quot; bahosi chiqariladi.</li>
    <li id="o1Ip">Agar ball 70-79 oralig&#x27;ida bo&#x27;lsa, &quot;Qoniqarli&quot; bahosi chiqariladi.</li>
    <li id="3UlG">Aks holda, &quot;Qoniqarsiz&quot; bahosi chiqariladi.</li>
  </ul>
  <h3 id="tALa">Eslatma:</h3>
  <ul id="P2Ts">
    <li id="k0JK"><code>elif</code> larning soni cheklanmagan, lekin ko&#x27;p <code>elif</code> ishlatish kodni murakkablashtirishi mumkin.</li>
    <li id="WAo8">Har bir elif sharti ketma-ket tekshiriladi, shuning uchun shartlar tartibi muhim.</li>
  </ul>
  <hr />
  <h2 id="IkjW"><code>else</code> operatori</h2>
  <p id="hCEb"><code>else</code> operatori <code>if</code> sharti noto&#x27;g&#x27;ri bo&#x27;lganda ishlaydi. U hech qanday shart talab qilmaydi va faqat <code>if</code> yoki <code>elif</code> dan keyin keladi.</p>
  <h3 id="XJGo">Misol: <code>if</code> va <code>else</code></h3>
  <pre id="ZVs6" data-lang="python">yosh = 16
if yosh &gt;= 18:
    print(&quot;Siz voyaga yetgansiz!&quot;)
else:
    print(&quot;Siz hali voyaga yetmagansiz.&quot;)

</pre>
  <p id="IVF9"><strong>Tushuntirish</strong>: Agar <code>yosh</code> 18 dan kichik bo&#x27;lsa, <code>else</code> bloki ishlaydi va &quot;Siz hali voyaga yetmagansiz.&quot; xabari chiqariladi.</p>
  <hr />
  <h2 id="VgDC">Ichma-ich shart operatorlari (Nested Conditions)</h2>
  <p id="ezjR">Shart operatorlari ichma-ich joylashtirilishi mumkin, ya&#x27;ni bir <code>if</code> bloki ichida boshqa <code>if</code>, <code>elif</code> yoki <code>else</code> bo&#x27;lishi mumkin.</p>
  <h3 id="tbEX">Misol: Ichma-ich shartlar</h3>
  <pre id="HPRJ" data-lang="python">yosh = 25
daraja = &quot;bakalavr&quot;

if yosh &gt;= 18:
    print(&quot;Siz voyaga yetgansiz.&quot;)
    if daraja == &quot;bakalavr&quot;:
        print(&quot;Siz bakalavr darajasiga egasiz!&quot;)
    else:
        print(&quot;Sizda bakalavr darajasi yo&#x27;q.&quot;)
else:
    print(&quot;Siz hali voyaga yetmagansiz.&quot;)

</pre>
  <p id="Je5Y"><strong>Tushuntirish</strong>:</p>
  <ul id="rLKJ">
    <li id="skQM">Birinchi <code>if</code> yoshni tekshiradi.</li>
    <li id="HbDk">Agar yosh 18 dan katta yoki teng bo&#x27;lsa, ichki <code>if</code> darajani tekshiradi.</li>
  </ul>
  <h3 id="M2c4">Maslahat:</h3>
  <ul id="GRko">
    <li id="UoCP">Ichma-ich shartlardan foydalanishni minimallashtirishga harakat qiling, chunki bu kodni o&#x27;qishni qiyinlashtiradi.</li>
    <li id="KxN9">Mantiqiy operatorlar (<code>and</code>, <code>or</code>) yordamida shartlarni birlashtirishni o&#x27;ylab ko&#x27;ring.</li>
  </ul>
  <hr />
  <h2 id="dhxr">Mantiqiy operatorlar bilan ishlash</h2>
  <p id="qSN4">Shartlarda mantiqiy operatorlar (<code>and</code>, <code>or</code>, <code>not</code>) ishlatish shartlarni yanada moslashuvchan qiladi.</p>
  <ul id="beVK">
    <li id="PWEj"><code>and</code>: Ikkala shart ham to&#x27;g&#x27;ri bo&#x27;lishi kerak.</li>
    <li id="vFOE"><code>or</code>: Kamida bitta shart to&#x27;g&#x27;ri bo&#x27;lsa yetarli.</li>
    <li id="eUf4"><code>not</code>: Shartning teskari qiymatini qaytaradi.</li>
  </ul>
  <h3 id="jIuj">Misol: Mantiqiy operatorlar</h3>
  <pre id="LayF" data-lang="python">yosh = 20
talaba = True

if yosh &gt;= 18 and talaba:
    print(&quot;Siz voyaga yetgan talabasiz!&quot;)
elif yosh &gt;= 18 and not talaba:
    print(&quot;Siz voyaga yetgansiz, lekin talaba emassiz.&quot;)
else:
    print(&quot;Siz hali voyaga yetmagansiz.&quot;)

</pre>
  <p id="aj7p"><strong>Tushuntirish</strong>:</p>
  <ul id="POfl">
    <li id="onOG"><code>and</code> operatori <code>yosh &gt;= 18</code> va <code>talaba</code> shartlarini birlashtiradi.</li>
    <li id="n0ET"><code>not</code> operatori <code>talaba</code>ning teskari qiymatini oladi.</li>
  </ul>
  <hr />
  <h2 id="irTD">Shartlarda qisqa sintaksis (Ternary Operator)</h2>
  <p id="ypMP">Python&#x27;da shartli ifodalarni qisqa yozish uchun <strong>ternary operator</strong> ishlatiladi.</p>
  <h3 id="UYgo">Sintaksis:</h3>
  <pre id="o2tD" data-lang="python">qiymat = qiymat1 if shart else qiymat2

</pre>
  <h3 id="LFTC">Misol: Ternary operator</h3>
  <pre id="WX3y" data-lang="python">yosh = 16
xabar = &quot;Voyaga yetgan&quot; if yosh &gt;= 18 else &quot;Voyaga yetmagan&quot;
print(xabar)

</pre>
  <p id="in6l"><strong>Tushuntirish</strong>:</p>
  <ul id="qgos">
    <li id="Yh4b">Agar <code>yosh &gt;= 18</code> bo&#x27;lsa, <code>xabar</code> ga &quot;Voyaga yetgan&quot; qiymati beriladi, aks holda &quot;Voyaga yetmagan&quot;.</li>
  </ul>
  <h3 id="Jgqf">Eslatma:</h3>
  <ul id="SmKs">
    <li id="w7vS">Ternary operator faqat oddiy shartlar uchun mos keladi. Murakkab shartlar uchun odatiy <code>if</code>/<code>else</code> ishlatish yaxshiroq.</li>
  </ul>
  <hr />
  <h2 id="Hp6F">Real hayotda qo&#x27;llanilishi</h2>
  <p id="PI8I">Shart operatorlari turli dasturiy senariylarda qo&#x27;llaniladi. Quyida bir nechta misollar keltirilgan:</p>
  <h3 id="SWO2">Foydalanuvchi Autentifikatsiyasi</h3>
  <pre id="AjaO" data-lang="python">foydalanuvchi = &quot;admin&quot;
parol = &quot;12345&quot;

if foydalanuvchi == &quot;admin&quot; and parol == &quot;12345&quot;:
    print(&quot;Tizimga muvaffaqiyatli kirdingiz!&quot;)
else:
    print(&quot;Foydalanuvchi nomi yoki parol xato.&quot;)

</pre>
  <h3 id="YjE1">Internet do&#x27;kon narx hisoblagichi</h3>
  <pre id="p7S8" data-lang="python">narx = 500
chegirma = 0

if narx &gt; 1000:
    chegirma = narx * 0.2  # 20% chegirma
elif narx &gt; 500:
    chegirma = narx * 0.1  # 10% chegirma

yakuniy_narx = narx - chegirma
print(f&quot;Yakuniy narx: {yakuniy_narx} so&#x27;m&quot;)

</pre>
  <h3 id="W7OX">Ob-havo</h3>
  <pre id="kFBe" data-lang="python">harorat = 25

if harorat &gt; 30:
    print(&quot;Juda issiq! Yengil kiyim kiying.&quot;)
elif harorat &gt; 20:
    print(&quot;Iliq havo. Kozok kiyish kifoya.&quot;)
else:
    print(&quot;Sovuq! Issiq kiyim kiying.&quot;)

</pre>
  <hr />
  <h2 id="7Zu4">Umumiy xatolar va ulardan oldini olish</h2>
  <blockquote id="K9V3"><strong>Indentation xatosi</strong>: </blockquote>
  <blockquote id="4Die"><code>if True: </code></blockquote>
  <blockquote id="1oX0"><code>print(&quot;Bu xato!&quot;) </code></blockquote>
  <ul id="URsa">
    <li id="hqYb"><code># IndentationError </code> </li>
    <li id="pHdW"><strong>Yechim</strong>: Har doim to&#x27;g&#x27;ri ichki surishdan foydalaning.</li>
  </ul>
  <p id="Uox7"></p>
  <blockquote id="aN46"><strong>Shartni noto&#x27;g&#x27;ri yozish</strong>: </blockquote>
  <ul id="meYE">
    <li id="aeNE"><code>if x = 5: # SyntaxError: &#x27;=&#x27; o&#x27;rniga &#x27;==&#x27; ishlatish kerak</code></li>
    <ul id="a4si">
      <li id="xtUR"><code>print(&quot;X 5 ga teng&quot;)</code></li>
    </ul>
    <li id="oqG1"><strong>Yechim</strong>: Taqqoslash uchun <code>==</code> ishlatishni unutmang.</li>
  </ul>
  <p id="aEUd"></p>
  <blockquote id="scE3"><code>elif</code> <strong>yoki</strong> <code>else</code> <strong>dan oldin</strong> <code>if</code> <strong>yo&#x27;qligi</strong>: </blockquote>
  <ul id="bAXw">
    <li id="g2DQ"><code>elif x &gt; 5: # SyntaxError</code></li>
    <ul id="7rqA">
      <li id="R31F"><code>print(&quot;Bu ishlamaydi&quot;) </code> </li>
    </ul>
    <li id="AORa"><strong>Yechim</strong>: Har doim <code>elif</code> yoki <code>else</code> dan oldin <code>if</code> bo&#x27;lishi kerak.</li>
  </ul>
  <p id="zDJf"></p>
  <blockquote id="n39r"><strong>Murakkab Shartlar</strong>: </blockquote>
  <ul id="EVQn">
    <li id="8faM">Ko&#x27;p ichma-ich shartlar kodni chalkashtiradi. Buning o&#x27;rniga funksiyalar yoki mantiqiy operatorlardan foydalaning. </li>
  </ul>
  <blockquote id="Wo6q">Murakkab: </blockquote>
  <ul id="Utex">
    <li id="NOms"><code>if x &gt; 0:</code> </li>
    <ul id="WpjW">
      <li id="kffb"><code>if x &lt; 10: </code></li>
      <ul id="8ana">
        <li id="OTFt"><code>if x % 2 == 0: </code></li>
        <ul id="iwFJ">
          <li id="jJ4o"><code>print(&quot;Musbat, 10 dan kichik va juft son&quot;) </code> </li>
        </ul>
      </ul>
    </ul>
  </ul>
  <blockquote id="PR7Q">Optimal usul: </blockquote>
  <ul id="ivuB">
    <li id="CUPD"><code>if x &gt; 0 and x &lt; 10 and x % 2 == 0:</code> </li>
    <ul id="CLrQ">
      <li id="UHKa"><code>print(&quot;Musbat, 10 dan kichik va juft son&quot;) </code></li>
    </ul>
  </ul>
  <hr />

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/string</guid><link>https://teletype.in/@nodirustoz/string?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/string?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python dasturlash tilidagi String mavzusidan algoritmik masalalar</title><pubDate>Tue, 13 May 2025 06:51:16 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/d0/bf/d0bf08ca-1839-4531-90d8-4493e0eec452.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/36/f2/36f2a1f6-6f67-4e77-9677-1a29e6718fd9.jpeg"></img>Python dasturlash tilidagi String mavzusidan algoritmik masalalar]]></description><content:encoded><![CDATA[
  <hr />
  <h2 id="RO2k">1-Masala: Ismlar bilan ishlash</h2>
  <p id="P9bh"><strong>String:</strong></p>
  <pre id="9ZpR" data-lang="python">name = &quot;azizbek&quot;

</pre>
  <p id="ZX8m"><strong>Vazifalar:</strong></p>
  <ol id="4xbA">
    <li id="pMki">Barcha harflarni katta qiling → <code>upper()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="URZS">Barcha harflarni kichik qiling → <code>lower()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="9xVW">Faqat birinchi harfni katta qiling → <code>capitalize()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="9LFe">Har bir so‘zni bosh harf bilan yozing → <code>title()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="jpIg">Matnda faqat harflar mavjudligini tekshiring → <code>isalpha()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="dTMI">Matnda faqat kichik harflar borligini tekshiring → <code>islower()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="vN91">Matnda faqat katta harflar borligini tekshiring → <code>isupper()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="VqeM">Matn uzunligini toping → <code>len()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0hXN">Har bir harfni alifbo bo‘yicha tartiblab ro‘yxatga o‘tkazing → <code>sorted()</code></li>
    <li id="siPI">Yakuniy <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <pre id="cHnv" data-lang="python"># Boshlang&#x27;ich o&#x27;zgaruvchi: &quot;name&quot; deb nomlangan string o&#x27;zgaruvchi yaratamiz
name = &quot;azizbek&quot;

# 1-vazifa: Barcha harflarni katta qilish
# upper() metodi: Stringdagi barcha harflarni katta harfga (uppercase) aylantiradi
# Misol: &quot;azizbek&quot; -&gt; &quot;AZIZBEK&quot;
result1 = name.upper()
print(&quot;1-vazifa natijasi:&quot;, result1)  # Natija: AZIZBEK

# 2-vazifa: Barcha harflarni kichik qilish
# lower() metodi: Stringdagi barcha harflarni kichik harfga (lowercase) aylantiradi
# Misol: &quot;AZIZBEK&quot; -&gt; &quot;azizbek&quot;
result2 = name.lower()
print(&quot;2-vazifa natijasi:&quot;, result2)  # Natija: azizbek

# 3-vazifa: Faqat birinchi harfni katta qilish
# capitalize() metodi: Stringning faqat birinchi harfini katta harfga aylantiradi, qolganlarini kichik harf qiladi
# Misol: &quot;azizbek&quot; -&gt; &quot;Azizbek&quot;
result3 = name.capitalize()
print(&quot;3-vazifa natijasi:&quot;, result3)  # Natija: Azizbek

# 4-vazifa: Har bir so&#x27;zni bosh harf bilan yozish
# title() metodi: Stringdagi har bir so&#x27;zning birinchi harfini katta harfga aylantiradi, qolgan harflarni kichik qiladi
# Agar bitta so&#x27;z bo&#x27;lsa, capitalize() bilan bir xil ishlaydi
# Misol: &quot;aziz bek&quot; -&gt; &quot;Aziz Bek&quot;, bu holatda &quot;azizbek&quot; -&gt; &quot;Azizbek&quot;
result4 = name.title()
print(&quot;4-vazifa natijasi:&quot;, result4)  # Natija: Azizbek

# 5-vazifa: Matnda faqat harflar mavjudligini tekshirish
# isalpha() metodi: String faqat harflardan (a-z, A-Z) iborat bo&#x27;lsa True qaytaradi, aks holda False
# Raqamlar, bo&#x27;sh joylar yoki maxsus belgilar bo&#x27;lsa False qaytaradi
# Misol: &quot;azizbek&quot; -&gt; True, &quot;azizbek123&quot; -&gt; False
result5 = name.isalpha()
print(&quot;5-vazifa natijasi:&quot;, result5)  # Natija: True

# 6-vazifa: Matnda faqat kichik harflar borligini tekshirish
# islower() metodi: Stringdagi barcha harflar kichik harf bo&#x27;lsa True qaytaradi
# Agar bitta katta harf bo&#x27;lsa ham False qaytaradi (bo&#x27;sh joy va maxsus belgilar hisobga olinmaydi)
# Misol: &quot;azizbek&quot; -&gt; True, &quot;Azizbek&quot; -&gt; False
result6 = name.islower()
print(&quot;6-vazifa natijasi:&quot;, result6)  # Natija: True

# 7-vazifa: Matnda faqat katta harflar borligini tekshirish
# isupper() metodi: Stringdagi barcha harflar katta harf bo&#x27;lsa True qaytaradi
# Agar bitta kichik harf bo&#x27;lsa ham False qaytaradi (bo&#x27;sh joy va maxsus belgilar hisobga olinmaydi)
# Misol: &quot;AZIZBEK&quot; -&gt; True, &quot;azizbek&quot; -&gt; False
result7 = name.isupper()
print(&quot;7-vazifa natijasi:&quot;, result7)  # Natija: False

# 8-vazifa: Matn uzunligini topish
# len() funksiyasi: Stringning uzunligini (belgilar sonini) qaytaradi
# Bo&#x27;sh joylar va maxsus belgilar ham hisoblanadi
# Misol: &quot;azizbek&quot; -&gt; 7
result8 = len(name)
print(&quot;8-vazifa natijasi:&quot;, result8)  # Natija: 7

# 9-vazifa: Har bir harfni alifbo bo&#x27;yicha tartiblash
# sorted() funksiyasi: Stringdagi har bir harfni alifbo tartibida saralaydi va ro&#x27;yxat sifatida qaytaradi
# Harflar kichik va katta harf sifatida alohida tartiblanadi (kichik harflar katta harflardan oldin keladi)
# Misol: &quot;azizbek&quot; -&gt; [&#x27;a&#x27;, &#x27;b&#x27;, &#x27;e&#x27;, &#x27;i&#x27;, &#x27;k&#x27;, &#x27;z&#x27;, &#x27;z&#x27;]
result9 = sorted(name)
print(&quot;9-vazifa natijasi:&quot;, result9)  # Natija: [&#x27;a&#x27;, &#x27;b&#x27;, &#x27;e&#x27;, &#x27;i&#x27;, &#x27;k&#x27;, &#x27;z&#x27;, &#x27;z&#x27;]

# 10-vazifa: Yakuniy natija
# Asl stringni chop etish uchun hech qanday metod ishlatmaymiz, faqat o&#x27;zgaruvchini chop qilamiz
print(&quot;10-vazifa natijasi:&quot;, name)  # Natija: azizbek
</pre>
  <h2 id="OF5m">2-Masala: Matnlarni almashtirish</h2>
  <p id="GC4a"><strong>String:</strong></p>
  <pre id="z6rg" data-lang="python">text = &quot;bugun havo juda issiq&quot;

</pre>
  <p id="uA4J"><strong>Vazifalar:</strong></p>
  <ol id="xuFv">
    <li id="fDnd"><code>issiq</code> so‘zini <code>iliq</code> bilan almashtiring → <code>replace()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="PMBn">Matndan <code>havo</code> so‘zining indeksini toping → <code>find()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="tz8T"><code>havo</code> so‘zining nechta marta qatnashganini sanang → <code>count()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="nymk">Matn <code>bugun</code> bilan boshlanishini tekshiring → <code>startswith()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="KSU8">Matn <code>issiq</code> bilan tugashini tekshiring → <code>endswith()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="462R">Barcha so‘zlarni ro‘yxatga ajrating → <code>split()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="JKO6">So‘zlar ro‘yxatini belgisi bilan birlashtiring → <code>join()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="FWbl">Boshidagi va oxiridagi bo‘sh joylarni olib tashlang → <code>strip()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="eiip">Faqat raqamdan iborat emasligini tekshiring → <code>isdigit()</code></li>
    <li id="kB1M">Yakuniy matnni chop eting</li>
  </ol>
  <hr />
  <pre id="Bclu" data-lang="python"># Boshlang&#x27;ich o&#x27;zgaruvchi: &quot;text&quot; deb nomlangan string o&#x27;zgaruvchi yaratamiz
text = &quot;bugun havo juda issiq&quot;

# 1-vazifa: &quot;issiq&quot; so&#x27;zini &quot;iliq&quot; bilan almashtirish
# replace() metodi: Stringdagi biror qismni (substring) boshqa qism bilan almashtiradi
# Sintaksis: string.replace(eski, yangi), bu yerda &quot;issiq&quot; ni &quot;iliq&quot; bilan almashtiramiz
# Misol: &quot;bugun havo juda issiq&quot; -&gt; &quot;bugun havo juda iliq&quot;
result1 = text.replace(&quot;issiq&quot;, &quot;iliq&quot;)
print(&quot;1-vazifa natijasi:&quot;, result1)  # Natija: bugun havo juda iliq

# 2-vazifa: &quot;havo&quot; so&#x27;zining indeksini topish
# find() metodi: Stringda biror qismning (substring) birinchi paydo bo&#x27;lish indeksini qaytaradi
# Agar topilmasa, -1 qaytaradi. Indekslar 0 dan boshlanadi
# Misol: &quot;bugun havo juda issiq&quot; da &quot;havo&quot; so&#x27;zi 6-indeksdan boshlanadi
result2 = text.find(&quot;havo&quot;)
print(&quot;2-vazifa natijasi:&quot;, result2)  # Natija: 6

# 3-vazifa: &quot;a&quot; harfining nechta borligini sanash
# count() metodi: Stringda biror qismning (substring) necha marta paydo bo&#x27;lishini sanaydi
# Katta-kichik harf farqlanadi, ya&#x27;ni &quot;a&quot; va &quot;A&quot; alohida hisoblanadi
# Misol: &quot;bugun havo juda issiq&quot; da &quot;a&quot; harfi 3 marta uchraydi
result3 = text.count(&quot;a&quot;)
print(&quot;3-vazifa natijasi:&quot;, result3)  # Natija: 3

# 4-vazifa: Matn &quot;bugun&quot; bilan boshlanishini tekshirish
# startswith() metodi: Stringning berilgan qism bilan boshlanishini tekshiradi
# Agar shunday bo&#x27;lsa True, aks holda False qaytaradi
# Misol: &quot;bugun havo juda issiq&quot; &quot;bugun&quot; bilan boshlanadi -&gt; True
result4 = text.startswith(&quot;bugun&quot;)
print(&quot;4-vazifa natijasi:&quot;, result4)  # Natija: True

# 5-vazifa: Matn &quot;issiq&quot; bilan tugashini tekshirish
# endswith() metodi: Stringning berilgan qism bilan tugashini tekshiradi
# Agar shunday bo&#x27;lsa True, aks holda False qaytaradi
# Misol: &quot;bugun havo juda issiq&quot; &quot;issiq&quot; bilan tugaydi -&gt; True
result5 = text.endswith(&quot;issiq&quot;)
print(&quot;5-vazifa natijasi:&quot;, result5)  # Natija: True

# 6-vazifa: Matnni &quot;o&quot; harfi bo&#x27;yicha ajratish
# split() metodi: Stringni berilgan belgi bo&#x27;yicha bo&#x27;lib, ro&#x27;yxat sifatida qaytaradi
# Agar belgi ko&#x27;rsatilmasa, bo&#x27;sh joy bo&#x27;yicha bo&#x27;ladi. Bu yerda &quot;o&quot; bo&#x27;yicha bo&#x27;lamiz
# Misol: &quot;bugun havo juda issiq&quot; -&gt; [&#x27;bugun hav&#x27;, &#x27; juda issiq&#x27;]
result6 = text.split(&quot;o&quot;)
print(&quot;6-vazifa natijasi:&quot;, result6)  # Natija: [&#x27;bugun hav&#x27;, &#x27; juda issiq&#x27;]

# 7-vazifa: Ajratilgan ro&#x27;yxatni &quot;oy&quot; bilan birlashtirish
# join() metodi: Ro&#x27;yxatdagi elementlarni berilgan belgi orqali birlashtirib, string qaytaradi
# Sintaksis: &quot;belgi&quot;.join(ro&#x27;yxat). Bu yerda split() natijasini &quot;oy&quot; bilan birlashtiramiz
# Misol: [&#x27;bugun hav&#x27;, &#x27; juda issiq&#x27;] -&gt; &quot;bugun havoy juda issiq&quot;
result7 = &quot;oy&quot;.join(text.split(&quot;o&quot;))
print(&quot;7-vazifa natijasi:&quot;, result7)  # Natija: bugun havoy juda issiq

# 8-vazifa: Boshi va oxiridagi bo&#x27;sh joylarni olib tashlash
# strip() metodi: Stringning boshida va oxiridagi bo&#x27;sh joylarni (va tab, yangi qator kabi belgilarni) olib tashlaydi
# Agar stringda bo&#x27;sh joy bo&#x27;lmasa, o&#x27;zgarishsiz qaytaradi
# Misol: &quot;bugun havo juda issiq&quot; da bo&#x27;sh joy yo&#x27;q -&gt; o&#x27;zgarishsiz qaytadi
result8 = text.strip()
print(&quot;8-vazifa natijasi:&quot;, result8)  # Natija: bugun havo juda issiq

# 9-vazifa: Matn faqat raqamlardan iborat ekanligini tekshirish
# isdigit() metodi: String faqat raqamlardan (0-9) iborat bo&#x27;lsa True qaytaradi, aks holda False
# Harflar, bo&#x27;sh joylar yoki maxsus belgilar bo&#x27;lsa False qaytaradi
# Misol: &quot;bugun havo juda issiq&quot; -&gt; False
result9 = text.isdigit()
print(&quot;9-vazifa natijasi:&quot;, result9)  # Natija: False

# 10-vazifa: Matnni so&#x27;zlar bo&#x27;yicha ajratish va yakuniy natija
# split() metodi: Hech qanday belgi ko&#x27;rsatilmasa, stringni bo&#x27;sh joy bo&#x27;yicha bo&#x27;lib ro&#x27;yxat qaytaradi
# Misol: &quot;bugun havo juda issiq&quot; -&gt; [&#x27;bugun&#x27;, &#x27;havo&#x27;, &#x27;juda&#x27;, &#x27;issiq&#x27;]
result10 = text.split()
print(&quot;10-vazifa natijasi:&quot;, result10)  # Natija: [&#x27;bugun&#x27;, &#x27;havo&#x27;, &#x27;juda&#x27;, &#x27;issiq&#x27;]
</pre>
  <h2 id="1NMZ">3-Masala: Parol tekshiruvi</h2>
  <p id="jtxI"><strong>String:</strong></p>
  <pre id="wglU" data-lang="python">password = &quot;Python2025!&quot;

</pre>
  <p id="tB1W"><strong>Vazifalar:</strong></p>
  <ol id="YXFu">
    <li id="BvJT">Hammasini kichik harfga o‘tkazing → <code>lower()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="uD38">Hammasini katta harfga o‘tkazing → <code>upper()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="ly42">Faqat birinchi harfni katta qiling → <code>capitalize()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="hnOQ"><code>isupper()</code> bilan tekshiring katta harfda yozilganmi Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pnvM"><code>islower()</code> bilan tekshiring kichik harfda yozilganmi Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="yDYE"><code>isalnum()</code> bilan harflar va raqamlardan iboratligini tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="6yx4"><code>isalpha()</code> bilan faqat harflardan iboratligini tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="LDGp"><code>isdigit()</code> bilan faqat raqamlardan iboratligini tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="DuHL">Uzunligini <code>len()</code> bilan toping Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="LKDb"><code>endswith(&quot;!&quot;)</code> orqali oxiri <code>!</code> bilan tugashini tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="lZdc">4-Masala: Foydalanuvchi ma’lumotlari</h2>
  <p id="s8fV"><strong>String:</strong></p>
  <pre id="0Och" data-lang="python">user_info = &quot;  Muxartov Aleksandr  &quot;

</pre>
  <p id="kU2i"><strong>Vazifalar:</strong></p>
  <ol id="zOq0">
    <li id="K0XI">Bosh va oxiridagi bo‘sh joylarni olib tashlang → <code>strip()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0vFp">Faqat chap tomondagi bo‘sh joyni olib tashlang → <code>lstrip()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="gdPf">Faqat o‘ng tomondagi bo‘sh joyni olib tashlang → <code>rstrip()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="wkEI">Ism va familiyani kichik harflarga o‘tkazing → <code>lower()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="lLyv">Ism va familiyani katta harflarga o‘tkazing → <code>upper()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="uQ7e"><code>title()</code> bilan bosh harflarini katta qiling Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="I3XK"><code>split()</code> bilan ism va familiyani alohida ajrating Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="f8yj"><code>join()</code> bilan ularni <code>,</code> belgisi bilan birlashtiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="NIzd"><code>startswith(&quot;M&quot;)</code> orqali &quot;M&quot; bilan boshlanishini tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="lHJn">Yakuniy tozalangan stringni chop eting</li>
  </ol>
  <hr />
  <h2 id="ll8u">5-Masala: Kod tekshiruv</h2>
  <p id="KVWs"><strong>String:</strong></p>
  <pre id="jI4m" data-lang="python">code = &quot;X5yZ9&quot;

</pre>
  <p id="GwQn"><strong>Vazifalar:</strong></p>
  <ol id="hIDy">
    <li id="u3qw">Katta harflarni kichik qiling → <code>lower()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="sCRA">Kichik harflarni katta qiling → <code>upper()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="ICr2">Kodda nechta harf borligini <code>isalpha()</code> bilan tekshiring Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="OIsJ">Kodda nechta raqam borligini <code>isdigit()</code> bilan aniqlang Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0bBQ">Kod faqat harf va raqamdan iboratligini tekshiring → <code>isalnum()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="OXyI">Bosh harf <code>X</code> bilan boshlanadimi? → <code>startswith()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="X4rh">Oxirgi belgi <code>9</code>mi? → <code>endswith()</code> Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="kFfc"><code>find(&quot;Z&quot;)</code> orqali <code>Z</code> harfi indeksini toping Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="IRBZ"><code>count(&quot;y&quot;)</code> orqali <code>y</code> harfi nechta ekanini aniqlang Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="3GNa">Kodni teskari qilib chop eting → <code>[::-1]</code></li>
  </ol>
  <hr />
  <h2 id="oCiK">6-Masala: Talaba haqida ma’lumotlar</h2>
  <p id="9NIP"><strong>String:</strong></p>
  <pre id="vJAT" data-lang="python">info = &quot;dilshod, 2004, informatika&quot;

</pre>
  <p id="iZKG"><strong>Vazifalar:</strong></p>
  <ol id="FXG2">
    <li id="ZSh4"><code>split()</code> yordamida matnni vergul bo‘yicha bo‘ling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="lWLA">Birinchi element (ism) bosh harf bilan boshlanishi uchun <code>capitalize()</code> qo‘llang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="3ibN">Tug‘ilgan yildan foydalanib, yoshi hisoblang (<code>int()</code> bilan). Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="b0Xp">Yo‘nalishni <code>upper()</code> yordamida katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Zcoq">Ajratilgan qismlarni <code>join()</code> orqali <code>|</code> bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pmxA"><code>in</code> operatori yordamida <code>&quot;informatika&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="MRtA"><code>replace()</code> yordamida <code>&quot;informatika&quot;</code> so‘zini <code>&quot;matematika&quot;</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="HZgH"><code>find()</code> yordamida <code>&quot;2004&quot;</code> nechanchi indeksda ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="fmdM">Butun satrni <code>title()</code> yordamida har bir so‘z bosh harfiga o‘tkazing. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="xp40">Butun matn uzunligini <code>len()</code> orqali toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="6G5u">7-Masala: Sayt manzili ustida ishlash</h2>
  <p id="xmIn"><strong>String:</strong></p>
  <pre id="nrpl" data-lang="python">url = &quot;&lt;https://www.example.com/python-course&gt;&quot;

</pre>
  <p id="Qttd"><strong>Vazifalar:</strong></p>
  <ol id="vIpg">
    <li id="dx0P"><code>startswith()</code> yordamida matn <code>https://</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="NlE2"><code>endswith()</code> yordamida <code>.com</code> bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="4SJI"><code>find()</code> yordamida <code>&quot;example&quot;</code> so‘zining boshlanish indeksini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="d2Vv"><code>count()</code> yordamida <code>&quot;o&quot;</code> harfi necha marta qatnashganini hisoblang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="LMCN"><code>replace()</code> yordamida <code>&quot;python-course&quot;</code> ni <code>&quot;data-science&quot;</code>ga o‘zgartiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="BJuO"><code>split()</code> yordamida URL qismlarini <code>/</code> bo‘yicha bo‘ling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oyfP"><code>in</code> operatori yordamida <code>&quot;www&quot;</code> mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0VvM"><code>upper()</code> yordamida manzilni katta harflarga o‘tkazing. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="TQUt"><code>islower()</code> yordamida satr faqat kichik harflardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="2lG3">URL ichidagi belgilar sonini <code>len()</code> bilan aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="bbdu">8-Masala: Foydalanuvchi loginini tekshirish</h2>
  <p id="y5aS"><strong>String:</strong></p>
  <pre id="csA7" data-lang="python">login = &quot;user_2025&quot;

</pre>
  <p id="6kO8"><strong>Vazifalar:</strong></p>
  <ol id="jVfi">
    <li id="j9cN"><code>isalnum()</code> bilan login faqat harf va raqamlardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oJTe"><code>isidentifier()</code> bilan bu Python&#x27;da identifikator bo‘la olishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Ki8h"><code>startswith()</code> bilan <code>&quot;user&quot;</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="OMBD"><code>endswith()</code> bilan <code>&quot;2025&quot;</code> bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="jwaZ"><code>replace()</code> bilan <code>user</code>ni <code>admin</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="iyGg"><code>count()</code> yordamida <code>r</code> harfi necha marta qatnashganini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="zc1r"><code>in</code> operatori bilan <code>&quot;_&quot;</code> belgisi borligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="EUJW"><code>swapcase()</code> yordamida katta harflarni kichikka va aksincha aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="cCIj"><code>isalpha()</code> yordamida faqat harflardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="WgQD"><code>len()</code> yordamida login uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="57n5">9-Masala: Foydalanuvchi izohi ustida ishlash</h2>
  <p id="af4n"><strong>String:</strong></p>
  <pre id="hHu3" data-lang="python">comment = &quot;   bu dars juda foydali edi!   &quot;

</pre>
  <p id="u6vv"><strong>Vazifalar:</strong></p>
  <ol id="sDiz">
    <li id="ROg5"><code>strip()</code> yordamida bo‘sh joylarni olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="5jj6"><code>capitalize()</code> bilan birinchi harfni katta qilgan holda chiqarilsin. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="2Sd1"><code>upper()</code> yordamida izohni katta harflarga o‘tkazing. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="b7mg"><code>count()</code> yordamida <code>a</code> harfi necha marta qatnashganini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="kznL"><code>replace()</code> yordamida <code>foydali</code> so‘zini <code>muhim</code>ga almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="kmNG"><code>endswith(&quot;!&quot;)</code> orqali izoh hayrat belgisi bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="kkgm"><code>split()</code> orqali izohdagi so‘zlarni ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="vHZq"><code>title()</code> yordamida har bir so‘z bosh harf bilan yozilsin. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="TlVS"><code>find(&quot;dars&quot;)</code> yordamida <code>dars</code> so‘zining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="BMcD"><code>len()</code> yordamida izoh uzunligini o‘lchang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="ajFf">10-Masala: Foydalanuvchi email manzili bilan ishlash</h2>
  <p id="qeMP"><strong>String:</strong></p>
  <pre id="36xw" data-lang="python">email = &quot;  johndoe2025@gmail.com  &quot;

</pre>
  <p id="kVEB"><strong>Vazifalar:</strong></p>
  <ol id="a5lT">
    <li id="86QS"><code>strip()</code> yordamida tashqi bo‘sh joylarni olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="3vSq"><code>lower()</code> yordamida emailni kichik harflarga o‘tkazing. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="IKIZ"><code>startswith(&quot;john&quot;)</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="tAnw"><code>endswith(&quot;.com&quot;)</code> bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pSd1"><code>find(&quot;@&quot;)</code> yordamida <code>@</code> belgisi indeksini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="j2nS"><code>split(&quot;@&quot;)</code> yordamida username va domen qismlarini ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="rqQ3"><code>replace(&quot;gmail&quot;, &quot;yahoo&quot;)</code> orqali domenni almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="c3Jg"><code>in</code> operatori bilan <code>&quot;2025&quot;</code> mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="ctjp"><code>isprintable()</code> yordamida email faqat chop etiladigan belgilar ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="qMdk"><code>len()</code> yordamida email uzunligini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="s4HC">11-Masala: Kitob nomi bilan ishlash</h2>
  <p id="BqCp"><strong>String:</strong></p>
  <pre id="fKEr" data-lang="python">book_title = &quot;python programming basics&quot;

</pre>
  <p id="Aa8F"><strong>Vazifalar:</strong></p>
  <ol id="nCgJ">
    <li id="avpe">Kitob nomini <code>title()</code> yordamida har bir so‘zning bosh harfini katta qiling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="hHdk"><code>upper()</code> yordamida nomni to‘liq katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="w1mn"><code>count(&quot;p&quot;)</code> yordamida <code>p</code> harfi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Xb2W"><code>find(&quot;programming&quot;)</code> yordamida <code>programming</code> so‘zining boshlanish indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="aQsM"><code>replace(&quot;basics&quot;, &quot;advanced&quot;)</code> yordamida <code>basics</code> so‘zini <code>advanced</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pMB9"><code>split()</code> yordamida so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="eoTw"><code>startswith(&quot;python&quot;)</code> yordamida nomning <code>python</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="6oM0"><code>isalpha()</code> yordamida matn faqat harflardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="TQBs"><code>join()</code> yordamida so‘zlarni <code>_</code> belgisi bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="JR1p"><code>len()</code> yordamida kitob nomining uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="U9hY">12-Masala: Mahsulot kodi bilan ishlash</h2>
  <p id="Jihs"><strong>String:</strong></p>
  <pre id="Vdg7" data-lang="python">product_code = &quot;ABC123xyz&quot;

</pre>
  <p id="QG19"><strong>Vazifalar:</strong></p>
  <ol id="NXSw">
    <li id="JxSg"><code>isalnum()</code> yordamida kod faqat harf va raqamlardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="i8iw"><code>lower()</code> yordamida kodni kichik harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="LMwm"><code>swapcase()</code> yordamida katta harflarni kichikka va aksincha o‘zgartiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="sFOh"><code>count(&quot;1&quot;)</code> yordamida <code>1</code> raqami nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="nb5D"><code>startswith(&quot;ABC&quot;)</code> yordamida kodning <code>ABC</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="YLzf"><code>endswith(&quot;xyz&quot;)</code> yordamida kodning <code>xyz</code> bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oebj"><code>find(&quot;123&quot;)</code> yordamida <code>123</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="RdNb"><code>replace(&quot;xyz&quot;, &quot;789&quot;)</code> yordamida <code>xyz</code> ni <code>789</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="frQ0">Kodni teskari tartibda chiqaring → <code>[::-1]</code>. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="t3eR"><code>len()</code> yordamida kod uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="SOLx">13-Masala: Xabar matni bilan ishlash</h2>
  <p id="vj9q"><strong>String:</strong></p>
  <pre id="d0bg" data-lang="python">message = &quot;Assalomu alaykum, bugun dars bormi?&quot;

</pre>
  <p id="k1LQ"><strong>Vazifalar:</strong></p>
  <ol id="gSDY">
    <li id="0Jnc"><code>capitalize()</code> yordamida birinchi harfni katta qiling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="DnO8"><code>upper()</code> yordamida matnni to‘liq katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oOd7"><code>count(&quot;u&quot;)</code> yordamida <code>u</code> harfi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="g0dg"><code>replace(&quot;bugun&quot;, &quot;ertaga&quot;)</code> yordamida <code>bugun</code> so‘zini <code>ertaga</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="NDtW"><code>split()</code> yordamida so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="vkcE"><code>endswith(&quot;?&quot;)</code> yordamida matnning savol belgisi bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="p6pa"><code>find(&quot;dars&quot;)</code> yordamida <code>dars</code> so‘zining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="B9jE"><code>in</code> operatori yordamida <code>&quot;alaykum&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="6QHt"><code>join()</code> yordamida so‘zlarni <code>|</code> belgisi bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="qNQN"><code>len()</code> yordamida xabar uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="ohTW">14-Masala: Fayl nomi bilan ishlash</h2>
  <p id="8RAl"><strong>String:</strong></p>
  <pre id="la2X" data-lang="python">file_name = &quot;document_2025.pdf&quot;

</pre>
  <p id="bRsc"><strong>Vazifalar:</strong></p>
  <ol id="6Xg7">
    <li id="m9g1"><code>endswith(&quot;.pdf&quot;)</code> yordamida faylning <code>.pdf</code> kengaytmasi bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="7FJh"><code>replace(&quot;_2025&quot;, &quot;&quot;)</code> yordamida <code>_2025</code> qismini olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="jurY"><code>split(&quot;.&quot;)</code> yordamida fayl nomi va kengaytmasini ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="yQjm"><code>upper()</code> yordamida fayl nomini katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="urpD"><code>count(&quot;_&quot;)</code> yordamida <code>_</code> belgisi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="TKqx"><code>startswith(&quot;doc&quot;)</code> yordamida fayl nomining <code>doc</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="3KgN"><code>find(&quot;2025&quot;)</code> yordamida <code>2025</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pkyy"><code>isalnum()</code> yordamida fayl nomi faqat harf va raqamlardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="g1Ag">Fayl nomini teskari tartibda chiqaring → <code>[::-1]</code>. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="vkae"><code>len()</code> yordamida fayl nomi uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="q77U">15-Masala: Telefon raqami bilan ishlash</h2>
  <p id="wSg1"><strong>String:</strong></p>
  <pre id="3mjR" data-lang="python">phone = &quot;+998901234567&quot;

</pre>
  <p id="TmHx"><strong>Vazifalar:</strong></p>
  <ol id="6lgv">
    <li id="LXUo"><code>startswith(&quot;+998&quot;)</code> yordamida raqamning <code>+998</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="wXEF"><code>isdigit()</code> yordamida raqam faqat raqamlardan iboratligini tekshiring ( <code>+</code> belgisidan tashqari). Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="2TZY"><code>replace(&quot;+998&quot;, &quot;&quot;)</code> yordamida kod qismini olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="tPeR"><code>count(&quot;9&quot;)</code> yordamida <code>9</code> raqami nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="5XGV"><code>in</code> operatori yordamida <code>&quot;123&quot;</code> qismi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="tfLi"><code>find(&quot;456&quot;)</code> yordamida <code>456</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="6MP2">Raqamni teskari tartibda chiqaring → <code>[::-1]</code>. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0l7T"><code>isprintable()</code> yordamida raqam chop etiladigan belgilar ekanligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Nrhb"><code>join()</code> yordamida raqamni har bir belgisini <code>,</code> bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="TfXc"><code>len()</code> yordamida telefon raqami uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="lZ6d">16-Masala: Kalit so‘zlar bilan ishlash</h2>
  <p id="XWfg"><strong>String:</strong></p>
  <pre id="6Vao" data-lang="python">keywords = &quot;python, java, javascript, c++&quot;

</pre>
  <p id="JgC9"><strong>Vazifalar:</strong></p>
  <ol id="TToo">
    <li id="2JT3"><code>split(&quot;, &quot;)</code> yordamida kalit so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="P1p6"><code>join()</code> yordamida kalit so‘zlarni <code>;</code> belgisi bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="rjs4"><code>replace(&quot;java&quot;, &quot;ruby&quot;)</code> yordamida <code>java</code> ni <code>ruby</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="wl3z"><code>count(&quot;a&quot;)</code> yordamida <code>a</code> harfi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="pywO"><code>in</code> operatori yordamida <code>&quot;python&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="9svR"><code>find(&quot;c++&quot;)</code> yordamida <code>c++</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oDSN"><code>upper()</code> yordamida kalit so‘zlarni katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="ppp3"><code>islower()</code> yordamida matn faqat kichik harflardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="gLJw"><code>startswith(&quot;python&quot;)</code> yordamida matnning <code>python</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Jd0B"><code>len()</code> yordamida kalit so‘zlar uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="wKpu">17-Masala: Maqola sarlavhasi bilan ishlash</h2>
  <p id="wLmx"><strong>String:</strong></p>
  <pre id="4jQF" data-lang="python">headline = &quot;  Yangi texnologiyalar 2025  &quot;

</pre>
  <p id="eUeU"><strong>Vazifalar:</strong></p>
  <ol id="ZQGc">
    <li id="u9B2"><code>strip()</code> yordamida bosh va oxiridagi bo‘sh joylarni olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="OnOu"><code>title()</code> yordamida har bir so‘zning bosh harfini katta qiling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="yIya"><code>replace(&quot;2025&quot;, &quot;2030&quot;)</code> yordamida <code>2025</code> ni <code>2030</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="7TJ5"><code>count(&quot;a&quot;)</code> yordamida <code>a</code> harfi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="LYdL"><code>split()</code> yordamida so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="bvcr"><code>in</code> operatori yordamida <code>&quot;texnologiyalar&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="EHq2"><code>find(&quot;2025&quot;)</code> yordamida <code>2025</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="mO57"><code>lower()</code> yordamida sarlavhani kichik harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Z8KA"><code>isspace()</code> yordamida matn faqat bo‘sh joylardan iborat emasligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="lUEc"><code>len()</code> yordamida sarlavha uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="VQYi">18-Masala: Kurs nomi bilan ishlash</h2>
  <p id="r89M"><strong>String:</strong></p>
  <pre id="EqHQ" data-lang="python">course = &quot;Data Science and Machine Learning&quot;

</pre>
  <p id="T5sy"><strong>Vazifalar:</strong></p>
  <ol id="ALj0">
    <li id="vDfn"><code>title()</code> yordamida har bir so‘zning bosh harfini katta qiling. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="ryv5"><code>replace(&quot;Machine Learning&quot;, &quot;AI&quot;)</code> yordamida <code>Machine Learning</code> ni <code>AI</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="I515"><code>count(&quot;a&quot;)</code> yordamida <code>a</code> harfi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="kvVM"><code>find(&quot;Science&quot;)</code> yordamida <code>Science</code> so‘zining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="c43O"><code>split()</code> yordamida so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="M1pe"><code>startswith(&quot;Data&quot;)</code> yordamida kurs nomining <code>Data</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="8ivL"><code>in</code> operatori yordamida <code>&quot;Learning&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="xLcz"><code>upper()</code> yordamida kurs nomini katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="HoZa"><code>join()</code> yordamida so‘zlarni <code>_</code> belgisi bilan birlashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="R4ju"><code>len()</code> yordamida kurs nomi uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="ipzb">19-Masala: Buyurtma kodi bilan ishlash</h2>
  <p id="9Wkn"><strong>String:</strong></p>
  <pre id="C1lC" data-lang="python">order_code = &quot;ORD-2025-789&quot;

</pre>
  <p id="mBRG"><strong>Vazifalar:</strong></p>
  <ol id="R5G1">
    <li id="B2J7"><code>split(&quot;-&quot;)</code> yordamida kodni qismlarga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="vRP3"><code>replace(&quot;789&quot;, &quot;456&quot;)</code> yordamida <code>789</code> ni <code>456</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="03HR"><code>startswith(&quot;ORD&quot;)</code> yordamida kodning <code>ORD</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="inea"><code>count(&quot;2&quot;)</code> yordamida <code>2</code> raqami nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="y68Q"><code>find(&quot;2025&quot;)</code> yordamida <code>2025</code> qismining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="71z3"><code>isalnum()</code> yordamida kod faqat harf va raqamlardan iboratligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="fWDt"><code>upper()</code> yordamida kodni katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="YiTp"><code>in</code> operatori yordamida <code>&quot;-&quot;</code> belgisi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="rgZJ">Kodni teskari tartibda chiqaring → <code>[::-1]</code>. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="0IYN"><code>len()</code> yordamida buyurtma kodi uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />
  <h2 id="kVof">20-Masala: Ijtimoiy tarmoq postiga ishlov berish</h2>
  <p id="THBK"><strong>String:</strong></p>
  <pre id="38EV" data-lang="python">post = &quot;Bugun yangi loyihamni boshladim! #python #coding&quot;

</pre>
  <p id="aBDt"><strong>Vazifalar:</strong></p>
  <ol id="iMyk">
    <li id="TNJC"><code>strip()</code> yordamida bosh va oxiridagi bo‘sh joylarni olib tashlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="icaJ"><code>replace(&quot;#coding&quot;, &quot;#programming&quot;)</code> yordamida <code>#coding</code> ni <code>#programming</code> bilan almashtiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="oMeo"><code>split()</code> yordamida so‘zlarni ro‘yxatga ajrating. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="WQsC"><code>count(&quot;#&quot;)</code> yordamida <code>#</code> belgisi nechta ekanligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="XzHs"><code>find(&quot;python&quot;)</code> yordamida <code>python</code> so‘zining indeksini toping. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="nBNO"><code>startswith(&quot;Bugun&quot;)</code> yordamida postning <code>Bugun</code> bilan boshlanishini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="xYlC"><code>endswith(&quot;coding&quot;)</code> yordamida postning <code>coding</code> bilan tugashini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="wYA7"><code>in</code> operatori yordamida <code>&quot;loyiha&quot;</code> so‘zi mavjudligini tekshiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="BQwu"><code>upper()</code> yordamida postni katta harflarga aylantiring. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
    <li id="Ag7h"><code>len()</code> yordamida post uzunligini aniqlang. Natijani <code>print()</code> funksiyasi yordamida chop qiling!</li>
  </ol>
  <hr />

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/masala224</guid><link>https://teletype.in/@nodirustoz/masala224?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/masala224?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python dasturlash tilida qiziqarli algoritmik masala</title><pubDate>Wed, 07 May 2025 17:24:22 GMT</pubDate><description><![CDATA[Masala: Tezlikni oshirish uchun jarimani hisoblash]]></description><content:encoded><![CDATA[
  <p id="Sjmd">Masala: Tezlikni oshirish uchun jarimani hisoblash</p>
  <p id="FQvy">Topshiriq:</p>
  <p id="xKID">Foydalanuvchi mashinasining haqiqiy tezligi va yo‘ldagi tezlik cheklovi beriladi. Ushbu farqqa qarab haydovchiga nisbatan:</p>
  <p id="CohE">- birinchi marta buzilganmi,<br />- ikkinchi marta buzilganmi,<br />- yoki uchinchi va undan ko‘p marta buzilganmi</p>
  <p id="NZMf">— shunga mos ravishda jarima miqdori va qo‘shimcha choralar belgilanadi.</p>
  <p id="VTkU"><br />Kiruvchi ma&#x27;lumotlar:</p>
  <p id="AJ7o">- cheklov — ruxsat etilgan tezlik (km/soat, butun son).<br />- tezlik — haqiqiy tezlik (km/soat, butun son).<br />- qoida buzilish soni — ushbu haydovchining ilgari necha marta tezlikni oshirgani (1, 2 yoki 3 va undan ortiq).</p>
  <p id="gulC"><br />Chiqaruvchi ma&#x27;lumot:</p>
  <p id="2SSQ">Jarima miqdori va qo‘shimcha choralar (matn ko‘rinishida).</p>
  <p id="Rf2V"><br />Algoritm:</p>
  <p id="of8L">1. farq = tezlik - cheklov hisoblanadi.<br />2. Agar farq &lt;= 0, jarima qo‘llanmaydi.<br />3. Aks holda farq va qoida buzilish soniga qarab:</p>
  <p id="zMrw">   0 &lt; farq ≤ 20:<br />    1-marta: 1 BHM<br />    2-marta: 5 BHM<br />    3-marta+: 15 BHM + 1 yil haydovchilik guvohnomadan mahrum<br />   21 ≤ farq ≤ 40:<br />    1-marta: 5 BHM<br />    2-marta+: 15 BHM yoki 1 yil haydovchilik guvohnoma bekor qilinishi<br />   farq &gt; 40:<br />    1-marta: 9 BHM<br />    2-marta+: 25 BHM + 2 yil haydovchilik guvohnomadan mahrum</p>
  <p id="2jxg"><br />Misollar:</p>
  <p id="GlX1">1-misol:</p>
  <p id="nPR6">Ruxsat etilgan tezlikni kiriting (km/soat): 70  <br />Haqiqiy tezlikni kiriting (km/soat): 85  <br />Bu nechinchi marta tezlikni oshiryapsiz? (1, 2, 3...): 1</p>
  <p id="hYHt">Natija:</p>
  <p id="Hkg7">Jarima: 1 BHM (375000 so‘m)</p>
  <p id="bpVZ"><br />2-misol:</p>
  <p id="xMip">Ruxsat etilgan tezlikni kiriting (km/soat): 60  <br />Haqiqiy tezlikni kiriting (km/soat): 105  <br />Bu nechinchi marta tezlikni oshiryapsiz? (1, 2, 3...): 3</p>
  <p id="PsdT"><br />Natija:</p>
  <p id="FCEA">Jarima: 25 BHM (9375000 so‘m) va 2 yilga guvohnomadan mahrum qilinadi.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/Python_Set</guid><link>https://teletype.in/@nodirustoz/Python_Set?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/Python_Set?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python dasturlash tilida Set (To'plam) mavzusi</title><pubDate>Wed, 07 May 2025 17:00:24 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/71/47/7147d492-78af-4938-b34c-82fee675709e.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/34/90/3490f865-eaef-41cd-a309-9ba6cec47b11.jpeg"></img>Python dasturlash tilida Set mavzusi]]></description><content:encoded><![CDATA[
  <hr />
  <h2 id="BrtV">Set nima?</h2>
  <p id="N6gg"><strong>Set</strong> — Python&#x27;dagi tartibsiz, takrorlanmaydigan elementlar to&#x27;plamini saqlash uchun mo&#x27;ljallangan ma&#x27;lumot tuzilmasi. U matematik to&#x27;plamlar nazariyasiga asoslanadi va elementlarning yagona (unique) bo&#x27;lishini ta&#x27;minlaydi. Set&#x27;lar ichki jihatdan <em>hash table</em> (xesh jadval) asosida ishlaydi, bu esa elementlarni qidirish va qo&#x27;shish operatsiyalarini juda tez (O(1) o&#x27;rtacha vaqt murakkabligi) amalga oshirish imkonini beradi.</p>
  <h3 id="om90">Set&#x27;ning asosiy xususiyatlari:</h3>
  <ul id="OeeZ">
    <li id="DU4Q"><strong>Tartibsiz</strong>: Elementlarning joylashuvi tasodifiy, indeks orqali murojaat qilib bo&#x27;lmaydi.</li>
    <li id="B3yY"><strong>Takrorlanmaydigan</strong>: Har bir element faqat bir marta saqlanadi.</li>
    <li id="HHof"><strong>O&#x27;zgartiriladigan (mutable)</strong>: Set&#x27;ga element qo&#x27;shish yoki o&#x27;chirish mumkin, lekin elementlarning o&#x27;zi o&#x27;zgarmas (immutable) bo&#x27;lishi kerak (masalan, sonlar, satrlar, tuple&#x27;lar).</li>
    <li id="bexZ"><strong>Hashable elementlar</strong>: Set&#x27;dagi har bir element <em>hashable</em> bo&#x27;lishi kerak, ya&#x27;ni u <code>__hash__</code> metodiga ega bo&#x27;lishi lozim (masalan, ro&#x27;yxatlar set elementi bo&#x27;la olmaydi).</li>
    <li id="PMMQ"><strong>Yaratilishi</strong>: <code>{}</code> yoki <code>set()</code> konstruktorlari orqali yaratiladi.</li>
  </ul>
  <h3 id="KiMy">Set&#x27;dan foydalanishning afzalliklari:</h3>
  <ul id="2v2Q">
    <li id="gGaF">Takroriy elementlarni tez olib tashlash.</li>
    <li id="d5OC">Matematik to&#x27;plam operatsiyalari (birikma, kesishma, ayirma).</li>
    <li id="ed4c">Elementlarning mavjudligini tezkor tekshirish.</li>
  </ul>
  <h3 id="lqxC">Set&#x27;dan foydalanishning kamchiliklari:</h3>
  <ul id="35YB">
    <li id="3FC6">Tartibsizligi tufayli indeks orqali murojaat qilib bo&#x27;lmaydi.</li>
    <li id="tXdS">Faqat o&#x27;zgarmas ma&#x27;lumot turlari element sifatida ishlatilishi mumkin.</li>
  </ul>
  <h3 id="VGKO">Set yaratish</h3>
  <p id="9LMc">Set yaratishning bir nechta usullari mavjud:</p>
  <pre id="bfa6" data-lang="python"># Bo&#x27;sh set yaratish
empty_set = set()  # Faqat set() ishlatiladi, chunki {} bo&#x27;sh dict yaratadi
print(empty_set)  # set()

# Elementlar bilan set yaratish
sonlar = {1, 2, 3, 4}  # To&#x27;g&#x27;ridan-to&#x27;g&#x27;ri sintaksis
print(sonlar)  # {1, 2, 3, 4}

# Ro&#x27;yxatdan set yaratish
matnlar = set([&quot;olma&quot;, &quot;banan&quot;, &quot;uzum&quot;])
print(matnlar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}

# Turli xil ma&#x27;lumot turlari bilan set
aralash = {1, &quot;olma&quot;, (2, 3)}
print(aralash)  # {1, &#x27;olma&#x27;, (2, 3)}

# Takroriy elementlar avtomatik olib tashlanadi
takroriy = {1, 1, 2, 2, 3}
print(takroriy)  # {1, 2, 3}</pre>
  <p id="moZl"><strong>Eslatma</strong>: Bo&#x27;sh set yaratishda <code>{}</code> ishlatmang, chunki u bo&#x27;sh dictionary yaratadi. Bo&#x27;sh set yaratishda <code>set()</code> dan foydalaning.</p>
  <h3 id="1XNR">Set metodlari va operatsiyalari</h3>
  <p id="9p5C">Set&#x27;lar bir qator metodlar va operatorlarni qo&#x27;llab-quvvatlaydi. Quyida har bir metod va operator chuqur tahlil qilinadi.</p>
  <h3 id="XoYv">Element qo&#x27;shish</h3>
  <ul id="vtO8">
    <li id="vVMy"><strong><code>add(elem)</code></strong>: Set&#x27;ga bitta element qo&#x27;shadi. Agar element allaqachon mavjud bo&#x27;lsa, set o&#x27;zgarmaydi, chunki set&#x27;da takroriy elementlar bo&#x27;lmaydi.</li>
  </ul>
  <pre id="7XFY" data-lang="python">mevalar = {&quot;olma&quot;, &quot;banan&quot;}
mevalar.add(&quot;uzum&quot;)  # Yangi element qo&#x27;shish
print(mevalar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}

# Takroriy element qo&#x27;shish
mevalar.add(&quot;olma&quot;)  # Hech narsa o&#x27;zgarmaydi
print(mevalar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}</pre>
  <p id="XFaT"><strong>Ishlash tartibi:</strong> <code>add()</code> metodi elementni <em>hash</em> qiladi va uni set&#x27;ning ichki xesh jadvaliga joylashtiradi. Agar xesh qiymati allaqachon mavjud bo&#x27;lsa, element qo&#x27;shilmaydi.</p>
  <ul id="7XYM">
    <li id="lQpM"><strong><code>update(*others)</code></strong>: Bir yoki bir nechta iteratsiya qilinadigan obyektlardan (ro&#x27;yxat, set, tuple va h.k.) elementlarni set&#x27;ga qo&#x27;shadi. Takroriy elementlar avtomatik olib tashlanadi.</li>
  </ul>
  <pre id="SxBf" data-lang="python">sonlar = {1, 2}
sonlar.update([3, 4], {5, 6}, (7, 7))  # Ro&#x27;yxat, set va tuple&#x27;dan qo&#x27;shish
print(sonlar)  # {1, 2, 3, 4, 5, 6, 7}

# Takroriy elementlar bilan
sonlar.update([1, 2, 8])
print(sonlar)  # {1, 2, 3, 4, 5, 6, 7, 8}</pre>
  <p id="MzJH"><strong>Ishlash tartibi:</strong> <code>update()</code> har bir elementni <em>hash</em> qilib, set&#x27;ga qo&#x27;shadi. Bu operatsiya O(n) vaqt murakkabligiga ega, bu yerda n — qo&#x27;shilayotgan elementlar soni.</p>
  <h3 id="ZL3W">Element o&#x27;chirish</h3>
  <ul id="cVtg">
    <li id="pYl2"><strong><code>remove(elem)</code></strong>: Berilgan elementni set&#x27;dan o&#x27;chiradi. Agar element mavjud bo&#x27;lmasa, <code>KeyError</code> xatosi yuzaga keladi.</li>
  </ul>
  <pre id="pef1" data-lang="python">sonlar = {1, 2, 3}
sonlar.remove(2)  # Elementni o&#x27;chirish
print(sonlar)  # {1, 3} Xato: 4</pre>
  <p id="9Y6b"><strong>Maslahat</strong>: Agar elementning mavjudligiga ishonchingiz komil bo&#x27;lmasa, <code>discard()</code> dan foydalaning.</p>
  <ul id="fS9l">
    <li id="SGLn"><strong><code>discard(elem)</code></strong>: Berilgan elementni set&#x27;dan o&#x27;chiradi. Agar element mavjud bo&#x27;lmasa, hech qanday xato yuzaga kelmaydi.</li>
  </ul>
  <pre id="KVkd" data-lang="python">sonlar = {1, 2, 3}
sonlar.discard(2)  # Elementni o&#x27;chirish
print(sonlar)  # {1, 3}

sonlar.discard(4)  # Mavjud bo&#x27;lmagan element, xato yo&#x27;q
print(sonlar)  # {1, 3}</pre>
  <p id="OSrU"><strong>Ishlash tartibi:</strong> <code>discard()</code> elementi <em>hash</em> qilib, uni xesh jadvaldan olib tashlaydi.</p>
  <ul id="wPdX">
    <li id="9p9z"><strong><code>pop()</code></strong>: Set&#x27;dan tasodifiy elementni o&#x27;chiradi va uni qaytaradi. Set bo&#x27;sh bo&#x27;lsa, <code>KeyError</code> yuzaga keladi.</li>
  </ul>
  <pre id="YsV4" data-lang="python">sonlar = {1, 2, 3}
olindi = sonlar.pop()  # Tasodifiy element olinadi
print(olindi)  # Masalan, 1 (tasodifiy)
print(sonlar)  # {2, 3}</pre>
  <p id="FQrs"><strong>Eslatma</strong>: Set tartibsiz bo&#x27;lgani uchun <code>pop()</code> qaysi elementni olib tashlashini oldindan bilib bo&#x27;lmaydi.</p>
  <ul id="CwBM">
    <li id="t9CZ"><strong><code>clear()</code></strong>: Set&#x27;dagi barcha elementlarni o&#x27;chiradi, natijada bo&#x27;sh set qoladi.</li>
  </ul>
  <pre id="6xWx" data-lang="python">sonlar = {1, 2, 3}
sonlar.clear()
print(sonlar)  # set()</pre>
  <p id="3TsE"><strong>Ishlash tartibi:</strong> <code>clear()</code> xesh jadvalni tozalaydi, lekin set obyektining o&#x27;zi xotirada qoladi.</p>
  <h3 id="o26b">To&#x27;plam operatsiyalari</h3>
  <p id="Okbf">Set&#x27;lar matematik to&#x27;plam operatsiyalarini qo&#x27;llab-quvvatlaydi. Bu operatsiyalar yangi set qaytaradi yoki mavjud set&#x27;ni o&#x27;zgartiradi.</p>
  <ul id="XOW6">
    <li id="wLq6"><strong><code>union(*others)</code> yoki <code>|</code></strong>: Bir yoki bir nechta to&#x27;plamning birikmasini qaytaradi. Barcha elementlar yagona holda birlashtiriladi.</li>
  </ul>
  <pre id="nMJV" data-lang="python">a = {1, 2, 3}
b = {3, 4, 5}
c = {5, 6}

# union metodi
birikma = a.union(b, c)
print(birikma)  # {1, 2, 3, 4, 5, 6}

# | operatori
birikma2 = a | b | c
print(birikma2)  # {1, 2, 3, 4, 5, 6}</pre>
  <p id="5nlF"><strong>Ishlash tartibi:</strong> <code>union()</code> barcha elementlarni yangi set&#x27;ga qo&#x27;shadi, takroriy elementlar xesh jadval orqali olib tashlanadi.</p>
  <ul id="pRIX">
    <li id="m19U"><strong><code>intersection(*others)</code> yoki <code>&amp;</code></strong>: To&#x27;plamlarning kesishmasini qaytaradi, ya&#x27;ni faqat barcha to&#x27;plamlarda mavjud elementlarni o&#x27;z ichiga oladi.</li>
  </ul>
  <pre id="6IWy" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
c = {2, 3, 5}

# intersection metodi
kesishma = a.intersection(b, c)
print(kesishma)  # {2, 3}

# &amp; operatori
kesishma2  = a &amp; b &amp; c
print(kesishma2)  # {2, 3}</pre>
  <p id="4cDz"><strong>Ishlash tartibi:</strong> <code>intersection()</code> har bir elementni barcha to&#x27;plamlarda tekshiradi va faqat umumiy elementlarni saqlaydi.</p>
  <ul id="efuu">
    <li id="GSbh"><strong><code>difference(*others)</code> yoki</strong> : Birinchi to&#x27;plamdan boshqa to&#x27;plamlarda mavjud elementlarni olib tashlab, ayirmani qaytaradi.</li>
  </ul>
  <pre id="KcsK" data-lang="python">a = {1, 2, 3, 4}
b = {2, 3}
c = {3, 4}

# difference metodi
ayirma = a.difference(b, c)
print(ayirma)  # {1}

# - operatori
ayirma2 = a - b - c
print(ayirma2)  # {1}</pre>
  <p id="FSEv"><strong>Ishlash tartibi:</strong> <code>difference()</code> birinchi to&#x27;plamning elementlarini boshqa to&#x27;plamlarda tekshiradi va faqat birinchi to&#x27;plamda yagona bo&#x27;lgan elementlarni qaytaradi.</p>
  <ul id="DEeP">
    <li id="XIZt"><strong><code>symmetric_difference(other)</code> yoki <code>^</code></strong>: Ikkala to&#x27;plamda faqat birida mavjud bo&#x27;lgan elementlarni qaytaradi. Faqat bitta boshqa to&#x27;plam bilan ishlaydi.</li>
  </ul>
  <pre id="OEfN" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}

# symmetric_difference metodi
simmetrik = a.symmetric_difference(b)
print(simmetrik)  # {1, 4}

# ^ operatori
simmetrik2 = a ^ b
print(simmetrik2)  # {1, 4}</pre>
  <p id="YKze"><strong>Eslatma</strong>: <code>symmetric_difference()</code> faqat bitta argument qabul qiladi. Bir nechta to&#x27;plam bilan ishlash uchun ketma-ket <code>^</code> operatoridan foydalaning.</p>
  <ul id="hlRG">
    <li id="uLtf"><strong><code>intersection_update(*others)</code></strong>: Kesishmani set&#x27;ning o&#x27;ziga yangilaydi, ya&#x27;ni set faqat umumiy elementlarni saqlaydi.</li>
  </ul>
  <pre id="D4tx" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.intersection_update(b)
print(a)  # {2, 3}</pre>
  <ul id="4Vd0">
    <li id="dhgP"><strong><code>difference_update(*others)</code></strong>: Ayirmani set&#x27;ning o&#x27;ziga yangilaydi.</li>
  </ul>
  <pre id="j5QD" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.difference_update(b)
print(a)  # {1}</pre>
  <ul id="vZzN">
    <li id="Hh4m"><strong><code>symmetric_difference_update(other)</code></strong>: Simmetrik ayirmani set&#x27;ning o&#x27;ziga yangilaydi.</li>
  </ul>
  <pre id="Iy6W" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.symmetric_difference_update(b)
print(a)  # {1, 4}</pre>
  <p id="lUJv"><strong>Ishlash tartibi:</strong> Ushbu <em>update</em> metodlari set&#x27;ni o&#x27;zgartiradi va yangi set yaratmaydi, bu xotirani tejash imkonini beradi.</p>
  <h3 id="8CmK">Tekshiruv metodlari</h3>
  <ul id="vDUC">
    <li id="D9JZ"><strong><code>isdisjoint(other)</code></strong>: Ikkala to&#x27;plamning kesishmasi bo&#x27;sh bo&#x27;lsa, <code>True</code> qaytaradi.</li>
  </ul>
  <pre id="7TWw" data-lang="python">a = {1, 2}
b = {3, 4}
print(a.isdisjoint(b))  # True

c = {2, 3}
print(a.isdisjoint(c))  # False</pre>
  <p id="JEMo"><strong>Foydalanish holati</strong>: Ikki to&#x27;plam o&#x27;rtasida umumiylik yo&#x27;qligini tekshirish uchun ishlatiladi.</p>
  <ul id="0ifL">
    <li id="gR8I"><strong><code>issubset(other)</code> yoki <code>&lt;=</code></strong>: Set boshqa to&#x27;plamning ichki to&#x27;plami bo&#x27;lsa, <code>True</code> qaytaradi. <code>&lt;</code> operatori qat&#x27;iy ichki to&#x27;plamni tekshiradi.</li>
  </ul>
  <pre id="YRkl" data-lang="python">a = {1, 2}
b = {1, 2, 3, 4}
print(a.issubset(b))  # True
print(a &lt;= b)         # True
print(a &lt; b)          # True (qat&#x27;iy ichki to&#x27;plam)

print(a &lt;= a)         # True
print(a &lt; a)          # False (o&#x27;ziga o&#x27;zi qat&#x27;iy ichki to&#x27;plam emas)</pre>
  <ul id="KENt">
    <li id="8dW3"><strong><code>issuperset(other)</code> yoki <code>&gt;=</code></strong>: Set boshqa to&#x27;plamni o&#x27;z ichiga olsa, <code>True</code> qaytaradi. <code>&gt;</code> operatori qat&#x27;iy ustun to&#x27;plamni tekshiradi.</li>
  </ul>
  <pre id="Y9Sb" data-lang="python">a = {1, 2, 3, 4}
b = {1, 2}
print(a.issuperset(b))  # True
print(a &gt;= b)           # True
print(a &gt; b)            # True (qat&#x27;iy ustun to&#x27;plam)

print(a &gt;= a)           # True
print(a &gt; a)            # False</pre>
  <h3 id="bpWb">Boshqa metodlar</h3>
  <ul id="QPNM">
    <li id="QI5h"><strong><code>copy()</code></strong>: Set&#x27;ning sayoz nusxasini (shallow copy) qaytaradi.</li>
  </ul>
  <pre id="6CFE" data-lang="python">a = {1, 2, 3}
b = a.copy()
b.add(4)
print(a)  # {1, 2, 3}
print(b)  # {1, 2, 3, 4}</pre>
  <p id="3MPB"><strong>Eslatma</strong>: Agar set&#x27;da murakkab obyektlar (masalan, tuple ichida ro&#x27;yxat) bo&#x27;lsa, <code>copy()</code> faqat ularning havolasini nusxalaydi.</p>
  <ul id="t3jF">
    <li id="CJ3G"><strong><code>len()</code></strong>: Set&#x27;dagi elementlar sonini qaytaradi.</li>
  </ul>
  <pre id="XJNq" data-lang="python">sonlar = {1, 2, 3}
print(len(sonlar))  # 3</pre>
  <ul id="pvks">
    <li id="4i3g"><strong><code>in</code> operatori</strong>: Elementning set&#x27;da mavjudligini tekshiradi.</li>
  </ul>
  <pre id="h7dg" data-lang="python">sonlar = {1, 2, 3}
print(2 in sonlar)    # True
print(4 in sonlar)    # False</pre>
  <p id="mjlX"><strong>Ishlash tartibi:</strong> <code>in</code> operatori xesh jadvaldan foydalanadi, shuning uchun O(1) vaqt murakkabligiga ega.</p>
  <h3 id="VK4K">Foydalanish holatlari</h3>
  <ul id="pGhI">
    <li id="0wIr"><strong>Takroriy elementlarni olib tashlash</strong>:</li>
  </ul>
  <pre id="piUV" data-lang="python">raqamlar = [1, 2, 2, 3, 3, 4]
yagona = list(set(raqamlar))
print(yagona)  # [1, 2, 3, 4]</pre>
  <ul id="7UhD">
    <li id="wGbe"><strong>Guruhlar tahlili</strong>:</li>
  </ul>
  <pre id="W9LT" data-lang="python">guruh_a = {&quot;Ali&quot;, &quot;Vali&quot;, &quot;Sardor&quot;}
guruh_b = {&quot;Sardor&quot;, &quot;Hasan&quot;, &quot;Husan&quot;}

umumiy = guruh_a &amp; guruh_b
print(&quot;Ikkala guruhda:&quot;, umumiy)  # {&#x27;Sardor&#x27;}

faqat_a = guruh_a - guruh_b
print(&quot;Faqat guruh A:&quot;, faqat_a)  # {&#x27;Ali&#x27;, &#x27;Vali&#x27;}</pre>
  <ul id="2aB3">
    <li id="C8Sd"><strong>Tez qidiruv</strong>:</li>
  </ul>
  <pre id="wk5W" data-lang="python">katta_set = set(range(1000000))
print(999999 in katta_set)  # True, juda tez (O(1))</pre>
  <h3 id="7gSK">Optimallashtirish maslahatlari</h3>
  <ul id="jBrJ">
    <li id="BK9B">Katta ma&#x27;lumotlar bilan ishlashda set&#x27;dan foydalaning, chunki u xesh jadval asosida ishlaydi.</li>
    <li id="kssv">Agar to&#x27;plam o&#x27;zgarmas bo&#x27;lishi kerak bo&#x27;lsa, <code>frozenset</code> ishlatib xotirani tejang.</li>
    <li id="CYNP">Takroriy operatsiyalar (masalan, <code>in</code>) uchun set ro&#x27;yxatdan ancha tezroq.</li>
  </ul>
  <hr />

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/Set</guid><link>https://teletype.in/@nodirustoz/Set?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/Set?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Set (To'plam)</title><pubDate>Wed, 07 May 2025 16:36:24 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/71/47/7147d492-78af-4938-b34c-82fee675709e.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/34/90/3490f865-eaef-41cd-a309-9ba6cec47b11.jpeg"></img>Set — Python'dagi tartibsiz, takrorlanmaydigan elementlar to'plamini saqlash uchun mo'ljallangan ma'lumot tuzilmasi. U matematik to'plamlar nazariyasiga asoslanadi va elementlarning yagona (unique) bo'lishini ta'minlaydi. Set'lar ichki jihatdan hash table (xesh jadval) asosida ishlaydi, bu esa elementlarni qidirish va qo'shish operatsiyalarini juda tez (O(1) o'rtacha vaqt murakkabligi) amalga oshirish imkonini beradi.]]></description><content:encoded><![CDATA[
  <hr />
  <h2 id="wbH7">Set nima?</h2>
  <p id="0If2"><strong>Set</strong> — Python&#x27;dagi tartibsiz, takrorlanmaydigan elementlar to&#x27;plamini saqlash uchun mo&#x27;ljallangan ma&#x27;lumot tuzilmasi. U matematik to&#x27;plamlar nazariyasiga asoslanadi va elementlarning yagona (unique) bo&#x27;lishini ta&#x27;minlaydi. Set&#x27;lar ichki jihatdan <em>hash table</em> (xesh jadval) asosida ishlaydi, bu esa elementlarni qidirish va qo&#x27;shish operatsiyalarini juda tez (O(1) o&#x27;rtacha vaqt murakkabligi) amalga oshirish imkonini beradi.</p>
  <h3 id="X2oI">Set&#x27;ning asosiy xususiyatlari:</h3>
  <ul id="OeeZ">
    <li id="00FJ"><strong>Tartibsiz</strong>: Elementlarning joylashuvi tasodifiy, indeks orqali murojaat qilib bo&#x27;lmaydi.</li>
    <li id="JQl7"><strong>Takrorlanmaydigan</strong>: Har bir element faqat bir marta saqlanadi.</li>
    <li id="ug23"><strong>O&#x27;zgartiriladigan (mutable)</strong>: Set&#x27;ga element qo&#x27;shish yoki o&#x27;chirish mumkin, lekin elementlarning o&#x27;zi o&#x27;zgarmas (immutable) bo&#x27;lishi kerak (masalan, sonlar, satrlar, tuple&#x27;lar).</li>
    <li id="jpp9"><strong>Hashable elementlar</strong>: Set&#x27;dagi har bir element <em>hashable</em> bo&#x27;lishi kerak, ya&#x27;ni u <code>__hash__</code> metodiga ega bo&#x27;lishi lozim (masalan, ro&#x27;yxatlar set elementi bo&#x27;la olmaydi).</li>
    <li id="BMTc"><strong>Yaratilishi</strong>: <code>{}</code> yoki <code>set()</code> konstruktorlari orqali yaratiladi.</li>
  </ul>
  <h3 id="OKX7">Set&#x27;dan foydalanishning afzalliklari:</h3>
  <ul id="2v2Q">
    <li id="5qFT">Takroriy elementlarni tez olib tashlash.</li>
    <li id="8AD1">Matematik to&#x27;plam operatsiyalari (birikma, kesishma, ayirma).</li>
    <li id="o11K">Elementlarning mavjudligini tezkor tekshirish.</li>
  </ul>
  <h3 id="PAin">Set&#x27;dan foydalanishning kamchiliklari:</h3>
  <ul id="35YB">
    <li id="WHa3">Tartibsizligi tufayli indeks orqali murojaat qilib bo&#x27;lmaydi.</li>
    <li id="NyCR">Faqat o&#x27;zgarmas ma&#x27;lumot turlari element sifatida ishlatilishi mumkin.</li>
  </ul>
  <h3 id="EkxW">Set yaratish</h3>
  <p id="kXM6">Set yaratishning bir nechta usullari mavjud:</p>
  <pre id="9jgZ" data-lang="python"># Bo&#x27;sh set yaratish
empty_set = set()  # Faqat set() ishlatiladi, chunki {} bo&#x27;sh dict yaratadi
print(empty_set)  # set()

# Elementlar bilan set yaratish
sonlar = {1, 2, 3, 4}  # To&#x27;g&#x27;ridan-to&#x27;g&#x27;ri sintaksis
print(sonlar)  # {1, 2, 3, 4}

# Ro&#x27;yxatdan set yaratish
matnlar = set([&quot;olma&quot;, &quot;banan&quot;, &quot;uzum&quot;])
print(matnlar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}

# Turli xil ma&#x27;lumot turlari bilan set
aralash = {1, &quot;olma&quot;, (2, 3)}
print(aralash)  # {1, &#x27;olma&#x27;, (2, 3)}

# Takroriy elementlar avtomatik olib tashlanadi
takroriy = {1, 1, 2, 2, 3}
print(takroriy)  # {1, 2, 3}</pre>
  <p id="stDE"><strong>Eslatma</strong>: Bo&#x27;sh set yaratishda <code>{}</code> ishlatmang, chunki u bo&#x27;sh dictionary yaratadi. Bo&#x27;sh set yaratishda <code>set()</code> dan foydalaning.</p>
  <h3 id="h9dw">Set metodlari va operatsiyalari</h3>
  <p id="dRLp">Set&#x27;lar bir qator metodlar va operatorlarni qo&#x27;llab-quvvatlaydi. Quyida har bir metod va operator chuqur tahlil qilinadi.</p>
  <h3 id="4zIg">Element qo&#x27;shish</h3>
  <ul id="vtO8">
    <li id="cYWs"><strong><code>add(elem)</code></strong>: Set&#x27;ga bitta element qo&#x27;shadi. Agar element allaqachon mavjud bo&#x27;lsa, set o&#x27;zgarmaydi, chunki set&#x27;da takroriy elementlar bo&#x27;lmaydi.</li>
  </ul>
  <pre id="uGas" data-lang="python">mevalar = {&quot;olma&quot;, &quot;banan&quot;}
mevalar.add(&quot;uzum&quot;)  # Yangi element qo&#x27;shish
print(mevalar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}

# Takroriy element qo&#x27;shish
mevalar.add(&quot;olma&quot;)  # Hech narsa o&#x27;zgarmaydi
print(meyvalar)  # {&#x27;olma&#x27;, &#x27;banan&#x27;, &#x27;uzum&#x27;}</pre>
  <p id="VVmK"><strong>Ishlash tartibi:</strong> <code>add()</code> metodi elementni <em>hash</em> qiladi va uni set&#x27;ning ichki xesh jadvaliga joylashtiradi. Agar xesh qiymati allaqachon mavjud bo&#x27;lsa, element qo&#x27;shilmaydi.</p>
  <ul id="7XYM">
    <li id="RnYY"><strong><code>update(*others)</code></strong>: Bir yoki bir nechta iteratsiya qilinadigan obyektlardan (ro&#x27;yxat, set, tuple va h.k.) elementlarni set&#x27;ga qo&#x27;shadi. Takroriy elementlar avtomatik olib tashlanadi.</li>
  </ul>
  <pre id="8qbG" data-lang="python">sonlar = {1, 2}
sonlar.update([3, 4], {5, 6}, (7, 7))  # Ro&#x27;yxat, set va tuple&#x27;dan qo&#x27;shish
print(sonlar)  # {1, 2, 3, 4, 5, 6, 7}

# Takroriy elementlar bilan
sonlar.update([1, 2, 8])
print(sonlar)  # {1, 2, 3, 4, 5, 6, 7, 8}</pre>
  <p id="ZB6U"><strong>Ishlash tartibi:</strong> <code>update()</code> har bir elementni <em>hash</em> qilib, set&#x27;ga qo&#x27;shadi. Bu operatsiya O(n) vaqt murakkabligiga ega, bu yerda n — qo&#x27;shilayotgan elementlar soni.</p>
  <h3 id="0eT3">Element o&#x27;chirish</h3>
  <ul id="cVtg">
    <li id="TEQi"><strong><code>remove(elem)</code></strong>: Berilgan elementni set&#x27;dan o&#x27;chiradi. Agar element mavjud bo&#x27;lmasa, <code>KeyError</code> xatosi yuzaga keladi.</li>
  </ul>
  <pre id="VfHo" data-lang="python">sonlar = {1, 2, 3}
sonlar.remove(2)  # Elementni o&#x27;chirish
print(sonlar)  # {1, 3} Xato: 4</pre>
  <p id="wW0c"><strong>Maslahat</strong>: Agar elementning mavjudligiga ishonchingiz komil bo&#x27;lmasa, <code>discard()</code> dan foydalaning.</p>
  <ul id="fS9l">
    <li id="LyAB"><strong><code>discard(elem)</code></strong>: Berilgan elementni set&#x27;dan o&#x27;chiradi. Agar element mavjud bo&#x27;lmasa, hech qanday xato yuzaga kelmaydi.</li>
  </ul>
  <pre id="v0TH" data-lang="python">sonlar = {1, 2, 3}
sonlar.discard(2)  # Elementni o&#x27;chirish
print(sonlar)  # {1, 3}

sonlar.discard(4)  # Mavjud bo&#x27;lmagan element, xato yo&#x27;q
print(sonlar)  # {1, 3}</pre>
  <p id="u2VA"><strong>Ishlash tartibi:</strong> <code>discard()</code> elementi <em>hash</em> qilib, uni xesh jadvaldan olib tashlaydi.</p>
  <ul id="wPdX">
    <li id="OE8g"><strong><code>pop()</code></strong>: Set&#x27;dan tasodifiy elementni o&#x27;chiradi va uni qaytaradi. Set bo&#x27;sh bo&#x27;lsa, <code>KeyError</code> yuzaga keladi.</li>
  </ul>
  <pre id="aOUm" data-lang="python">sonlar = {1, 2, 3}
olindi = sonlar.pop()  # Tasodifiy element olinadi
print(olindi)  # Masalan, 1 (tasodifiy)
print(sonlar)  # {2, 3}</pre>
  <p id="0kgb"><strong>Eslatma</strong>: Set tartibsiz bo&#x27;lgani uchun <code>pop()</code> qaysi elementni olib tashlashini oldindan bilib bo&#x27;lmaydi.</p>
  <ul id="CwBM">
    <li id="iPyF"><strong><code>clear()</code></strong>: Set&#x27;dagi barcha elementlarni o&#x27;chiradi, natijada bo&#x27;sh set qoladi.</li>
  </ul>
  <pre id="ObkC" data-lang="python">sonlar = {1, 2, 3}
sonlar.clear()
print(sonlar)  # set()</pre>
  <p id="tAXZ"><strong>Ishlash tartibi:</strong> <code>clear()</code> xesh jadvalni tozalaydi, lekin set obyektining o&#x27;zi xotirada qoladi.</p>
  <h3 id="TE0Y">To&#x27;plam operatsiyalari</h3>
  <p id="TWg0">Set&#x27;lar matematik to&#x27;plam operatsiyalarini qo&#x27;llab-quvvatlaydi. Bu operatsiyalar yangi set qaytaradi yoki mavjud set&#x27;ni o&#x27;zgartiradi.</p>
  <ul id="XOW6">
    <li id="63Ns"><strong><code>union(*others)</code> yoki <code>|</code></strong>: Bir yoki bir nechta to&#x27;plamning birikmasini qaytaradi. Barcha elementlar yagona holda birlashtiriladi.</li>
  </ul>
  <pre id="HKHW" data-lang="python">a = {1, 2, 3}
b = {3, 4, 5}
c = {5, 6}

# union metodi
birikma = a.union(b, c)
print(birikma)  # {1, 2, 3, 4, 5, 6}

# | operatori
birikma2 = a | b | c
print(birikma2)  # {1, 2, 3, 4, 5, 6}</pre>
  <p id="5KVO"><strong>Ishlash tartibi:</strong> <code>union()</code> barcha elementlarni yangi set&#x27;ga qo&#x27;shadi, takroriy elementlar xesh jadval orqali olib tashlanadi.</p>
  <ul id="pRIX">
    <li id="hQpY"><strong><code>intersection(*others)</code> yoki <code>&amp;</code></strong>: To&#x27;plamlarning kesishmasini qaytaradi, ya&#x27;ni faqat barcha to&#x27;plamlarda mavjud elementlarni o&#x27;z ichiga oladi.</li>
  </ul>
  <pre id="FEHU" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
c = {2, 3, 5}

# intersection metodi
kesishma = a.intersection(b, c)
print(kesishma)  # {2, 3}

# &amp; operatori
kesishma2  = a &amp; b &amp; c
print(kesishma2)  # {2, 3}</pre>
  <p id="GewO"><strong>Ishlash tartibi:</strong> <code>intersection()</code> har bir elementni barcha to&#x27;plamlarda tekshiradi va faqat umumiy elementlarni saqlaydi.</p>
  <ul id="efuu">
    <li id="IOcs"><strong><code>difference(*others)</code> yoki</strong> : Birinchi to&#x27;plamdan boshqa to&#x27;plamlarda mavjud elementlarni olib tashlab, ayirmani qaytaradi.</li>
  </ul>
  <pre id="ylyB" data-lang="python">a = {1, 2, 3, 4}
b = {2, 3}
c = {3, 4}

# difference metodi
ayirma = a.difference(b, c)
print(ayirma)  # {1}

# - operatori
ayirma2 = a - b - c
print(ayirma2)  # {1}</pre>
  <p id="ID2J"><strong>Ishlash tartibi:</strong> <code>difference()</code> birinchi to&#x27;plamning elementlarini boshqa to&#x27;plamlarda tekshiradi va faqat birinchi to&#x27;plamda yagona bo&#x27;lgan elementlarni qaytaradi.</p>
  <ul id="DEeP">
    <li id="txcL"><strong><code>symmetric_difference(other)</code> yoki <code>^</code></strong>: Ikkala to&#x27;plamda faqat birida mavjud bo&#x27;lgan elementlarni qaytaradi. Faqat bitta boshqa to&#x27;plam bilan ishlaydi.</li>
  </ul>
  <pre id="Mtoh" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}

# symmetric_difference metodi
simmetrik = a.symmetric_difference(b)
print(simmetrik)  # {1, 4}

# ^ operatori
simmetrik2 = a ^ b
print(simmetrik2)  # {1, 4}</pre>
  <p id="A7hH"><strong>Eslatma</strong>: <code>symmetric_difference()</code> faqat bitta argument qabul qiladi. Bir nechta to&#x27;plam bilan ishlash uchun ketma-ket <code>^</code> operatoridan foydalaning.</p>
  <ul id="hlRG">
    <li id="lDny"><strong><code>intersection_update(*others)</code></strong>: Kesishmani set&#x27;ning o&#x27;ziga yangilaydi, ya&#x27;ni set faqat umumiy elementlarni saqlaydi.</li>
  </ul>
  <pre id="qVs8" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.intersection_update(b)
print(a)  # {2, 3}</pre>
  <ul id="4Vd0">
    <li id="ve4b"><strong><code>difference_update(*others)</code></strong>: Ayirmani set&#x27;ning o&#x27;ziga yangilaydi.</li>
  </ul>
  <pre id="Xnnt" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.difference_update(b)
print(a)  # {1}</pre>
  <ul id="vZzN">
    <li id="nl0u"><strong><code>symmetric_difference_update(other)</code></strong>: Simmetrik ayirmani set&#x27;ning o&#x27;ziga yangilaydi.</li>
  </ul>
  <pre id="FYxD" data-lang="python">a = {1, 2, 3}
b = {2, 3, 4}
a.symmetric_difference_update(b)
print(a)  # {1, 4}</pre>
  <p id="EZHt"><strong>Ishlash tartibi:</strong> Ushbu <em>update</em> metodlari set&#x27;ni o&#x27;zgartiradi va yangi set yaratmaydi, bu xotirani tejash imkonini beradi.</p>
  <h3 id="qLcn">Tekshiruv metodlari</h3>
  <ul id="vDUC">
    <li id="KuBD"><strong><code>isdisjoint(other)</code></strong>: Ikkala to&#x27;plamning kesishmasi bo&#x27;sh bo&#x27;lsa, <code>True</code> qaytaradi.</li>
  </ul>
  <pre id="exlN" data-lang="python">a = {1, 2}
b = {3, 4}
print(a.isdisjoint(b))  # True

c = {2, 3}
print(a.isdisjoint(c))  # False</pre>
  <p id="1CQX"><strong>Foydalanish holati</strong>: Ikki to&#x27;plam o&#x27;rtasida umumiylik yo&#x27;qligini tekshirish uchun ishlatiladi.</p>
  <ul id="0ifL">
    <li id="p0IP"><strong><code>issubset(other)</code> yoki <code>&lt;=</code></strong>: Set boshqa to&#x27;plamning ichki to&#x27;plami bo&#x27;lsa, <code>True</code> qaytaradi. <code>&lt;</code> operatori qat&#x27;iy ichki to&#x27;plamni tekshiradi.</li>
  </ul>
  <pre id="xbPk" data-lang="python">a = {1, 2}
b = {1, 2, 3, 4}
print(a.issubset(b))  # True
print(a &lt;= b)         # True
print(a &lt; b)          # True (qat&#x27;iy ichki to&#x27;plam)

print(a &lt;= a)         # True
print(a &lt; a)          # False (o&#x27;ziga o&#x27;zi qat&#x27;iy ichki to&#x27;plam emas)</pre>
  <ul id="KENt">
    <li id="kr6S"><strong><code>issuperset(other)</code> yoki <code>&gt;=</code></strong>: Set boshqa to&#x27;plamni o&#x27;z ichiga olsa, <code>True</code> qaytaradi. <code>&gt;</code> operatori qat&#x27;iy ustun to&#x27;plamni tekshiradi.</li>
  </ul>
  <pre id="fzeK" data-lang="python">a = {1, 2, 3, 4}
b = {1, 2}
print(a.issuperset(b))  # True
print(a &gt;= b)           # True
print(a &gt; b)            # True (qat&#x27;iy ustun to&#x27;plam)

print(a &gt;= a)           # True
print(a &gt; a)            # False</pre>
  <h3 id="ftea">Boshqa metodlar</h3>
  <ul id="QPNM">
    <li id="UCij"><strong><code>copy()</code></strong>: Set&#x27;ning sayoz nusxasini (shallow copy) qaytaradi.</li>
  </ul>
  <pre id="iqbc" data-lang="python">a = {1, 2, 3}
b = a.copy()
b.add(4)
print(a)  # {1, 2, 3}
print(b)  # {1, 2, 3, 4}</pre>
  <p id="QtZu"><strong>Eslatma</strong>: Agar set&#x27;da murakkab obyektlar (masalan, tuple ichida ro&#x27;yxat) bo&#x27;lsa, <code>copy()</code> faqat ularning havolasini nusxalaydi.</p>
  <ul id="t3jF">
    <li id="ED5w"><strong><code>len()</code></strong>: Set&#x27;dagi elementlar sonini qaytaradi.</li>
  </ul>
  <pre id="cEnz" data-lang="python">sonlar = {1, 2, 3}
print(len(sonlar))  # 3</pre>
  <ul id="pvks">
    <li id="BrZb"><strong><code>in</code> operatori</strong>: Elementning set&#x27;da mavjudligini tekshiradi.</li>
  </ul>
  <pre id="ZDXC" data-lang="python">sonlar = {1, 2, 3}
print(2 in sonlar)    # True
print(4 in sonlar)    # False</pre>
  <p id="UuL8"><strong>Ishlash tartibi:</strong> <code>in</code> operatori xesh jadvaldan foydalanadi, shuning uchun O(1) vaqt murakkabligiga ega.</p>
  <h3 id="IXZT">Foydalanish holatlari</h3>
  <ul id="pGhI">
    <li id="yaKq"><strong>Takroriy elementlarni olib tashlash</strong>:</li>
  </ul>
  <pre id="K1cC" data-lang="python">raqamlar = [1, 2, 2, 3, 3, 4]
yagona = list(set(raqamlar))
print(yagona)  # [1, 2, 3, 4]</pre>
  <ul id="7UhD">
    <li id="kdUu"><strong>Guruhlar tahlili</strong>:</li>
  </ul>
  <pre id="5FUL" data-lang="python">guruh_a = {&quot;Ali&quot;, &quot;Vali&quot;, &quot;Sardor&quot;}
guruh_b = {&quot;Sardor&quot;, &quot;Hasan&quot;, &quot;Husan&quot;}

umumiy = guruh_a &amp; guruh_b
print(&quot;Ikkala guruhda:&quot;, umumiy)  # {&#x27;Sardor&#x27;}

faqat_a = guruh_a - guruh_b
print(&quot;Faqat guruh A:&quot;, faqat_a)  # {&#x27;Ali&#x27;, &#x27;Vali&#x27;}</pre>
  <ul id="2aB3">
    <li id="PE8b"><strong>Tez qidiruv</strong>:</li>
  </ul>
  <pre id="NCiR" data-lang="python">katta_set = set(range(1000000))
print(999999 in katta_set)  # True, juda tez (O(1))</pre>
  <h3 id="QTS8">Optimallashtirish maslahatlari</h3>
  <ul id="jBrJ">
    <li id="BPbq">Katta ma&#x27;lumotlar bilan ishlashda set&#x27;dan foydalaning, chunki u xesh jadval asosida ishlaydi.</li>
    <li id="RqXo">Agar to&#x27;plam o&#x27;zgarmas bo&#x27;lishi kerak bo&#x27;lsa, <code>frozenset</code> ishlatib xotirani tejang.</li>
    <li id="hviV">Takroriy operatsiyalar (masalan, <code>in</code>) uchun set ro&#x27;yxatdan ancha tezroq.</li>
  </ul>
  <hr />

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/zMtll_y1S4z</guid><link>https://teletype.in/@nodirustoz/zMtll_y1S4z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/zMtll_y1S4z?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Пост 05.05.2025</title><pubDate>Mon, 05 May 2025 18:31:10 GMT</pubDate><description><![CDATA[Python'da string - bu matnli ma'lumotlarni ifodalash uchun ishlatiladigan ma'lumot turi. Stringlar belgilar ketma-ketligidan iborat bo'lib, ular bir tirnoq ('), ikkita tirnoq (&quot;) yoki uchta tirnoq (&quot;&quot;&quot;) ichida yoziladi. Python'da stringlar Unicode formatida saqlanadi, ya'ni har qanday til yoki maxsus belgilarni (masalan, emoji yoki alohida simvollar) qo'llab-quvvatlaydi.]]></description><content:encoded><![CDATA[
  <h2 id="P5CA">1. String nima?</h2>
  <p id="0yOD">Python&#x27;da <strong>string</strong> - bu matnli ma&#x27;lumotlarni ifodalash uchun ishlatiladigan ma&#x27;lumot turi. Stringlar belgilar ketma-ketligidan iborat bo&#x27;lib, ular bir tirnoq (<code>&#x27;</code>), ikkita tirnoq (<code>&quot;</code>) yoki uchta tirnoq (<code>&quot;&quot;&quot;</code>) ichida yoziladi. Python&#x27;da stringlar <strong>Unicode</strong> formatida saqlanadi, ya&#x27;ni har qanday til yoki maxsus belgilarni (masalan, emoji yoki alohida simvollar) qo&#x27;llab-quvvatlaydi.</p>
  <p id="KfMG">Stringlarning muhim xususiyati - ular <strong>o&#x27;zgarmas</strong> (immutable). Bu shuni anglatadiki, string yaratilgandan so&#x27;ng uning ichidagi belgilarni to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri o&#x27;zgartirib bo&#x27;lmaydi. Agar o&#x27;zgartirish kerak bo&#x27;lsa, yangi string yaratiladi.</p>
  <h3 id="T6Z0">1.1. String yaratish usullari</h3>
  <p id="33Na">Stringlarni turli usullarda yaratish mumkin:</p>
  <pre id="r86Z"># Oddiy stringlar
ism = &quot;Ali&quot;  # Ikkita tirnoq bilan
shahar = &#x27;Toshkent&#x27;  # Bitta tirnoq bilan
bosh_string = &quot;&quot;  # Bo&#x27;sh string

# Ko&#x27;p qatorli string
uzun_matn = &quot;&quot;&quot;Bu ko&#x27;p qatorli
matn misoli.
Uchta tirnoq bilan yoziladi.&quot;&quot;&quot;

# Raw string (escape belgilarni o&#x27;qimaydi)
raw_matn = r&quot;C:\\new\\test.txt&quot;

# Unicode string
unicode_matn = &quot;Salom \\u2764 Dunyo&quot;  # Yurak belgisi

print(ism)  # Natija: Ali
print(shahar)  # Natija: Toshkent
print(uzun_matn)  # Natija: Ko&#x27;p qatorli matn
print(raw_matn)  # Natija: C:\\new\\test.txt
print(unicode_matn)  # Natija: Salom ❤ Dunyo

</pre>
  <p id="4Tu9"><strong>Izohlar</strong>:</p>
  <ul id="8a5d">
    <li id="v53G"><strong>Bitta va ikkita tirnoq</strong>: Ikkalasini ham ishlatish mumkin, lekin ichma-ich tirnoq ishlatilganda ehtiyot bo&#x27;lish kerak (masalan, <code>&quot;O&#x27;zbekiston&quot;</code> yoki <code>&#x27;O&quot;zbekiston&#x27;</code>).</li>
    <li id="kE9R"><strong>Uchta tirnoq</strong>: Ko&#x27;p qatorli matnlar, uzun sharhlar yoki SQL so&#x27;rovlari kabi murakkab matnlar uchun ishlatiladi.</li>
    <li id="ipQT"><strong>Raw string</strong>: <code>r</code> prefiksi escape belgilarni (<code>\\n</code>, <code>\\t</code>) oddiy belgi sifatida talqin qiladi. Bu fayl yo&#x27;llari yoki regexlarda foydali.</li>
    <li id="df1R"><strong>Unicode</strong>: <code>\\u</code> yoki <code>\\U</code> bilan maxsus belgilarni qo&#x27;shish mumkin.</li>
  </ul>
  <h3 id="ODQg">1.2. Stringning ichki tuzilishi</h3>
  <p id="N78I">Python&#x27;da stringlar belgilar ketma-ketligi sifatida saqlanadi. Har bir belgi o&#x27;ziga xos <strong>indeks</strong> raqamiga ega:</p>
  <ul id="5Lkq">
    <li id="7H7O">Ijobiy indekslar: 0 dan boshlanadi (chapdan o&#x27;ngga).</li>
    <li id="PZAU">Salbiy indekslar: -1 dan boshlanadi (o&#x27;ngdan chapga).</li>
  </ul>
  <p id="AJDP">Masalan:</p>
  <pre id="PMGA">matn = &quot;Python&quot;
# Indekslar:   P  y  t  h  o  n
# Ijobiy:     0  1  2  3  4  5
# Salbiy:    -6 -5 -4 -3 -2 -1

</pre>
  <h2 id="NrD0">2. Stringlar bilan asosiy operatsiyalar</h2>
  <p id="qXx6">Stringlar bilan ishlashda bir nechta asosiy operatsiyalar mavjud.</p>
  <h3 id="gGlT">2.1. Stringlarni birlashtirish (Concatenation)</h3>
  <p id="m7u7"><code>+</code> operatori yordamida ikki yoki undan ko&#x27;p stringlarni birlashtirish mumkin.</p>
  <pre id="uPyP">first_name = &quot;Ali&quot;
last_name = &quot;Valiyev&quot;
full_name = ism + &quot; &quot; + familiya  # Bo&#x27;shliq qo&#x27;shish
print(full_name)  # Natija: Ali Valiyev

</pre>
  <p id="8qTc"><strong>Eslatma:</strong> Ko&#x27;p sonli stringlarni <code>+</code> bilan birlashtirish sekin ishlashi mumkin, chunki har bir birlashtirishda yangi string yaratiladi. Buning o&#x27;rniga <code>join()</code> metodi tavsiya etiladi (keyinroq tushuntiriladi).</p>
  <h3 id="io9n">2.2. Stringni takrorlash</h3>
  <ul id="EUR8">
    <li id="53em">operatori stringni ko&#x27;rsatilgan marta takrorlaydi.</li>
  </ul>
  <pre id="TLXt">soz = &quot;Salom! &quot;
takrorlangan = soz * 3
print(takrorlangan)  # Natija: Salom! Salom! Salom!

</pre>
  <p id="20CE"><strong>Qiziqarli misol</strong>:</p>
  <pre id="1C4w">chiziq = &quot;-&quot; * 20
print(chiziq)  # Natija: --------------------

</pre>
  <h3 id="meIs">2.3. String uzunligini aniqlash</h3>
  <p id="yKoN"><code>len()</code> funksiyasi stringdagi belgilar sonini (bo&#x27;shliqlar va maxsus belgilarni hisobga olgan holda) qaytaradi.</p>
  <pre id="ULKj">matn = &quot;Python o&#x27;rganish qiziqarli!&quot;
uzunlik = len(matn)
print(uzunlik)  # Natija: 25

</pre>
  <p id="hAFA"><strong>Izoh</strong>: Unicode belgilari (masalan, emoji) odatda bitta belgi sifatida hisoblanadi.</p>
  <h3 id="J7Ff">2.4. String indekslari va kesish (Slicing)</h3>
  <p id="06GT">Stringdagi har bir belgi indeks orqali murojaat qilinadi. Kesish (slicing) esa stringning bir qismini olish imkonini beradi.</p>
  <pre id="R1hn">matn = &quot;Python&quot;

# Indeks orqali belgi olish
birinchi_harf = matn[0]  # 0-indeksdagi belgi
oxirgi_harf = matn[-1]  # Oxirgi belgi
print(birinchi_harf)  # Natija: P
print(oxirgi_harf)  # Natija: n

# Kesish (slicing)
qism = matn[1:4]  # 1-indeksdan 4-indeksgacha (4 kirmaydi)
print(qism)  # Natija: yth

# Qadamli kesish
har_ikkinchi = matn[::2]  # Har ikkinchi belgi
teskari = matn[::-1]  # Teskari tartib
print(har_ikkinchi)  # Natija: Pto
print(teskari)  # Natija: nohtyP

</pre>
  <p id="7CTh"><strong>Kesish formati</strong>: <code>[start:stop:step]</code></p>
  <ul id="ouOe">
    <li id="oTH1"><code>start</code>: Qayerdan boshlash (agar bo&#x27;sh bo&#x27;lsa 0-indeksdan boshlab).</li>
    <li id="eZ61"><code>stop</code>: Qayergacha (bu indeks kirmaydi, agar bo&#x27;sh bo&#x27;lsa oxirigacha oladi).</li>
    <li id="e94t"><code>step</code>: Qadam (agar bo&#x27;sh bo&#x27;lsa 1).</li>
  </ul>
  <p id="kfXX"><strong>Qiziqarli misol</strong>:</p>
  <pre id="xaOF">matn = &quot;Salom, Dunyo!&quot;
print(matn[::2])  # Natija: Slo uy!
print(matn[-5:-1])  # Natija: unyo

</pre>
  <h3 id="rcJN">2.5. String ichida kerali belgilar bor yoki yo’qligini tekshirish</h3>
  <p id="pw3I"><code>in</code> va <code>not in</code> operatorlari string ichida qism bor-yo&#x27;qligini tekshiradi.</p>
  <pre id="uUDa">matn = &quot;Salom, Dunyo!&quot;
if &quot;Dunyo&quot; in matn:
    print(&quot;Dunyo so&#x27;zi mavjud&quot;)  # Natija: Dunyo so&#x27;zi mavjud
if &quot;Olam&quot; not in matn:
    print(&quot;Olam so&#x27;zi mavjud emas&quot;)  # Natija: Olam so&#x27;zi mavjud emas

</pre>
  <h3 id="rhAw">2.6. Stringlarni taqqoslash</h3>
  <p id="weQF">Stringlar <code>==</code>, <code>!=</code>, <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code> operatorlari bilan taqqoslanadi. Taqqoslash Unicode kodlari asosida amalga oshiriladi (alfbo tartibida).</p>
  <pre id="UlhX">matn1 = &quot;Ali&quot;
matn2 = &quot;Bob&quot;
print(matn1 == matn2)  # Natija: False
print(matn1 &lt; matn2)  # Natija: True (A &lt; B)

</pre>
  <h2 id="SOrD">3. String metodlari</h2>
  <p id="CWGf">Python&#x27;da stringlar bilan ishlash uchun 40 dan ortiq metod mavjud. Quyida barcha metodlar guruhlarga bo&#x27;lingan holda, har biri uchun misollar va qo&#x27;llanilishi tushuntiriladi.</p>
  <h3 id="v1s6">3.1. Harf registrini o&#x27;zgartirish metodlari</h3>
  <p id="VHJJ">Bu metodlar stringdagi harflarning katta-kichikligini o&#x27;zgartiradi. Belgilar (raqamlar, simvollar) o&#x27;zgarmaydi.</p>
  <ul id="FOnF">
    <li id="Cq9s"><strong><code>upper()</code></strong>: Barcha harflarni katta harfga aylantiradi.</li>
  </ul>
  <pre id="ZolR">matn = &quot;salom DUNYO&quot;
print(matn.upper())  # Natija: SALOM DUNYO

</pre>
  <ul id="EP2s">
    <li id="rjhM"><strong><code>lower()</code></strong>: Barcha harflarni kichik harfga aylantiradi.</li>
  </ul>
  <pre id="Z9Pp">print(matn.lower())  # Natija: salom dunyo

</pre>
  <ul id="aGv5">
    <li id="mVey"><strong><code>title()</code></strong>: Har bir so&#x27;zning birinchi harfini katta, qolganlarini kichik qiladi.</li>
  </ul>
  <pre id="V4pW">matn = &quot;salom dunyo python&quot;
print(matn.title())  # Natija: Salom Dunyo Python

</pre>
  <ul id="lovz">
    <li id="lmkq"><strong><code>capitalize()</code></strong>: Faqat stringning birinchi harfini katta, qolganlarini kichik qiladi.</li>
  </ul>
  <pre id="0OIn">print(matn.capitalize())  # Natija: Salom dunyo python

</pre>
  <ul id="6e84">
    <li id="BYhU"><strong><code>swapcase()</code></strong>: Katta harflarni kichik, kichik harflarni katta qiladi.</li>
  </ul>
  <pre id="f8tF">matn = &quot;Salom DUNYO&quot;
print(matn.swapcase())  # Natija: sALOM dunyo

</pre>
  <p id="86Tp"><strong>Eslatma</strong>: Ushbu metodlar yangi string qaytaradi, asl string o&#x27;zgarmaydi.</p>
  <h3 id="CA6n">3.2. Bo&#x27;shliq va maxsus belgilarni tozalash metodlari</h3>
  <p id="7mge">Bu metodlar stringning boshida yoki oxirida joylashgan bo&#x27;shliqlar yoki maxsus belgilarni olib tashlaydi.</p>
  <ul id="KUDW">
    <li id="Ri04"><strong><code>strip([chars])</code></strong>: Ikkala tarafdagi bo&#x27;shliq yoki ko&#x27;rsatilgan belgilarni olib tashlaydi.</li>
  </ul>
  <pre id="TN1B">matn = &quot;!!!  Salom Dunyo  !!!&quot;
print(matn.strip())  # Natija: Salom Dunyo
print(matn.strip(&quot;!&quot;))  # Natija:   Salom Dunyo

</pre>
  <ul id="a3ep">
    <li id="pCio"><strong><code>lstrip([chars])</code></strong>: Faqat chap tarafdagi belgilarni olib tashlaydi.</li>
  </ul>
  <pre id="4q0g">print(matn.lstrip(&quot;!&quot;))  # Natija:   Salom Dunyo  !!!

</pre>
  <ul id="CkgM">
    <li id="P2fY"><strong><code>rstrip([chars])</code></strong>: Faqat o&#x27;ng tarafdagi belgilarni olib tashlaydi.</li>
  </ul>
  <pre id="E3km">print(matn.rstrip(&quot;!&quot;))  # Natija: !!!  Salom Dunyo

</pre>
  <p id="sama"><strong>Izoh</strong>: <code>chars</code> parametri bo&#x27;lmasa, bo&#x27;shliqlar, tabulyatsiyalar (<code>\\t</code>), yangi qatorlar (<code>\\n</code>) olib tashlanadi.</p>
  <h3 id="ouzX">3.3. Matnni qidirish va almashtirish metodlari</h3>
  <p id="o8kc">Bu metodlar string ichida qismni qidirish yoki almashtirish uchun ishlatiladi.</p>
  <ul id="lYDP">
    <li id="RKT0"><strong><code>find(sub[, start[, end]])</code></strong>: Qismning birinchi paydo bo&#x27;lish indeksini qaytaradi. Topilmasa, -1 qaytaradi.</li>
  </ul>
  <pre id="SZKv">matn = &quot;Salom, Dunyo! Dunyo yaxshi.&quot;
print(matn.find(&quot;Dunyo&quot;))  # Natija: 7
print(matn.find(&quot;Olam&quot;))  # Natija: -1
print(matn.find(&quot;Dunyo&quot;, 8))  # 8-indeksdan qidirish; Natija: 14

</pre>
  <ul id="Xfrg">
    <li id="70jt"><strong><code>rfind(sub[, start[, end]])</code></strong>: Qismning oxirgi paydo bo&#x27;lish indeksini qaytaradi.</li>
  </ul>
  <pre id="7u13">print(matn.rfind(&quot;Dunyo&quot;))  # Natija: 14

</pre>
  <ul id="riR7">
    <li id="oYtY"><strong><code>index(sub[, start[, end]])</code></strong>: <code>find</code> ga o&#x27;xshaydi, lekin topilmasa <code>ValueError</code> chiqaradi.</li>
  </ul>
  <pre id="ZzH7">print(matn.index(&quot;Dunyo&quot;))  # Natija: 7
# print(matn.index(&quot;Olam&quot;))  # ValueError

</pre>
  <ul id="I0J3">
    <li id="G3LZ"><strong><code>rindex(sub[, start[, end]])</code></strong>: <code>rfind</code> ga o&#x27;xshaydi, lekin topilmasa <code>ValueError</code>.</li>
  </ul>
  <pre id="77Ac">print(matn.rindex(&quot;Dunyo&quot;))  # Natija: 14

</pre>
  <ul id="a1ak">
    <li id="0O8z"><strong><code>replace(old, new[, count])</code></strong>: Qismni yangi matn bilan almashtiradi. <code>count</code> bilan almashtirish sonini cheklash mumkin.</li>
  </ul>
  <pre id="GO6T">print(matn.replace(&quot;Dunyo&quot;, &quot;Olam&quot;))  # Natija: Salom, Olam! Olam yaxshi.
print(matn.replace(&quot;Dunyo&quot;, &quot;Olam&quot;, 1))  # Natija: Salom, Olam! Dunyo yaxshi.

</pre>
  <h3 id="PWbY">3.4. Matnni bo&#x27;lish va birlashtirish metodlari</h3>
  <p id="7Fwc">Bu metodlar stringni bo&#x27;lish yoki ro&#x27;yxatni stringga birlashtirish uchun ishlatiladi.</p>
  <ul id="53Uq">
    <li id="ZxtQ"><strong><code>split([sep[, maxsplit]])</code></strong>: Matnni bo&#x27;luvchiga ko&#x27;ra ro&#x27;yxatga ajratadi.</li>
  </ul>
  <pre id="xu7Q">matn = &quot;Python,Java,C++,Go&quot;
print(matn.split(&quot;,&quot;))  # Natija: [&#x27;Python&#x27;, &#x27;Java&#x27;, &#x27;C++&#x27;, &#x27;Go&#x27;]
print(matn.split(&quot;,&quot;, 1))  # Natija: [&#x27;Python&#x27;, &#x27;Java,C++,Go&#x27;]

</pre>
  <ul id="A2zO">
    <li id="7hDw"><strong><code>rsplit([sep[, maxsplit]])</code></strong>: O&#x27;ngdan boshlab bo&#x27;ladi.</li>
  </ul>
  <pre id="wV1b">print(matn.rsplit(&quot;,&quot;, 1))  # Natija: [&#x27;Python,Java,C++&#x27;, &#x27;Go&#x27;]

</pre>
  <ul id="FEZx">
    <li id="OOjg"><strong><code>splitlines([keepends])</code></strong>: Matnni qatorlarga bo&#x27;ladi. <code>keepends=True</code> bo&#x27;lsa, yangi qator belgilari saqlanadi.</li>
  </ul>
  <pre id="1Blr">ko_p_qator = &quot;Birinchi qator\\nIkkinchi qator&quot;
print(ko_p_qator.splitlines())  # Natija: [&#x27;Birinchi qator&#x27;, &#x27;Ikkinchi qator&#x27;]
print(ko_p_qator.splitlines(True))  # Natija: [&#x27;Birinchi qator\\n&#x27;, &#x27;Ikkinchi qator&#x27;]

</pre>
  <ul id="YdsQ">
    <li id="2KJX"><strong><code>join(iterable)</code></strong>: Ro&#x27;yxat yoki boshqa iteratsion ob&#x27;ektdagi stringlarni birlashtiradi.</li>
  </ul>
  <pre id="tLk4">suzlar = [&#x27;Python&#x27;, &#x27;Java&#x27;, &#x27;C++&#x27;]
print(&quot;-&quot;.join(suzlar))  # Natija: Python-Java-C++

</pre>
  <ul id="113U">
    <li id="8XVm"><strong><code>partition(sep)</code></strong>: Matnni bo&#x27;luvchiga ko&#x27;ra uch qismga bo&#x27;ladi (oldin, bo&#x27;luvchi, keyin).</li>
  </ul>
  <pre id="ORX2">matn = &quot;Python,Java,C++&quot;
print(matn.partition(&quot;,&quot;))  # Natija: (&#x27;Python&#x27;, &#x27;,&#x27;, &#x27;Java,C++&#x27;)

</pre>
  <ul id="xoS4">
    <li id="8bvb"><strong><code>rpartition(sep)</code></strong>: O&#x27;ngdan boshlab bo&#x27;ladi.</li>
  </ul>
  <pre id="hnVz">print(matn.rpartition(&quot;,&quot;))  # Natija: (&#x27;Python,Java&#x27;, &#x27;,&#x27;, &#x27;C++&#x27;)

</pre>
  <h3 id="kouZ">3.5. Tekshirish metodlari</h3>
  <p id="HF8k">Bu metodlar stringning tarkibini tekshiradi va <code>True</code> yoki <code>False</code> qaytaradi.</p>
  <ul id="7AKp">
    <li id="RZHL"><strong><code>isalnum()</code></strong>: String faqat harf va raqamlardan iboratmi.</li>
  </ul>
  <pre id="6FcY">print(&quot;Python123&quot;.isalnum())  # Natija: True
print(&quot;Python 123&quot;.isalnum())  # Natija: False (bo&#x27;shliq bor)

</pre>
  <ul id="IuPL">
    <li id="8HXX"><strong><code>isalpha()</code></strong>: String faqat harflardan iboratmi.</li>
  </ul>
  <pre id="AdHs">print(&quot;Python&quot;.isalpha())  # Natija: True
print(&quot;Python123&quot;.isalpha())  # Natija: False

</pre>
  <ul id="fC11">
    <li id="JFzh"><strong><code>isdigit()</code></strong>: String faqat raqamlardan iboratmi.</li>
  </ul>
  <pre id="Wx8l">print(&quot;123&quot;.isdigit())  # Natija: True
print(&quot;12a3&quot;.isdigit())  # Natija: False

</pre>
  <ul id="5pTc">
    <li id="IIUn"><strong><code>isdecimal()</code></strong>: String faqat o&#x27;nlik raqamlardan iboratmi.</li>
  </ul>
  <pre id="YC7E">print(&quot;123&quot;.isdecimal())  # Natija: True
print(&quot;²&quot;.isdecimal())  # Natija: False

</pre>
  <ul id="bryS">
    <li id="Vjgw"><strong><code>isnumeric()</code></strong>: String raqamli belgilardan iboratmi (masalan, ½ yoki 123).</li>
  </ul>
  <pre id="sq9C">print(&quot;123&quot;.isnumeric())  # Natija: True
print(&quot;½&quot;.isnumeric())  # Natija: True

</pre>
  <ul id="AoKT">
    <li id="mYHH"><strong><code>isspace()</code></strong>: String faqat bo&#x27;shliq belgilardan iboratmi.</li>
  </ul>
  <pre id="JIwW">print(&quot;   &quot;.isspace())  # Natija: True
print(&quot; a &quot;.isspace())  # Natija: False

</pre>
  <ul id="2sbd">
    <li id="AvSi"><strong><code>islower()</code></strong>: Hamma harflar kichikmi.</li>
  </ul>
  <pre id="EiLx">print(&quot;salom&quot;.islower())  # Natija: True
print(&quot;Salom&quot;.islower())  # Natija: False

</pre>
  <ul id="NbVL">
    <li id="rTYs"><strong><code>isupper()</code></strong>: Hamma harflar kattami.</li>
  </ul>
  <pre id="viKL">print(&quot;SALOM&quot;.isupper())  # Natija: True
print(&quot;Salom&quot;.isupper())  # Natija: False

</pre>
  <ul id="a7tO">
    <li id="xcLY"><strong><code>istitle()</code></strong>: Har so&#x27;zning birinchi harfi katta, qolganlari kichikmi.</li>
  </ul>
  <pre id="CCWO">print(&quot;Salom Dunyo&quot;.istitle())  # Natija: True
print(&quot;Salom dunyo&quot;.istitle())  # Natija: False

</pre>
  <ul id="amTJ">
    <li id="vhvn"><strong><code>startswith(prefix[, start[, end]])</code></strong>: String ko&#x27;rsatilgan prefiks bilan boshlanadimi.</li>
  </ul>
  <pre id="FjGs">matn = &quot;Salom, Dunyo!&quot;
print(matn.startswith(&quot;Salom&quot;))  # Natija: True
print(matn.startswith(&quot;Dunyo&quot;, 7))  # Natija: True

</pre>
  <ul id="byOU">
    <li id="3bEr"><strong><code>endswith(suffix[, start[, end]])</code></strong>: String ko&#x27;rsatilgan suffiks bilan tugaydimi.</li>
  </ul>
  <pre id="YIos">print(matn.endswith(&quot;Dunyo!&quot;))  # Natija: True
print(matn.endswith(&quot;Salom&quot;, 0, 5))  # Natija: True

</pre>
  <h3 id="HWkA">3.6. Formatlash va joylashtirish metodlari</h3>
  <p id="aldb">Bu metodlar stringni ma&#x27;lum uzunlikda formatlash yoki joylashtirish uchun ishlatiladi.</p>
  <ul id="DnS7">
    <li id="BclC"><strong><code>center(width[, fillchar])</code></strong>: Matnni ko&#x27;rsatilgan uzunlikda markazlashtiradi.</li>
  </ul>
  <pre id="iJq4">matn = &quot;Python&quot;
print(matn.center(10, &quot;*&quot;))  # Natija: **Python**

</pre>
  <ul id="ZVGN">
    <li id="LeAt"><strong><code>ljust(width[, fillchar])</code></strong>: Matnni chapga tekislaydi.</li>
  </ul>
  <pre id="Ifgd">print(matn.ljust(10, &quot;-&quot;))  # Natija: Python----

</pre>
  <ul id="ruTd">
    <li id="d74z"><strong><code>rjust(width[, fillchar])</code></strong>: Matnni o&#x27;ngga tekislaydi.</li>
  </ul>
  <pre id="IMuj">print(matn.rjust(10, &quot;-&quot;))  # Natija: ----Python

</pre>
  <ul id="UprE">
    <li id="WN4V"><strong><code>zfill(width)</code></strong>: Matnni chapdan nollar bilan to&#x27;ldiradi.</li>
  </ul>
  <pre id="Dmeg">print(&quot;42&quot;.zfill(5))  # Natija: 00042
print(&quot;-42&quot;.zfill(5))  # Natija: -0042

</pre>
  <h3 id="j2l2">3.7. Maxsus metodlar</h3>
  <p id="oFy8">Bu metodlar maxsus holatlarda ishlatiladi.</p>
  <ul id="mcUZ">
    <li id="mhuU"><strong><code>expandtabs(tabsize=8)</code></strong>: Tab belgilarni (<code>\\t</code>) ko&#x27;rsatilgan bo&#x27;shliqlarga aylantiradi.</li>
  </ul>
  <pre id="9FQ7">matn = &quot;Salom\\tDunyo&quot;
print(matn.expandtabs(4))  # Natija: Salom    Dunyo

</pre>
  <ul id="R81K">
    <li id="Ec5I"><strong><code>translate(table)</code></strong>: Belgilarni almashtirish jadvaliga ko&#x27;ra o&#x27;zgartiradi.</li>
    <li id="4oUN"><strong><code>maketrans(x[, y[, z]])</code></strong>: Almashtirish jadvalini yaratadi.</li>
  </ul>
  <pre id="j2IM">jadval = str.maketrans(&quot;aeiou&quot;, &quot;12345&quot;)
print(&quot;Salom&quot;.translate(jadval))  # Natija: S1l4m

# Belgilarni o&#x27;chirish
jadval = str.maketrans(&quot;&quot;, &quot;&quot;, &quot;aeiou&quot;)
print(&quot;Salom&quot;.translate(jadval))  # Natija: Slm

</pre>
  <h3 id="VDo4">3.8. Kodlash va dekodlash metodlari</h3>
  <p id="C6OL">Stringlar Unicode formatida bo&#x27;lsa-da, ularni baytlarga aylantirish mumkin.</p>
  <ul id="sQUQ">
    <li id="UwHv"><strong><code>encode(encoding=&#x27;utf-8&#x27;, errors=&#x27;strict&#x27;)</code></strong>: Stringni baytlarga kodlaydi.</li>
  </ul>
  <pre id="Pl7J">matn = &quot;Salom, Дунё!&quot;
baytlar = matn.encode(&quot;utf-8&quot;)
print(baytlar)  # Natija: b&#x27;Salom, \\xd0\\x94\\xd1\\x83\\xd0\\xbd\\xd1\\x91!&#x27;

</pre>
  <ul id="RMLz">
    <li id="OreM"><strong><code>isascii()</code></strong>: String faqat ASCII belgilardan iboratmi.</li>
  </ul>
  <pre id="V1HT">print(&quot;Python&quot;.isascii())  # Natija: True
print(&quot;Salom, Дунё!&quot;.isascii())  # Natija: False

</pre>
  <h2 id="kK2H">4. String formatlash usullari</h2>
  <p id="SRhD">Python&#x27;da stringlarni formatlashning bir nechta usullari mavjud. Quyida har biri chuqur tushuntiriladi.</p>
  <h3 id="TjfL">4.1. <code>%</code> operatori (Eski usul)</h3>
  <p id="hxyH">Bu usul C tilidagi <code>printf</code> funksiyasiga o&#x27;xshaydi.</p>
  <pre id="bGkX">ism = &quot;Ali&quot;
yosh = 25
matn = &quot;Ismim %s, yoshim %d&quot; % (ism, yosh)
print(matn)  # Natija: Ismim Ali, yoshim 25

</pre>
  <p id="gj9K"><strong>Formatlar</strong>:</p>
  <ul id="gRWd">
    <li id="Met3"><code>%s</code>: String</li>
    <li id="KJJh"><code>%d</code>: Butun son</li>
    <li id="RUUu"><code>%f</code>: O&#x27;nlik son</li>
    <li id="w43s"><code>%.2f</code>: Ikki xonali o&#x27;nlik son</li>
  </ul>
  <pre id="7lNY">narx = 19.99
print(&quot;Narx: %.2f$&quot; % narx)  # Natija: Narx: 19.99$

</pre>
  <h3 id="mMCm">4.2. <code>format()</code> metodi</h3>
  <p id="QnWT">Bu usul ko&#x27;proq moslashuvchan va zamonaviyroq.</p>
  <pre id="88ri">matn = &quot;Ismim {}, yoshim {}&quot;.format(&quot;Ali&quot;, 25)
print(matn)  # Natija: Ismim Ali, yoshim 25

# Indeksli formatlash
matn = &quot;Ismim {0}, yoshim {1}, yana ismim {0}&quot;.format(&quot;Ali&quot;, 25)
print(matn)  # Natija: Ismim Ali, yoshim 25, yana ismim Ali

# Ismli formatlash
matn = &quot;Ismim {ism}, yoshim {yosh}&quot;.format(ism=&quot;Ali&quot;, yosh=25)
print(matn)  # Natija: Ismim Ali, yoshim 25

</pre>
  <h3 id="YVIT">4.3. f-string (Python 3.6+, Eng zamonaviy)</h3>
  <p id="SIZw">f-stringlar eng qulay va tez usul hisoblanadi.</p>
  <pre id="kIoG">ism = &quot;Ali&quot;
yosh = 25
matn = f&quot;Ismim {ism}, yoshim {yosh}&quot;
print(matn)  # Natija: Ismim Ali, yoshim 25

# Ifodalar bilan
matn = f&quot;Yoshim {yosh + 5} bo&#x27;ladi 5 yildan keyin&quot;
print(matn)  # Natija: Yoshim 30 bo&#x27;ladi 5 yildan keyin

</pre>
  <p id="lj4p"><strong>Qiziqarli misol</strong>:</p>
  <pre id="gqDV">son = 42
print(f&quot;Son: {son:05d}&quot;)  # Natija: Son: 00042
print(f&quot;Son: {son:.2f}&quot;)  # Natija: Son: 42.00

</pre>
  <h3 id="D6wt">4.4. <code>str.format_map()</code> bilan formatlash</h3>
  <p id="f28S">Lug&#x27;atlar bilan ishlash uchun qulay.</p>
  <pre id="OeRV">data = {&quot;ism&quot;: &quot;Ali&quot;, &quot;yosh&quot;: 25}
matn = &quot;Ismim {ism}, yoshim {yosh}&quot;.format_map(data)
print(matn)  # Natija: Ismim Ali, yoshim 25

</pre>
  <h2 id="I5Qq">5. Escape belgilari va Unicode</h2>
  <h3 id="FN7r">5.1. Escape belgilari</h3>
  <p id="Kmt2">Escape belgilari maxsus ma&#x27;noga ega bo&#x27;lib, <code>\\</code> bilan boshlanadi:</p>
  <ul id="Ir5d">
    <li id="UbXn"><code>\\n</code>: Yangi qator</li>
    <li id="LEBq"><code>\\t</code>: Tabulyatsiya</li>
    <li id="3LIC"><code>\\\\</code>: Orqa chiziq</li>
    <li id="w6Up"><code>\\&quot;</code>: Ikkita tirnoq</li>
    <li id="hRA6"><code>\\&#x27;</code>: Bitta tirnoq</li>
    <li id="fftD"><code>\\r</code>: Qaytish belgisi</li>
    <li id="bhHd"><code>\\b</code>: Backspace</li>
  </ul>
  <pre id="0Avz">matn = &quot;Salom\\nDunyo\\tPython\\\\test&quot;
print(matn)
# Natija:
# Salom
# Dunyo    Python\\test

</pre>
  <h3 id="zqO6">5.2. Unicode belgilari</h3>
  <p id="uHu8">Unicode belgilari <code>\\u</code> (4 xonali) yoki <code>\\U</code> (8 xonali) bilan yoziladi.</p>
  <pre id="ngsQ">matn = &quot;Salom \\u2764 Dunyo&quot;  # Yurak belgisi
print(matn)  # Natija: Salom ❤ Dunyo

matn = &quot;Emoji: \\U0001F600&quot;  # Kulayotgan emoji
print(matn)  # Natija: Emoji: 😊

</pre>
  <p id="40St"><strong>Izoh</strong>: Unicode belgilarni topish uchun <code>unicode.org</code> yoki maxsus jadvallardan foydalaning.</p>
  <h2 id="tdC2">6. Stringlar bilan ishlashda maxsus holatlar</h2>
  <h3 id="MKof">6.1. O&#x27;zgarmaslik (Immutability)</h3>
  <p id="5eQD">Stringlar o&#x27;zgarmas bo&#x27;lgani uchun to&#x27;g&#x27;ridan-to&#x27;g&#x27;ri o&#x27;zgartirish mumkin emas.</p>
  <pre id="VMqO">matn = &quot;Python&quot;
# matn[0] = &#x27;J&#x27;  # TypeError: &#x27;str&#x27; object does not support item assignment
matn = &quot;J&quot; + matn[1:]  # Yangi string yaratish
print(matn)  # Natija: Jython

</pre>
  <h3 id="VXIx">6.2. Performans masalalari</h3>
  <p id="LWVW">Ko&#x27;p sonli string birlashtirishlarda <code>+</code> operatori sekin ishlaydi, chunki har safar yangi string yaratiladi.</p>
  <pre id="HccW"># Yomon usul
natija = &quot;&quot;
for i in range(1000):
    natija += str(i)

</pre>
  <p id="9LIl"><strong>Yaxshi usul</strong>: <code>join()</code> bilan ro&#x27;yxatdan foydalanish.</p>
  <pre id="j8FG">natija = &quot;&quot;.join(str(i) for i in range(1000))

</pre>
  <h3 id="C4XY">6.3. Case sensitivity</h3>
  <p id="XSAw">Stringlar harf katta-kichikligiga sezgir. Masalan:</p>
  <pre id="zeLZ">print(&quot;Python&quot; == &quot;python&quot;)  # Natija: False

</pre>
  <h2 id="GQUq">7. Amaliy misollar</h2>
  <h3 id="Xz7y">Misol 1: Parolni tekshirish</h3>
  <pre id="ElGQ">def parolni_tekshir(parol):
    if (len(parol) &gt;= 8 and
        any(c.isupper() for c in parol) and
        any(c.islower() for c in parol) and
        any(c.isdigit() for c in parol) and
        any(not c.isalnum() for c in parol)):
        return &quot;Parol kuchli&quot;
    return &quot;Parol zaif&quot;

print(parolni_tekshir(&quot;Python123!&quot;))  # Natija: Parol kuchli
print(parolni_tekshir(&quot;python&quot;))  # Natija: Parol zaif

</pre>
  <h3 id="L2gF">Misol 2: Matnni so&#x27;zlarga bo&#x27;lib, statistika chiqarish</h3>
  <pre id="xH1r">matn = &quot;Python dasturlash tili juda qulay va kuchli&quot;
suzlar = matn.split()
uzunliklar = [len(suz) for suz in suzlar]
eng_uzun = max(suzlar, key=len)
print(f&quot;So&#x27;zlar: {suzlar}&quot;)  # Natija: [&#x27;Python&#x27;, &#x27;dasturlash&#x27;, &#x27;tili&#x27;, &#x27;juda&#x27;, &#x27;qulay&#x27;, &#x27;va&#x27;, &#x27;kuchli&#x27;]
print(f&quot;Uzunliklar: {uzunliklar}&quot;)  # Natija: [6, 10, 4, 4, 5, 2, 6]
print(f&quot;Eng uzun so&#x27;z: {eng_uzun}&quot;)  # Natija: dasturlash

</pre>
  <h3 id="Yj6v">Misol 3: Emailni tasdiqlash</h3>
  <pre id="RWwL">def emailni_tekshir(email):
    if (&quot;@&quot; in email and
        email.count(&quot;@&quot;) == 1 and
        email.endswith((&quot;.com&quot;, &quot;.org&quot;, &quot;.net&quot;)) and
        email[0].isalnum() and
        len(email.split(&quot;@&quot;)[1].split(&quot;.&quot;)[0]) &gt; 0):
        return &quot;Email to&#x27;g&#x27;ri&quot;
    return &quot;Email noto&#x27;g&#x27;ri&quot;

print(emailni_tekshir(&quot;user@example.com&quot;))  # Natija: Email to&#x27;g&#x27;ri
print(emailni_tekshir(&quot;user@@example.com&quot;))  # Natija: Email noto&#x27;g&#x27;ri

</pre>
  <h3 id="PCN1">Misol 4: Caesar shifri bilan shifrlash</h3>
  <pre id="hbx2">def caesar_shifr(matn, siljish):
    natija = &quot;&quot;
    for belgi in matn:
        if belgi.isalpha():
            ascii_kod = ord(belgi)
            baza = 65 if belgi.isupper() else 97
            yangi_kod = (ascii_kod - baza + siljish) % 26 + baza
            natija += chr(yangi_kod)
        else:
            natija += belgi
    return natija

matn = &quot;Salom, Dunyo!&quot;
shifrlangan = caesar_shifr(matn, 3)
print(shifrlangan)  # Natija: Vdorp, Gxqbr

</pre>
  <h3 id="NEcx">Misol 5: Palindromni tekshirish</h3>
  <pre id="OTlg">def palindrommi(matn):
    tozalangan = &quot;&quot;.join(c.lower() for c in matn if c.isalnum())
    return tozalangan == tozalangan[::-1]

print(palindrommi(&quot;A man, a plan, a canal: Panama&quot;))  # Natija: True
print(palindrommi(&quot;Python&quot;))  # Natija: False

</pre>
  <h2 id="0ZSP">8. Stringlar bilan ishlashda ehtiyotkorlik</h2>
  <ul id="UmJA">
    <li id="PsLR"><strong>O&#x27;zgarmaslik</strong>: Har qanday o&#x27;zgartirish yangi string yaratadi. Bu xotirani ko&#x27;p ishlatishi mumkin.</li>
    <li id="OGGC"><strong>Unicode muammolari</strong>: Turli tillardagi matnlar bilan ishlashda <code>encode</code>/<code>decode</code> metodlariga e&#x27;tibor bering.</li>
    <li id="j1Ul"><strong>Bo&#x27;shliqlar</strong>: <code>strip()</code>, <code>lstrip()</code>, <code>rstrip()</code> metodlari bo&#x27;shliqlarni e&#x27;tiborsiz qoldirishni oldini oladi.</li>
    <li id="GeiL"><strong>Case sensitivity</strong>: Katta-kichik harflarga e&#x27;tibor bering, chunki ular farqli belgilar sifatida qabul qilinadi.</li>
    <li id="QWjj"><strong>Performans</strong>: Katta matnlarda <code>join()</code> va ro&#x27;yxatlardan foydalanish <code>+</code> ga qaraganda samaraliroq.</li>
  </ul>
  <p id="auuF">Python&#x27;da stringlar dasturlashning eng muhim va ko&#x27;p qirrali qismidir. Ular bilan ishlash uchun boy metodlar, operatsiyalar va formatlash usullari mavjud. Ushbu qo&#x27;llanma stringlarning har bir detalini - yaratishdan tortib, murakkab manipulyatsiyalargacha - chuqur yoritdi. Misollar va izohlar yordamida siz stringlar bilan ishlashni to&#x27;liq o&#x27;zlashtira olasiz. Amaliyot uchun yuqoridagi misollarni sinab ko&#x27;ring va o&#x27;zingizning loyihalaringizda qo&#x27;llang. Stringlarni yaxshi bilish Python dasturchisi uchun muhim ko&#x27;nikmadir!</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/Algoritmik_masalalar</guid><link>https://teletype.in/@nodirustoz/Algoritmik_masalalar?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/Algoritmik_masalalar?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Algoritmik masalalar!</title><pubDate>Thu, 01 May 2025 17:02:46 GMT</pubDate><description><![CDATA[Foydalanuvchi ovqat buyurtma qilmoqchi. Menuda: &quot;osh&quot;, &quot;shashlik&quot;, &quot;lag‘mon&quot;, &quot;mastava&quot;. Foydalanuvchi kiritgan taom nomi menuda bor yoki yo‘qligini aniqlab, tegishli javob chiqaring.]]></description><content:encoded><![CDATA[
  <h1 id="mu8A">🟦 1. <strong>Restoran buyurtma nazorati</strong></h1>
  <h3 id="CY7o">🔹 Masala tavsifi:</h3>
  <p id="wwFB">Foydalanuvchi ovqat buyurtma qilmoqchi. Menuda: <code>&quot;osh&quot;</code>, <code>&quot;shashlik&quot;</code>, <code>&quot;lag‘mon&quot;</code>, <code>&quot;mastava&quot;</code>. Foydalanuvchi kiritgan taom nomi menuda bor yoki yo‘qligini aniqlab, tegishli javob chiqaring.</p>
  <hr />
  <h3 id="h9Dx">🟦 2. <strong>Taksi bahosi (kechqurun chegirma)</strong></h3>
  <h3 id="RMbF">🔹 Masala tavsifi:</h3>
  <p id="7MJH">Taksi narxi kun davomida 10000 so‘m. Agar soat 21:00 dan keyin bo‘lsa, 20% chegirma qo‘llaniladi. Foydalanuvchi soatni kiritadi (butun son sifatida). To‘lovni hisoblang.</p>
  <hr />
  <h3 id="5gRk">🟦 3. <strong>Xonadagi chiroq holati</strong></h3>
  <h3 id="XeGt">🔹 Masala tavsifi:</h3>
  <p id="4YVm">Foydalanuvchi <code>True</code> yoki <code>False</code> kiritadi — bu chiroq yoqilganmi yoki yo‘qmi degani. Agar yoqilgan bo‘lsa: “Iltimos, chiroqni o‘chiring” chiqsin. Aks holda: “Hamma narsa joyida”.</p>
  <hr />
  <h3 id="mUb6">🟦 4. <strong>Muzlatkichdagi mahsulotlar ro‘yxati</strong></h3>
  <h3 id="49z5">🔹 Masala tavsifi:</h3>
  <p id="gTgs">Muzlatkichda [&quot;sut&quot;, &quot;non&quot;, &quot;tuxum&quot;, &quot;go‘sht&quot;] bor. Foydalanuvchi kerakli mahsulotni kiritadi. Agar mavjud bo‘lsa, “Mavjud”, aks holda “Tugagan” chiqadi.</p>
  <hr />
  <h3 id="F29g">🟦 5. <strong>Benzin yetarliligi</strong></h3>
  <h3 id="AmNZ">🔹 Masala tavsifi:</h3>
  <p id="8kTI">Foydalanuvchining mashinasida <code>n</code> litr benzin bor. U manzilgacha 40 km yurishi kerak. Agar 1 litr benzin bilan 10 km yursa, manzilga yetib bormasligini aniqlang.</p>
  <hr />
  <h3 id="Z2Kh">🟦 6. <strong>E-mail manzil tekshiruv</strong></h3>
  <h3 id="DTb8">🔹 Masala tavsifi:</h3>
  <p id="NDpP">Foydalanuvchi e-mail manzil kiritadi. Agar u &quot;@&quot; va &quot;.&quot; belgilarini o‘z ichiga olsa, &quot;To‘g‘ri manzil&quot;, aks holda &quot;Noto‘g‘ri&quot; deb chiqsin.</p>
  <hr />
  <h3 id="k6N5">🟦 7. <strong>Ishga kirish yoshi tekshiruvi</strong></h3>
  <h3 id="F8M9">🔹 Masala tavsifi:</h3>
  <p id="u8sm">Agar odamning yoshi 18 dan katta va 60 dan kichik bo‘lsa, ishga qabul qilinadi. Aks holda, rad etiladi.</p>
  <hr />
  <h3 id="Yen2">🟦 8. <strong>Kiyim o‘lchami mosmi?</strong></h3>
  <h3 id="FLHz">🔹 Masala tavsifi:</h3>
  <p id="3gVZ">Kiyim faqat [&quot;S&quot;, &quot;M&quot;, &quot;L&quot;, &quot;XL&quot;] o‘lchamda mavjud. Foydalanuvchi o‘lcham kiritadi. Agar mavjud bo‘lsa, &quot;Bor&quot;, aks holda &quot;Yo‘q&quot;.</p>
  <hr />
  <h3 id="oMw1">🟦 9. <strong>O‘quvchining darajasi</strong></h3>
  <h3 id="etwX">🔹 Masala tavsifi:</h3>
  <p id="Uwez">Agar o‘quvchi 0–3 sinfda bo‘lsa — “Boshlang‘ich”, 4–9 — “O‘rta”, 10–11 — “Yuqori” deb chiqsin.</p>
  <hr />
  <h3 id="oLSU">🟦 10. <strong>Issiqlik darajasini ogohlantirish</strong></h3>
  <h3 id="VUY8">🔹 Masala tavsifi:</h3>
  <p id="sV7H">Foydalanuvchi xona haroratini kiritadi. 18–25 oraliqda bo‘lsa – “Normal”. &lt;18 bo‘lsa – “Juda sovuq”. &gt;25 bo‘lsa – “Haddan issiq”.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@nodirustoz/Algo</guid><link>https://teletype.in/@nodirustoz/Algo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz</link><comments>https://teletype.in/@nodirustoz/Algo?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=nodirustoz#comments</comments><dc:creator>nodirustoz</dc:creator><title>Python dasturlash tilida algoritmik masalalar.</title><pubDate>Wed, 30 Apr 2025 18:48:48 GMT</pubDate><description><![CDATA[Shahar avtomobil turar joyida har bir soat uchun 3000 so‘mdan to‘lov olinadi. Agar avtomobil 5 soatdan ortiq turgan bo‘lsa, umumiy summadan 2000 so‘m chegirma beriladi. Foydalanuvchi mashinani necha soat turganini kiritadi. Shu asosda to‘lov hisoblanadi.]]></description><content:encoded><![CDATA[
  <hr />
  <h3 id="sCvb">🟩 1. <strong>Parkometr (to‘xtash vaqtiga qarab to‘lov)</strong></h3>
  <h3 id="AzS9">🔹 Masala tavsifi:</h3>
  <p id="dXeG">Shahar avtomobil turar joyida har bir soat uchun 3000 so‘mdan to‘lov olinadi. Agar avtomobil 5 soatdan ortiq turgan bo‘lsa, umumiy summadan 2000 so‘m chegirma beriladi. Foydalanuvchi mashinani necha soat turganini kiritadi. Shu asosda to‘lov hisoblanadi.</p>
  <h3 id="HpeD">🔹 Algoritm:</h3>
  <ol id="BmX3">
    <li id="BId3">Soat sonini foydalanuvchidan oling.</li>
    <li id="Xia8">Har bir soat uchun 3000 so‘m to‘lovni hisoblang.</li>
    <li id="xeJd">Agar soat &gt; 5 bo‘lsa, summadan 2000 so‘m chegirma qiling.</li>
    <li id="DcSD">Umumiy to‘lovni chiqarish.</li>
  </ol>
  <hr />
  <h3 id="F11j">🟩 2. <strong>Telefon raqami tekshiruv</strong></h3>
  <h3 id="vdMP">🔹 Masala tavsifi:</h3>
  <p id="d9S6">Foydalanuvchi 9 xonali telefon raqamini kiritadi. Agar raqam faqat raqamlardan iborat bo‘lsa va uzunligi aynan 9 bo‘lsa, “Qabul qilindi”, aks holda “Noto‘g‘ri raqam” chiqadi.</p>
  <h3 id="a7O5">🔹 Algoritm:</h3>
  <ol id="Dxqm">
    <li id="g7z5">Telefon raqamini satr sifatida oling.</li>
    <li id="nUs9"><code>len()</code> yordamida uzunligini tekshiring.</li>
    <li id="GHrG"><code>isdigit()</code> yordamida raqamligiga ishonch hosil qiling.</li>
    <li id="iMIW">Shartga qarab javobni chiqaring.</li>
  </ol>
  <hr />
  <h3 id="IpOH">🟩 3. <strong>Yil faslini aniqlash</strong></h3>
  <h3 id="eGQr">🔹 Masala tavsifi:</h3>
  <p id="Aq6i">Foydalanuvchi oy raqamini kiritadi (1 dan 12 gacha). Siz bu raqamga qarab qaysi faslga tegishli ekanini aniqlashingiz kerak.</p>
  <h3 id="bd8Y">🔹 Algoritm:</h3>
  <ol id="KFOY">
    <li id="cCJI">Oy raqamini oling.</li>
    <li id="kRl1">12, 1, 2 → Qish; 3, 4, 5 → Bahor; 6, 7, 8 → Yoz; 9, 10, 11 → Kuz.</li>
    <li id="nMgz">Har bir guruh uchun <code>if-elif</code> bilan tekshirib, fasl nomini chiqaring.</li>
  </ol>
  <hr />
  <h3 id="NIZo">🟩 4. <strong>Avtobus yoshi chegirmasi</strong></h3>
  <h3 id="Ayqg">🔹 Masala tavsifi:</h3>
  <p id="FgeD">Avtobusda 7 yoshgacha bolalar va 60 yoshdan katta odamlar bepul yurishadi. Qolganlar uchun to‘lov 2000 so‘m. Foydalanuvchi yoshini kiritsa, to‘lovni aniqlang.</p>
  <h3 id="kczs">🔹 Algoritm:</h3>
  <ol id="ZhH9">
    <li id="GM3l">Foydalanuvchining yoshini oling.</li>
    <li id="bzmP">Agar yosh &lt; 7 yoki yosh &gt;= 60 bo‘lsa → Bepul.</li>
    <li id="Uhu0">Aks holda → 2000 so‘m to‘lov.</li>
  </ol>
  <hr />
  <h3 id="qM34">🟩 5. <strong>Ism uzunligini baholash</strong></h3>
  <h3 id="smYh">🔹 Masala tavsifi:</h3>
  <p id="hAv9">Ism uzunligiga qarab quyidagicha xulosa chiqarilsin: 5 dan kam — “Qisqa”, 5–7 — “O‘rtacha”, 8 va undan ortiq — “Uzun”.</p>
  <h3 id="pFjJ">🔹 Algoritm:</h3>
  <ol id="f00Q">
    <li id="aA9o">Ismni oling.</li>
    <li id="RNa4"><code>len()</code> bilan uzunligini toping.</li>
    <li id="BmVT">Shartlarga <code>if-elif-else</code> orqali baho bering.</li>
  </ol>
  <hr />
  <h3 id="gwc6">🟩 6. <strong>Baho hisoblash (3 baho asosida)</strong></h3>
  <h3 id="KKuf">🔹 Masala tavsifi:</h3>
  <p id="f6bz">Foydalanuvchi 3ta fan bo‘yicha 0 dan 100 gacha baho kiritadi. O‘rtacha qiymatga qarab quyidagi harfli baho berilsin:</p>
  <ul id="0iSz">
    <li id="flkm">90+ → A</li>
    <li id="nKAO">80–89 → B</li>
    <li id="ZilL">70–79 → C</li>
    <li id="z97w">60–69 → D</li>
    <li id="WRJN">&lt;60 → F</li>
  </ul>
  <h3 id="JsCB">🔹 Algoritm:</h3>
  <ol id="lhjr">
    <li id="hyZI">Uch bahoni oling.</li>
    <li id="VyUu">O‘rtachasini hisoblang.</li>
    <li id="68x5"><code>if-elif</code> orqali toifalarga ajrating.</li>
  </ol>
  <hr />
  <h3 id="0Nd4">🟩 7. <strong>To‘lov holatini tekshirish</strong></h3>
  <h3 id="SAtE">🔹 Masala tavsifi:</h3>
  <p id="BIkm">Foydalanuvchi to‘lov qilganmi (<code>True</code>) yoki yo‘q (<code>False</code>) degan qiymat kiritadi. Agar to‘lov qilingan bo‘lsa → “Xush kelibsiz”, aks holda → “Iltimos, avval to‘lov qiling”.</p>
  <h3 id="DpPs">🔹 Algoritm:</h3>
  <ol id="Lu4R">
    <li id="HkyY">Boolean turidagi qiymat oling.</li>
    <li id="CfPa"><code>if</code> orqali tekshirib, natijani chiqaring.</li>
  </ol>
  <hr />
  <h3 id="Ezn6">🟩 8. <strong>Haroratga qarab kiyinish maslahati</strong></h3>
  <h3 id="TX1A">🔹 Masala tavsifi:</h3>
  <p id="WlOr">Haroratga qarab quyidagi maslahatlar chiqsin:</p>
  <ul id="14Qu">
    <li id="ugCp">&lt; 0: “Issiq kiyining!”</li>
    <li id="kCvB">0–15: “Kurtka oling”</li>
    <li id="ghdc">16–25: “Yengil kiyinishingiz mumkin”</li>
    <li id="Ottr">25: “Sovuq ichimlikni unutmang”</li>
  </ul>
  <h3 id="M56b">🔹 Algoritm:</h3>
  <ol id="Webb">
    <li id="hIw1">Harorat qiymatini oling.</li>
    <li id="9LtH">Shartlarga qarab mos matnni chiqaring.</li>
  </ol>
  <hr />
  <h3 id="DQlf">🟩 9. <strong>Parol kuchini baholash</strong></h3>
  <h3 id="Qog0">🔹 Masala tavsifi:</h3>
  <p id="6L0T">Foydalanuvchi parol kiritadi. Uzunligiga qarab parol quyidagicha baholansin:</p>
  <ul id="t2r8">
    <li id="88jm">&lt; 8 belgili — “Juda zaif”</li>
    <li id="Qyc2">8–11 — “O‘rtacha”</li>
    <li id="wFpj">≥ 12 — “Kuchli”</li>
  </ul>
  <h3 id="FWX0">🔹 Algoritm:</h3>
  <ol id="kutL">
    <li id="2rlL">Parol satrini oling.</li>
    <li id="cptb"><code>len()</code> yordamida uzunligini aniqlang.</li>
    <li id="se8F">Shartga qarab xabar chiqarilsin.</li>
  </ol>
  <hr />
  <h3 id="A5oX">🟩 10. <strong>Eng kichik sonni topish</strong></h3>
  <h3 id="XKOf">🔹 Masala tavsifi:</h3>
  <p id="hNUV">Foydalanuvchi 3 ta son kiritadi. Ularning eng kichigini topish kerak.</p>
  <h3 id="8Wy0">🔹 Algoritm:</h3>
  <ol id="EO9t">
    <li id="HgOL">3ta son oling.</li>
    <li id="0YLK"><code>min()</code> funksiyasi orqali eng kichigini aniqlang.</li>
    <li id="jBzw">Natijani chiqarish.</li>
  </ol>
  <hr />

]]></content:encoded></item></channel></rss>