💻 Python yordamida dollar va yevro kursini bilib oling! 💵💶
📌 O‘zbekiston Markaziy Banki ochiq API orqali istalgan valyutaning so‘mga nisbatan kursini olish mumkin. Kod juda oddiy:
🔎 Natija:
⚡️ Eng muhimi — kurslar to‘g‘ridan-to‘g‘ri Markaziy Bankdan olinadi va doim yangilanib turadi!
📌 O‘zbekiston Markaziy Banki ochiq API orqali istalgan valyutaning so‘mga nisbatan kursini olish mumkin. Kod juda oddiy:
import requests
# USD kursi
usd = requests.get("https://cbu.uz/oz/arkhiv-kursov-valyut/json/USD/").json()[0]["Rate"]
print(f"1 USD = {usd} UZS")
# EUR kursi
eur = requests.get("https://cbu.uz/oz/arkhiv-kursov-valyut/json/EUR/").json()[0]["Rate"]
print(f"1 EUR = {eur} UZS")
🔎 Natija:
1 USD = 12354.65 UZS
1 EUR = 14384.52 UZS
⚡️ Eng muhimi — kurslar to‘g‘ridan-to‘g‘ri Markaziy Bankdan olinadi va doim yangilanib turadi!
👍1
🐍 Python Generator Tuzog'i!
Bu kod qanday natija beradi? 🤔
Javob: 30 va 0 🎯
Nima bo'lyapti?
(i*i for i in range(5)) - bu generator expression (tuple emas!).
Generator bir marta ishlatiladi va tugaydi:
1️⃣ Birinchi sum(): 0+1+4+9+16 = 30 ✅
2️⃣ Ikkinchi sum(): generator tugagan = 0 ❌
Yechim:
Generator = bir martalik bilet! 🎫
Bu kod qanday natija beradi? 🤔
tuple_x = (i*i for i in range(5))
print(sum(tuple_x))
print(sum(tuple_x))
Javob: 30 va 0 🎯
Nima bo'lyapti?
(i*i for i in range(5)) - bu generator expression (tuple emas!).
Generator bir marta ishlatiladi va tugaydi:
1️⃣ Birinchi sum(): 0+1+4+9+16 = 30 ✅
2️⃣ Ikkinchi sum(): generator tugagan = 0 ❌
Yechim:
# ✅ List
numbers = [i*i for i in range(5)]
print(sum(numbers)) # 30
print(sum(numbers)) # 30
# ✅ Yoki tuple
numbers = tuple(i*i for i in range(5))
print(sum(numbers)) # 30
print(sum(numbers)) # 30
Generator = bir martalik bilet! 🎫
🔥1🥰1
🐍 Python: list vs deque
Pythonda ma’lumotlar tuzilmasini tanlash ishlash tezligi va xotira samaradorligi uchun juda muhim.
Eng ko‘p ishlatiladigan ikkita tuzilma: list va collections.deque.
1️⃣ list — dinamik massiv
Afzalliklari
• Indeks orqali tezkor o‘qish va yozish → O(1)
• Oxiriga element qo‘shish / o‘chirish → amortizatsiyalangan O(1)
• Oddiy sintaksis, ko‘p Python funksiyalari bilan mos
Kamchiliklari
• Boshida element qo‘shish/olish → sekin (O(n))
• O‘rta joyga insert/remove → O(n)
• Katta navbat yoki sliding window masalalarida samarador emas
2️⃣ deque — ikki tomondan navbat (double-ended queue)
Afzalliklari
• Chap va o‘ng oxiridan tezkor qo‘shish va o‘chirish → O(1)
• Sliding window, queue va stack kabi algoritmlarda ideal
• rotate(), maxlen kabi qulay metodlar
• Katta hajmli ma’lumotlar bilan ishlaganda listga qaraganda tezroq
Kamchiliklari
• Indeks bo‘yicha o‘qish → sekin (O(n))
• O‘rta joyga insert/remove ham sekin → O(n)
• Har bir element bloklarda saqlangani uchun list’ga qaraganda xotira ishlatishi biroz ko‘proq
3️⃣ Qachon qaysi birini tanlash?
1. deque - Oxirdan tezkor qo‘shish/olish, indeks kerak emas
2. list - Oxirdan tezkor qo‘shish/olish va indeks bo‘yicha tez o‘qish
3. deque - Chapdan tezkor qo‘shish/olish, navbat / sliding window
4. list - Kichik o‘lchamdagi massiv, oddiy o‘qish/yozish
📌 Xulosa:
• list → indeks va oxirga mos, oddiy massivlar.
• deque → ikki tomondan tezkor navbat, stack, sliding window, katta ma’lumotlar.
Pythonda ma’lumotlar tuzilmasini tanlash ishlash tezligi va xotira samaradorligi uchun juda muhim.
Eng ko‘p ishlatiladigan ikkita tuzilma: list va collections.deque.
1️⃣ list — dinamik massiv
Afzalliklari
• Indeks orqali tezkor o‘qish va yozish → O(1)
• Oxiriga element qo‘shish / o‘chirish → amortizatsiyalangan O(1)
• Oddiy sintaksis, ko‘p Python funksiyalari bilan mos
Kamchiliklari
• Boshida element qo‘shish/olish → sekin (O(n))
• O‘rta joyga insert/remove → O(n)
• Katta navbat yoki sliding window masalalarida samarador emas
2️⃣ deque — ikki tomondan navbat (double-ended queue)
Afzalliklari
• Chap va o‘ng oxiridan tezkor qo‘shish va o‘chirish → O(1)
• Sliding window, queue va stack kabi algoritmlarda ideal
• rotate(), maxlen kabi qulay metodlar
• Katta hajmli ma’lumotlar bilan ishlaganda listga qaraganda tezroq
Kamchiliklari
• Indeks bo‘yicha o‘qish → sekin (O(n))
• O‘rta joyga insert/remove ham sekin → O(n)
• Har bir element bloklarda saqlangani uchun list’ga qaraganda xotira ishlatishi biroz ko‘proq
3️⃣ Qachon qaysi birini tanlash?
1. deque - Oxirdan tezkor qo‘shish/olish, indeks kerak emas
2. list - Oxirdan tezkor qo‘shish/olish va indeks bo‘yicha tez o‘qish
3. deque - Chapdan tezkor qo‘shish/olish, navbat / sliding window
4. list - Kichik o‘lchamdagi massiv, oddiy o‘qish/yozish
📌 Xulosa:
• list → indeks va oxirga mos, oddiy massivlar.
• deque → ikki tomondan tezkor navbat, stack, sliding window, katta ma’lumotlar.
🕊1
Forwarded from Botir Ziyatov
Dam olish kunlari uchun kino.
Kecha Python dasturlash tilida haqida kino chiqdi!
Amsterdam shahridan boshlangan oddiy loyiha qanday qilib dunyoning eng mashhur dasturlash tiliga aylanganini koʻrsatadigan 84 daqiqalik film.
Filmda: Gvido van Rossum dan tortib bu ish ortida turgan odamlar ham qatnashgan.
Nima haqida:
🔘 1989-yil, 2 hafta davomida qanday qilib til yaratilgani
🔘 ABC tilidan Python qanday paydo boʻlgani
🔘 1994-yildagi birinchi konferensiya (faqat 20 kishi qatnashgani)
🔘 Pythonning deyarli yoʻq boʻlib ketish xavfi va uni qutqargan odamlar
va yana shunday qiziq ma'lumotlar keltirilgan.
Kinoni ishlab chiqish uchun bir yildan ortiq vaqt sarflangan.
tomosha qilish
@botirziyatov
Kecha Python dasturlash tilida haqida kino chiqdi!
Amsterdam shahridan boshlangan oddiy loyiha qanday qilib dunyoning eng mashhur dasturlash tiliga aylanganini koʻrsatadigan 84 daqiqalik film.
Filmda: Gvido van Rossum dan tortib bu ish ortida turgan odamlar ham qatnashgan.
Nima haqida:
va yana shunday qiziq ma'lumotlar keltirilgan.
Kinoni ishlab chiqish uchun bir yildan ortiq vaqt sarflangan.
tomosha qilish
@botirziyatov
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
📄 Pythonda PDFdan matn olish 3 xil usulda
Ko‘pincha PDF fayllardan matn olishga to‘g‘ri keladi. Buni qo‘lda nusxa olish zerikarli va noqulay. Pythonda esa bu ishni osongina avtomatlashtirish mumkin.
🔹 1-usul: PyMuPDF (fitz)
Eng tez va kuchli kutubxona. Murakkab PDFlarda ham yaxshi ishlaydi.
🔹 2-usul: pdfplumber
Jadval va formatlangan matnlarni chiqarishda juda qulay.
🔹 3-usul: PyPDF2
Eng oddiy variant. Ko‘p hollarda ishlaydi, lekin ba’zida formatlashni yo‘qotadi.
✨ Xulosa:
• Agar oddiy matn kerak bo‘lsa → PyPDF2.
• Jadval yoki strukturali matn bo‘lsa → pdfplumber.
• Kuchli va tez ishlashini xohlasangiz → PyMuPDF (fitz).
Ko‘pincha PDF fayllardan matn olishga to‘g‘ri keladi. Buni qo‘lda nusxa olish zerikarli va noqulay. Pythonda esa bu ishni osongina avtomatlashtirish mumkin.
🔹 1-usul: PyMuPDF (fitz)
Eng tez va kuchli kutubxona. Murakkab PDFlarda ham yaxshi ishlaydi.
import fitz
doc = fitz.open("sample.pdf")
print("Sahifalar soni:", len(doc))
print(doc[0].get_text("text")) # 1-betdagi matn
text = ""
for page in doc:
text += page.get_text("text") + "\n"
print(text)
🔹 2-usul: pdfplumber
Jadval va formatlangan matnlarni chiqarishda juda qulay.
import pdfplumber
text = ""
with pdfplumber.open("sample.pdf") as pdf:
for page in pdf.pages:
text += page.extract_text() + "\n"
print(text)
🔹 3-usul: PyPDF2
Eng oddiy variant. Ko‘p hollarda ishlaydi, lekin ba’zida formatlashni yo‘qotadi.
from PyPDF2 import PdfReader
reader = PdfReader("sample.pdf")
text = ""
for page in reader.pages:
text += page.extract_text() + "\n"
print(text)
✨ Xulosa:
• Agar oddiy matn kerak bo‘lsa → PyPDF2.
• Jadval yoki strukturali matn bo‘lsa → pdfplumber.
• Kuchli va tez ishlashini xohlasangiz → PyMuPDF (fitz).
❤1👏1
📌 Bugungi Python darsi
🔹 Mavzu: PDF faylga jadval yaratish
🔹 Kutubxona: reportlab
Ko‘pincha hisobotlarni jadval shaklida PDF qilib chiqarish kerak bo‘ladi. Buni Pythonda juda oson qilish mumkin:
⚙️ O‘rnatish:
📂 Natija: hisobot.pdf nomli fayl papkangizda tayyor bo‘ladi va unda jadval ko‘rinadi.
🔹 Mavzu: PDF faylga jadval yaratish
🔹 Kutubxona: reportlab
Ko‘pincha hisobotlarni jadval shaklida PDF qilib chiqarish kerak bo‘ladi. Buni Pythonda juda oson qilish mumkin:
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# PDF fayl nomi
pdf = SimpleDocTemplate("hisobot.pdf", pagesize=A4)
# Jadval ma'lumotlari
data = [
["№", "Ism", "Familiya", "Ball"],
[1, "Ali", "Valiyev", 85],
[2, "Laylo", "Karimova", 92],
[3, "Javlon", "Ismoilov", 74],
]
# Jadval yaratish
table = Table(data)
# Jadvalga style beramiz
style = TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.grey),
("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("GRID", (0, 0), (-1, -1), 1, colors.black),
])
table.setStyle(style)
# PDFga yozamiz
pdf.build([table])
print("✅ PDF saqlandi: hisobot.pdf")
⚙️ O‘rnatish:
pip install reportlab
📂 Natija: hisobot.pdf nomli fayl papkangizda tayyor bo‘ladi va unda jadval ko‘rinadi.
❤1👍1
🚀 PyAutoGUI — Kompyuteringizni avtomatlashtirish kutubxonasi
Pythonni yanada qiziqarli qiladigan kutubxona haqida bilasizmi?
PyAutoGUI yordamida siz:
✅ Skrinshot olishingiz
✅ Sichqonchani kerakli nuqtaga olib borishingiz
✅ Dastur oynalari bilan ishlashingiz
✅ Avtomatik yozishingiz (so‘z, jumla yoki butun paragraf)
✅ Hattoki Googleda izlashni ham topshirishingiz mumkin 😎
🔹 Oddiy klikerni yaratish:
💡 Faqat bir necha qator kod bilan kompyuteringiz siz uchun ishlaydi!
Googleda qiriruvni PyAutoGUI orqali avtomatlashtirish komentariyada keltirilgan👇
📘 To‘liq hujjatlar:
👉 https://pyautogui.readthedocs.io/en/latest/
Pythonni yanada qiziqarli qiladigan kutubxona haqida bilasizmi?
PyAutoGUI yordamida siz:
✅ Skrinshot olishingiz
✅ Sichqonchani kerakli nuqtaga olib borishingiz
✅ Dastur oynalari bilan ishlashingiz
✅ Avtomatik yozishingiz (so‘z, jumla yoki butun paragraf)
✅ Hattoki Googleda izlashni ham topshirishingiz mumkin 😎
🔹 Oddiy klikerni yaratish:
import pyautogui
import time
def click():
time.sleep(5)
# sichqoncha qayerda turgan bo'lsa o'sha joyga klik qiladi
pyautogui.click()
def main():
for i in range(20):
click()
# Ekranning to‘liq scrinshotini olish
screenshot = pyautogui.screenshot()
# olingan scrinshotni fayl sifatida saqlash
screenshot.save("screenshot.png")
if __name__ == '__main__':
main()
💡 Faqat bir necha qator kod bilan kompyuteringiz siz uchun ishlaydi!
Googleda qiriruvni PyAutoGUI orqali avtomatlashtirish komentariyada keltirilgan👇
📘 To‘liq hujjatlar:
👉 https://pyautogui.readthedocs.io/en/latest/
🔥3
⚙️ Pickle – Python obyektlarini saqlash vositasi
📊 Ma’lumotlar hajmi oshgani sari ularni tez va qulay saqlash muhim bo‘lib bormoqda. Odatda biz CSV yoki JSONdan foydalanamiz, lekin ular faqat matn ko‘rinishida ishlaydi.
🗂 Pickle esa Pythonning maxsus fayl formati bo‘lib, obyektlarni (list, dict, DataFrame, model va h.k.) to‘liq shaklda saqlash va qayta yuklash imkonini beradi.
🔑 Afzalliklari:
• Python obyektlarini to‘g‘ridan-to‘g‘ri saqlaydi (CSV faqat jadval uchun qulay).
• Ko‘pincha CSV/JSONdan tezroq ishlaydi (80 barobargacha).
• Fayl hajmi odatda kichikroq bo‘ladi (ya'ni kam xotira).
⚠️ Cheklovlari:
• Faqat Pythonda ochiladi (CSV/JSON esa universal).
• Ikkilamchi format bo‘lgani uchun ochishda xavfsizlikka e’tibor berish kerak. Ishonchsiz manbadan kelgan Pickle faylini ochish tavsiya etilmaydi.
📝 Oddiy misol:
📌 Xulosa:
Pickle – bu tez va qulay, lekin asosan Python obyektlarini saqlash uchun mo‘ljallangan format. Agar ma’lumotni boshqa dasturlarda ham ishlatmoqchi bo‘lsangiz – CSV yoki JSON qulayroq bo‘ladi.
📊 Ma’lumotlar hajmi oshgani sari ularni tez va qulay saqlash muhim bo‘lib bormoqda. Odatda biz CSV yoki JSONdan foydalanamiz, lekin ular faqat matn ko‘rinishida ishlaydi.
🗂 Pickle esa Pythonning maxsus fayl formati bo‘lib, obyektlarni (list, dict, DataFrame, model va h.k.) to‘liq shaklda saqlash va qayta yuklash imkonini beradi.
🔑 Afzalliklari:
• Python obyektlarini to‘g‘ridan-to‘g‘ri saqlaydi (CSV faqat jadval uchun qulay).
• Ko‘pincha CSV/JSONdan tezroq ishlaydi (80 barobargacha).
• Fayl hajmi odatda kichikroq bo‘ladi (ya'ni kam xotira).
⚠️ Cheklovlari:
• Faqat Pythonda ochiladi (CSV/JSON esa universal).
• Ikkilamchi format bo‘lgani uchun ochishda xavfsizlikka e’tibor berish kerak. Ishonchsiz manbadan kelgan Pickle faylini ochish tavsiya etilmaydi.
📝 Oddiy misol:
import pickle
# Saqlash
data = {"ism": "Ali", "yosh": 25}
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
# Yuklash
with open("data.pkl", "rb") as f:
yuklangan = pickle.load(f)
print(yuklangan) # {'ism': 'Ali', 'yosh': 25}
📌 Xulosa:
Pickle – bu tez va qulay, lekin asosan Python obyektlarini saqlash uchun mo‘ljallangan format. Agar ma’lumotni boshqa dasturlarda ham ishlatmoqchi bo‘lsangiz – CSV yoki JSON qulayroq bo‘ladi.
🔥1
⚙️ secrets — tasodifiy sonlar va belgilar generatsiyasi uchun
ℹ️ O‘z xabarlarga kodlash funksiyalarini yozish juda qiziqarli bo‘lishi mumkin, ammo ular sinovdan o‘tgan va xavfsizlik talablariga javob beradigan secrets kutubxonasidagi funksiyalar kabi ishonchli bo‘lmasligi mumkin.
🗣 Shu kutubxonada siz eng murakkab parollar, xavfsizlik tokenlari va ularga oid maxfiy ma’lumotlar uchun zarur bo‘lgan tasodifiy sonlar va belgilarni yaratish imkoniyatlarini topasiz.
Qisqacha izoh:
• token_hex(n) – hex ko‘rinishida 2n belgili token (keng tarqalgan format).
• token_urlsafe(n) – URL yoki JWT singari joylarda xavfsiz ishlatish mumkin.
• secrets.choice(seq) – kriptografik tasodifiy tanlash.
• secrets.randbelow(n) – 0…n-1 oralig‘ida tasodifiy butun son.
• secrets.compare_digest(a, b) – vaqtga bog‘liq bo‘lmagan, “timing attack”ga chidamli taqqoslash.
• secrets.randbits(k) – k bitli tasodifiy butun son.
Misol komentariyada 👇
ℹ️ O‘z xabarlarga kodlash funksiyalarini yozish juda qiziqarli bo‘lishi mumkin, ammo ular sinovdan o‘tgan va xavfsizlik talablariga javob beradigan secrets kutubxonasidagi funksiyalar kabi ishonchli bo‘lmasligi mumkin.
🗣 Shu kutubxonada siz eng murakkab parollar, xavfsizlik tokenlari va ularga oid maxfiy ma’lumotlar uchun zarur bo‘lgan tasodifiy sonlar va belgilarni yaratish imkoniyatlarini topasiz.
Qisqacha izoh:
• token_hex(n) – hex ko‘rinishida 2n belgili token (keng tarqalgan format).
• token_urlsafe(n) – URL yoki JWT singari joylarda xavfsiz ishlatish mumkin.
• secrets.choice(seq) – kriptografik tasodifiy tanlash.
• secrets.randbelow(n) – 0…n-1 oralig‘ida tasodifiy butun son.
• secrets.compare_digest(a, b) – vaqtga bog‘liq bo‘lmagan, “timing attack”ga chidamli taqqoslash.
• secrets.randbits(k) – k bitli tasodifiy butun son.
Misol komentariyada 👇
❤1🔥1
🔔 VisPy — Pythonda GPU tezlashgan vizualizatsiya
👨💻 VisPy — bu Python kutubxonasi bo‘lib, OpenGL imkoniyatlaridan foydalanadi va yuqori samarali 2D hamda 3D interaktiv grafikalar yaratish uchun ishlatiladi.
✨ Asosiy imkoniyatlari:
• GPU yordamida tezkor chizish 🚀
• 2D va 3D vizualizatsiyalar (grafiklar, shakllar, meshlar)
• Interaktivlik (sichqoncha bilan aylantirish, zoom qilish)
• Animatsiyalar va real-time ma’lumotlarni ko‘rsatish
🌐 Batafsil: vispy.org, ishlashi uchun PyQt yoki shunga o'xshash birorta GUI backend o'rnatish kerak!
🖼 Oddiy misol: 3D kub (qizil yuzalar, ko‘k qirralar)
Misol: Animatsiya yaratish
👨💻 VisPy — bu Python kutubxonasi bo‘lib, OpenGL imkoniyatlaridan foydalanadi va yuqori samarali 2D hamda 3D interaktiv grafikalar yaratish uchun ishlatiladi.
✨ Asosiy imkoniyatlari:
• GPU yordamida tezkor chizish 🚀
• 2D va 3D vizualizatsiyalar (grafiklar, shakllar, meshlar)
• Interaktivlik (sichqoncha bilan aylantirish, zoom qilish)
• Animatsiyalar va real-time ma’lumotlarni ko‘rsatish
🌐 Batafsil: vispy.org, ishlashi uchun PyQt yoki shunga o'xshash birorta GUI backend o'rnatish kerak!
🖼 Oddiy misol: 3D kub (qizil yuzalar, ko‘k qirralar)
import numpy as np
from vispy import app, scene
canvas = scene.SceneCanvas(keys='interactive', bgcolor='white', size=(600, 600), show=True)
view = canvas.central_widget.add_view()
pos = np.array([
[-1,-1,-1],[-1,-1,1],[-1,1,-1],[-1,1,1],
[1,-1,-1],[1,-1,1],[1,1,-1],[1,1,1]
], dtype=np.float32)
edges = np.array([
[0,1],[0,2],[0,4],[1,3],[1,5],[2,3],
[2,6],[3,7],[4,5],[4,6],[5,7],[6,7]
])
faces = np.array([
[0,1,2],[1,3,2],[4,6,5],[5,6,7],
[0,4,1],[1,4,5],[2,3,6],[3,7,6],
[0,2,4],[2,6,4],[1,5,3],[3,5,7]
])
scene.visuals.Mesh(vertices=pos, faces=faces, color=(1,0,0,0.6), parent=view.scene)
scene.visuals.Line(pos=pos, connect=edges, color='blue', width=2, parent=view.scene)
view.camera = scene.cameras.TurntableCamera(fov=45, elevation=30, azimuth=30)
app.run()
Misol: Animatsiya yaratish
import numpy as np
from vispy import app, scene
# 3D sahna
canvas = scene.SceneCanvas(keys='interactive', bgcolor='white', size=(800, 600), show=True)
view = canvas.central_widget.add_view()
# To‘lqin uchun grid (x, y koordinatalar)
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y)
# Mesh (3D sirt)
surface = scene.visuals.SurfacePlot(x=x, y=y, z=Z,
color=(0.3, 0.5, 1, 0.9),
shading='smooth',
parent=view.scene)
# Kamera sozlamalari
view.camera = scene.cameras.TurntableCamera(fov=45, elevation=60, azimuth=30)
# Animatsiya uchun vaqt parametri
t = 0
def update(event):
global t
t += 0.1
Z = np.sin(X*0.5 + t) * np.cos(Y*0.5 + t)
surface.set_data(z=Z)
# Har 50 ms da yangilash (20 FPS)
timer = app.Timer(interval=0.05, connect=update, start=True)
if __name__ == '__main__':
app.run()
🔹 Python: isspace() metodi
isspace() — bu satr metodi, u satr faqatgina bo‘sh joy belgilaridan iboratligini tekshiradi.
✅ Probel ( ), tabulyatsiya (\t), yangi qator (\n) va shunga o‘xshash belgilar bo‘sh joy sifatida qabul qilinadi.
📌 Muhim: isspace() satrni o‘zgartirmaydi, faqat True yoki False qiymat qaytaradi.
🔍 Misol:
👉 Ko‘rinib turibdiki, matn1 faqat probel bo‘lgani uchun True, lekin matn2 da matn borligi sababli False.
isspace() — bu satr metodi, u satr faqatgina bo‘sh joy belgilaridan iboratligini tekshiradi.
✅ Probel ( ), tabulyatsiya (\t), yangi qator (\n) va shunga o‘xshash belgilar bo‘sh joy sifatida qabul qilinadi.
📌 Muhim: isspace() satrni o‘zgartirmaydi, faqat True yoki False qiymat qaytaradi.
🔍 Misol:
matn1 = " "
matn2 = "salom"
print(matn1.isspace()) # True
print(matn2.isspace()) # False
👉 Ko‘rinib turibdiki, matn1 faqat probel bo‘lgani uchun True, lekin matn2 da matn borligi sababli False.
👀1
🚀 Pythonda geokodlash oson!
pgeocode — bu pochta indekslari (ZIP-kodlar) orqali joylashuv haqida ma’lumot olishga yordam beradigan kutubxona.
🔍 Nimalar qilish mumkin?
• Pochta indeksidan shahar, viloyat/shtat, mamlakat nomini olish
• Kenglik / uzunlik koordinatalarini bilish
• Ikki pochta indeksi orasidagi masofani hisoblash
💻 Misol:
📦 O‘rnatish:
👉 Agar sizga tezkor geokodlash kerak bo‘lsa — pgeocode aynan siz uchun!
Batafsil hujjatlari: https://pgeocode.readthedocs.io/en/latest/
pgeocode — bu pochta indekslari (ZIP-kodlar) orqali joylashuv haqida ma’lumot olishga yordam beradigan kutubxona.
🔍 Nimalar qilish mumkin?
• Pochta indeksidan shahar, viloyat/shtat, mamlakat nomini olish
• Kenglik / uzunlik koordinatalarini bilish
• Ikki pochta indeksi orasidagi masofani hisoblash
💻 Misol:
import pgeocode
nomi = pgeocode.Nominatim('us')
info = nomi.query_postal_code("10001") # New York
print(info)
dist = pgeocode.GeoDistance('us')
print(dist.query_postal_code("10001", "90210")) # NY ↔️ LA
📦 O‘rnatish:
pip install pgeocode
👉 Agar sizga tezkor geokodlash kerak bo‘lsa — pgeocode aynan siz uchun!
Batafsil hujjatlari: https://pgeocode.readthedocs.io/en/latest/
👍1
🚀 Asyncer – FastAPI yaratuvchisidan yangi kutubxona
⚡️ Asyncer — bu mini-kutubxona bo‘lib, Pythonda asinxron kod bilan ishlashni osonlashtiradi. Muhimi, u framework emas, balki yordamchi funksiyalar to‘plami.
🔹 Nima beradi?
• Kodni yanada toza va tushunarli qiladi
• IDEda avto-takliflarni yaxshilaydi
• Tip xatolarini kamaytiradi
• Sync va async kodni aralashtirishni yengillashtiradi
🔧 Hozircha unda atigi 4 ta funksiya bor (masalan: soonify, asyncify), lekin integratsiya qilish uchun bir necha daqiqa kifoya.
💡 Masalan, oddiy funksiyani async qilib ishlatish yoki async funksiyani sync ichida chaqirishni Asyncer bilan oson hal qilasiz.
📚 Batafsil: asyncer.tiangolo.com
👨💻 GitHub: github.com/fastapi/asyncer
Komentariyada misol keltirilgan👇
⚡️ Asyncer — bu mini-kutubxona bo‘lib, Pythonda asinxron kod bilan ishlashni osonlashtiradi. Muhimi, u framework emas, balki yordamchi funksiyalar to‘plami.
🔹 Nima beradi?
• Kodni yanada toza va tushunarli qiladi
• IDEda avto-takliflarni yaxshilaydi
• Tip xatolarini kamaytiradi
• Sync va async kodni aralashtirishni yengillashtiradi
🔧 Hozircha unda atigi 4 ta funksiya bor (masalan: soonify, asyncify), lekin integratsiya qilish uchun bir necha daqiqa kifoya.
💡 Masalan, oddiy funksiyani async qilib ishlatish yoki async funksiyani sync ichida chaqirishni Asyncer bilan oson hal qilasiz.
📚 Batafsil: asyncer.tiangolo.com
👨💻 GitHub: github.com/fastapi/asyncer
Komentariyada misol keltirilgan👇
GitHub
GitHub - fastapi/asyncer: Asyncer, async and await, focused on developer experience.
Asyncer, async and await, focused on developer experience. - fastapi/asyncer
🔥3
🚀 PlutoPrint bilan PDF va PNG yaratish juda oson!
Endi Python yordamida HTML yoki XML fayllardan to‘g‘ridan-to‘g‘ri sifatli PDF va rasm yaratishingiz mumkin. PlutoPrint kutubxonasi yengil, tez va qulay: hisobotlar, hisob-fakturalar, chipta va vizualizatsiyalar uchun ideal!
Asosiy imkoniyatlar:
✅ PDF va PNG qo‘llab-quvvatlashi
✅ Oson o‘rnatish va ishlatish (pip install plutoprint)
Misol:
HTML misol fayl:
📌 Shu HTML faylni saqlang input.html fayliga, so‘ng plutoprint input.html output.pdf --size=A4 buyrug‘i bilan PDF yaratishingiz mumkin.
html fayl va yuqoridagi kod orqali yaratilgan pdf fayl komentariyada👇
Endi Python yordamida HTML yoki XML fayllardan to‘g‘ridan-to‘g‘ri sifatli PDF va rasm yaratishingiz mumkin. PlutoPrint kutubxonasi yengil, tez va qulay: hisobotlar, hisob-fakturalar, chipta va vizualizatsiyalar uchun ideal!
Asosiy imkoniyatlar:
✅ PDF va PNG qo‘llab-quvvatlashi
✅ Oson o‘rnatish va ishlatish (pip install plutoprint)
Misol:
plutoprint input.html output.pdf --size=A4
HTML misol fayl:
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="UTF-8">
<title>Hisobot</title>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #4CAF50; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>Hisobot: Sotuvlar</h1>
<p>Sana: 12-sentabr, 2025</p>
<table>
<tr>
<th>Mijoz</th>
<th>Miqdor</th>
<th>Narx</th>
</tr>
<tr>
<td>Ali</td>
<td>5</td>
<td>100 000 so'm</td>
</tr>
<tr>
<td>Vali</td>
<td>3</td>
<td>60 000 so'm</td>
</tr>
</table>
</body>
</html>
📌 Shu HTML faylni saqlang input.html fayliga, so‘ng plutoprint input.html output.pdf --size=A4 buyrug‘i bilan PDF yaratishingiz mumkin.
html fayl va yuqoridagi kod orqali yaratilgan pdf fayl komentariyada👇
⚡2
📌 Python: raise bilan istisno yaratish
raise — kodda kutilmagan xatolik yuzaga kelganda istisno (exception) yaratish uchun ishlatiladi.
💡 Misol:
✅ Bu yerda ValueError xatolik xabari bilan yuzaga keladi.
⚡️ Istisno yuzaga kelganda:
1. Kod bajarilishi to‘xtaydi
2. try/except blokida xato qayta ishlanishi mumkin
3. Agar qayta ishlanmasa — dastur xato bilan tugaydi
🔹 Misol:
Agar chegirma 0 dan kichik yoki 100 dan katta bo‘lsa, xato yuzaga keladi
raise — kodda kutilmagan xatolik yuzaga kelganda istisno (exception) yaratish uchun ishlatiladi.
💡 Misol:
raise ValueError('Invalid value')✅ Bu yerda ValueError xatolik xabari bilan yuzaga keladi.
⚡️ Istisno yuzaga kelganda:
1. Kod bajarilishi to‘xtaydi
2. try/except blokida xato qayta ishlanishi mumkin
3. Agar qayta ishlanmasa — dastur xato bilan tugaydi
🔹 Misol:
def calculate_discount(discount):
if discount < 0 or discount > 100:
raise ValueError("Discount must be between 0 and 100")
Agar chegirma 0 dan kichik yoki 100 dan katta bo‘lsa, xato yuzaga keladi
Bugun hamyurtimiz Murodjon Ahmadaliyev yaponiyalik Inoe bilan jang qiladi, Mutloq jahon chempionligi uchun kechadigan ushbu jang qanday yakun topadi nima deb o'ylaysiz? Kanelo va Crawford o'rtasidagi jang haqidachi?
try-finally ni except blokisiz qo‘llash nimaga kerak bo‘lishi mumkin?
try-finally konstruksiyasi except bloki ishlatilmagan holda quyidagi hollarda qo‘llanishi mumkin:
— Fayllar bilan ishlagandan so‘ng, xatolik yuz bersa ham ularni yopish uchun.
— Resurslarni bo‘shatish uchun, masalan, tarmoq ulanishlari yoki blokirovkalarni yechish.
— Dastur ishlashi to‘xtatilganda uzoq davom etuvchi amallar yoki jarayonlarni bekor qilish uchun. Masalan, ishga tushirilgan oqimlarni (threads) to‘xtatish.
— Xatolik bo‘lsa ham, kod blokining yakunlanishi haqida log yozish yoki xabar berish uchun.
— Kod bloki yakunlangach, natijadan qat’i nazar bajarilishi shart bo‘lgan mantiqni bajarish uchun, masalan, hisoblagichlarni (counter) qayta tiklash.
try-finally konstruksiyasi except bloki ishlatilmagan holda quyidagi hollarda qo‘llanishi mumkin:
— Fayllar bilan ishlagandan so‘ng, xatolik yuz bersa ham ularni yopish uchun.
— Resurslarni bo‘shatish uchun, masalan, tarmoq ulanishlari yoki blokirovkalarni yechish.
— Dastur ishlashi to‘xtatilganda uzoq davom etuvchi amallar yoki jarayonlarni bekor qilish uchun. Masalan, ishga tushirilgan oqimlarni (threads) to‘xtatish.
— Xatolik bo‘lsa ham, kod blokining yakunlanishi haqida log yozish yoki xabar berish uchun.
— Kod bloki yakunlangach, natijadan qat’i nazar bajarilishi shart bo‘lgan mantiqni bajarish uchun, masalan, hisoblagichlarni (counter) qayta tiklash.
❤1
🐢 Pythonda Turtle kutubxonasi
Turtle — Pythondagi eng qiziqarli va o‘rganishga oson kutubxonalardan biri. U yordamida grafik shakllar, geometrik chizmalar, hatto oddiy o‘yinlarni ham yaratish mumkin.
👉 Dastlab o‘quvchilar uchun yaratilgan bo‘lsa-da, hozir ham boshlovchilarga programmalashni o‘rganishni zavqliroq qilish uchun eng zo‘r vosita hisoblanadi.
🔹 Nimalar qilish mumkin?
• Doira, kvadrat, yulduz kabi shakllar chizish ✨
• Rangli naqshlar yaratish 🎨
• Animatsiya va oddiy o‘yinlar yasash 🎮
🔹 Misol kod:
➡️ Bu kod ajoyib gullarga o‘xshash naqsh chizib beradi 🌸
🔹 Afzalliklari:
• Juda oson sintaksis
• Tez natija ko‘rsatadi
• Bolalar va yangi boshlovchilar uchun motivatsion
komentariyada kub chizish kodi keltirilgan👇
Turtle — Pythondagi eng qiziqarli va o‘rganishga oson kutubxonalardan biri. U yordamida grafik shakllar, geometrik chizmalar, hatto oddiy o‘yinlarni ham yaratish mumkin.
👉 Dastlab o‘quvchilar uchun yaratilgan bo‘lsa-da, hozir ham boshlovchilarga programmalashni o‘rganishni zavqliroq qilish uchun eng zo‘r vosita hisoblanadi.
🔹 Nimalar qilish mumkin?
• Doira, kvadrat, yulduz kabi shakllar chizish ✨
• Rangli naqshlar yaratish 🎨
• Animatsiya va oddiy o‘yinlar yasash 🎮
🔹 Misol kod:
import turtle
t = turtle.Turtle()
for i in range(36):
t.forward(100)
t.right(170)
turtle.done()
➡️ Bu kod ajoyib gullarga o‘xshash naqsh chizib beradi 🌸
🔹 Afzalliklari:
• Juda oson sintaksis
• Tez natija ko‘rsatadi
• Bolalar va yangi boshlovchilar uchun motivatsion
komentariyada kub chizish kodi keltirilgan👇
👍3
🐾 PyGame — boshlash uchun eng qulay kutubxona
PyGame Python bilan 2D o‘yinlar, animatsiyalar va interaktiv vizualizatsiyalar yaratish uchun juda mos. Boshlash uchun:
🔧 Kichik misol — harakatlanuvchi shar
📌 Nima o‘rganasiz?
• Oyna ochish va event loop (pygame.event)
• Ob’yekt harakati va oddiy kolliziya (devorga tegish)
• Rasm chizish (draw.circle) va FPS boshqarish (Clock)
🚀 Keyingi qadamlar: spritelar, klaviatura boshqaruvi, tovush, menyu, va o‘yinning asosiy logikasini yozish.
Natijasining skrinshoti komentariyada👇
PyGame Python bilan 2D o‘yinlar, animatsiyalar va interaktiv vizualizatsiyalar yaratish uchun juda mos. Boshlash uchun:
pip install pygame
🔧 Kichik misol — harakatlanuvchi shar
import pygame
pygame.init()
W, H = 640, 360
screen = pygame.display.set_mode((W, H))
pygame.display.set_caption("PyGame — Oddiy misol")
x, y = W//2, H//2
vx = 3 # tezlik (px/frame)
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# pozitsiyani yangilash
x += vx
if x <= 20 or x >= W-20:
vx = -vx # devorga teganda qaytadi
# chizish
screen.fill((30, 30, 30)) # fon
pygame.draw.circle(screen, (0, 160, 255), (x, y), 20) # shar
pygame.display.flip()
clock.tick(60) # 60 FPS
pygame.quit()
📌 Nima o‘rganasiz?
• Oyna ochish va event loop (pygame.event)
• Ob’yekt harakati va oddiy kolliziya (devorga tegish)
• Rasm chizish (draw.circle) va FPS boshqarish (Clock)
🚀 Keyingi qadamlar: spritelar, klaviatura boshqaruvi, tovush, menyu, va o‘yinning asosiy logikasini yozish.
Natijasining skrinshoti komentariyada👇
🔥1