📌 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
🦆 Duck Typing (O‘rdak tipizatsiyasi)
Dasturlashda ba’zan obyektning qaysi sinfga tegishli ekanligi muhim emas. Muhimi — u kerakli metod yoki xususiyatga ega bo‘lsa, foydalanish mumkin.
👉 Qoidasi oddiy:
“Agar u o‘rdakdek suzsa va o‘rdakdek qichqirsa — demak, u o‘rdak.”
🔹 Afzalliklari:
• Kodni turli sinflarga qattiq bog‘lamaydi
• Moslashuvchan bo‘ladi
• Yangi turlarni qo‘shish oson
• Polimorfizm (turli obyektlarni bir xil ishlatish) oddiylashadi
💡 Misol (Python):
👉 Ko‘rib turganingizdek, funksiyaga kim yuborilganini tekshirish shart emas. Faqat quack() metodi mavjud bo‘lsa, ishlaydi.
Dasturlashda ba’zan obyektning qaysi sinfga tegishli ekanligi muhim emas. Muhimi — u kerakli metod yoki xususiyatga ega bo‘lsa, foydalanish mumkin.
👉 Qoidasi oddiy:
“Agar u o‘rdakdek suzsa va o‘rdakdek qichqirsa — demak, u o‘rdak.”
🔹 Afzalliklari:
• Kodni turli sinflarga qattiq bog‘lamaydi
• Moslashuvchan bo‘ladi
• Yangi turlarni qo‘shish oson
• Polimorfizm (turli obyektlarni bir xil ishlatish) oddiylashadi
💡 Misol (Python):
class Duck:
def quack(self):
print("Quack!")
class Robot:
def quack(self):
print("Robot quack!")
def make_quack(obj):
obj.quack() # faqat quack() metodi bo‘lsa kifoya
make_quack(Duck()) # Quack!
make_quack(Robot()) # Robot quack!
👉 Ko‘rib turganingizdek, funksiyaga kim yuborilganini tekshirish shart emas. Faqat quack() metodi mavjud bo‘lsa, ishlaydi.
🐍 Pythonda Old-style va New-style Klasslar
🔹 Old-style klasslar faqat Python 2 da mavjud edi.
🔹 Python 3 da esa hamma klasslar avtomatik new-style hisoblanadi.
📌 Old-style klass (faqat Python 2 da)
📌 New-style klass (Python 2 va Python 3 da)
Python 3 da esa quyidagisi ham new-style bo‘ladi:
🔑 Asosiy farqlar (faqat Python 2 uchun muhim)
• Old-style klasslar object dan meros olmaydi.
• New-style klasslar object dan meros oladi.
• New-style klasslarda qo‘shimcha imkoniyatlar bor:
• descriptors
• properties
• __slots__
• metaclass ishlashi
New-style klasslar to‘liq OOP imkoniyatlarini qo‘llab-quvvatlaydi.
✅ Xulosa
• Agar siz Python 3 da ishlayotgan bo‘lsangiz — hamma klasslar new-style, qo‘shimcha hech narsa yozishingiz shart emas.
• Python 2 ishlatayotgan bo‘lsangiz, object dan meros olishni unutmang:
📌 Demak, hozirgi zamonda old-style klass tushunchasi tarixiy ahamiyatga ega xolos.
🔹 Old-style klasslar faqat Python 2 da mavjud edi.
🔹 Python 3 da esa hamma klasslar avtomatik new-style hisoblanadi.
📌 Old-style klass (faqat Python 2 da)
class OldClass: # object dan meros olmaydi
pass
📌 New-style klass (Python 2 va Python 3 da)
class NewClass(object): # object dan meros oladi
pass
Python 3 da esa quyidagisi ham new-style bo‘ladi:
class AnyClass:
pass
🔑 Asosiy farqlar (faqat Python 2 uchun muhim)
• Old-style klasslar object dan meros olmaydi.
• New-style klasslar object dan meros oladi.
• New-style klasslarda qo‘shimcha imkoniyatlar bor:
• descriptors
• properties
• __slots__
• metaclass ishlashi
New-style klasslar to‘liq OOP imkoniyatlarini qo‘llab-quvvatlaydi.
✅ Xulosa
• Agar siz Python 3 da ishlayotgan bo‘lsangiz — hamma klasslar new-style, qo‘shimcha hech narsa yozishingiz shart emas.
• Python 2 ishlatayotgan bo‘lsangiz, object dan meros olishni unutmang:
class MyClass(object):
pass
📌 Demak, hozirgi zamonda old-style klass tushunchasi tarixiy ahamiyatga ega xolos.
🔥2❤1
📊 ARIMA — vaqt qatorlari prognozlashdagi klassik model
🔹 ARIMA (AutoRegressive Integrated Moving Average) — vaqt qatorlarini prognozlashda eng mashhur statistik modellardan biri. U o‘tgan davrdagi qiymatlar va xatolarga asoslanib, kelajakni bashorat qiladi.
🛠 ARIMA qanday ishlaydi?
• AR (AutoRegressive) — o‘zining o‘tgan qiymatlaridan foydalanadi
• I (Integrated) — qatorni stasionar qilish uchun differensiallash
• MA (Moving Average) — o‘tgan prognoz xatolaridan foydalanadi
Ya’ni, ARIMA = o‘tgan qiymatlar + differensial + xatolar kombinatsiyasi.
✨ Afzalliklari:
• Oddiy va tushunarli matematik asos
• Trend va mavsumiylikni ushlay oladi (SARIMA orqali)
• Statistik interpretatsiya qulay
• Kichik datasetlarda ham ishlaydi
🔎 Oddiy misol (Python, statsmodels):
👉 Natija: keyingi davr qiymatlari prognozlanadi.
📌 Qachon ishlatish kerak?
• 📈 Sotuvlar, talab, narxlar prognozi
• 🔍 Trend va mavsumiylikni tahlil qilish
• ⚡️ Oddiy va tezkor vaqt qatori modellari kerak bo‘lganda
🔗 Ko‘proq bilish uchun: https://www.statsmodels.org/stable/index.html
🔹 ARIMA (AutoRegressive Integrated Moving Average) — vaqt qatorlarini prognozlashda eng mashhur statistik modellardan biri. U o‘tgan davrdagi qiymatlar va xatolarga asoslanib, kelajakni bashorat qiladi.
🛠 ARIMA qanday ishlaydi?
• AR (AutoRegressive) — o‘zining o‘tgan qiymatlaridan foydalanadi
• I (Integrated) — qatorni stasionar qilish uchun differensiallash
• MA (Moving Average) — o‘tgan prognoz xatolaridan foydalanadi
Ya’ni, ARIMA = o‘tgan qiymatlar + differensial + xatolar kombinatsiyasi.
✨ Afzalliklari:
• Oddiy va tushunarli matematik asos
• Trend va mavsumiylikni ushlay oladi (SARIMA orqali)
• Statistik interpretatsiya qulay
• Kichik datasetlarda ham ishlaydi
🔎 Oddiy misol (Python, statsmodels):
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
# Vaqt qatori
data = [112, 118, 132, 129, 121, 135, 148]
series = pd.Series(data)
# ARIMA(1,1,1) modeli
model = ARIMA(series, order=(1,1,1))
model_fit = model.fit()
# 5 davrga prognoz
forecast = model_fit.forecast(steps=5)
print(forecast)
👉 Natija: keyingi davr qiymatlari prognozlanadi.
📌 Qachon ishlatish kerak?
• 📈 Sotuvlar, talab, narxlar prognozi
• 🔍 Trend va mavsumiylikni tahlil qilish
• ⚡️ Oddiy va tezkor vaqt qatori modellari kerak bo‘lganda
🔗 Ko‘proq bilish uchun: https://www.statsmodels.org/stable/index.html
🔥2
📌 Python ichida Java kodini yozib ishga tushirish mumkinmi?
Ha, bunga subprocess yordamida erishish mumkin!
🔹 G‘oya shuki:
1. Python faylda Java kodini yozib beradi ✍️
2. Uni javac yordamida kompilyatsiya qiladi ⚙️
3. So‘ng java buyrug‘i orqali ishga tushiradi ▶️
💡 Misol kod:
✅ Natija:
🔎 Xulosa: Agar siz Python loyihangiz ichida kichkina Java kodlarini sinab ko‘rmoqchi bo‘lsangiz yoki Java kodini avtomatik ishga tushirish kerak bo‘lsa — subprocess eng oddiy va universal yo‘l hisoblanadi.
Ha, bunga subprocess yordamida erishish mumkin!
🔹 G‘oya shuki:
1. Python faylda Java kodini yozib beradi ✍️
2. Uni javac yordamida kompilyatsiya qiladi ⚙️
3. So‘ng java buyrug‘i orqali ishga tushiradi ▶️
💡 Misol kod:
import subprocess
# Java kodini faylga yozamiz
java_code = """
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from Java!");
}
}
"""
with open("Hello.java", "w") as f:
f.write(java_code)
# Java kodini kompilyatsiya qilish
subprocess.run(["javac", "Hello.java"])
# Java dasturini ishga tushirish
result = subprocess.run(["java", "Hello"], capture_output=True, text=True)
print(result.stdout)
✅ Natija:
Hello from Java!
🔎 Xulosa: Agar siz Python loyihangiz ichida kichkina Java kodlarini sinab ko‘rmoqchi bo‘lsangiz yoki Java kodini avtomatik ishga tushirish kerak bo‘lsa — subprocess eng oddiy va universal yo‘l hisoblanadi.
👍3
🚀 Pythonda IntEnum va StrEnum
Pythonda oddiy Enum bilan bir qatorda maxsus enum sinflari ham mavjud:
🔹 IntEnum — int tipidan meros oladi. Qiymatlar son sifatida ishlaydi.
🔹 StrEnum — str tipidan meros oladi. Qiymatlar matn sifatida ishlaydi.
🔥 Nega kerak?
• Oddiy Enum qiymatlarini son yoki matn bilan bevosita taqqoslab bo‘lmaydi. Har safar .value chaqirishga to‘g‘ri keladi.
• IntEnum va StrEnum esa bu muammoni hal qiladi: qiymatlar mos ravishda int va str kabi ishlaydi.
✅ Foydali vaziyatlar:
• IntEnum – status kodlari, buyruqlar, raqamli sensor qiymatlari bilan ishlaganda.
• StrEnum – API response qiymatlari ("success", "error", "pending" va hokazo) bilan ishlaganda.
📌 Misol:
ℹ️ Eslatma:
• IntEnum — Python 3.4 dan mavjud.
• StrEnum — faqat Python 3.11 va undan yuqorida ishlaydi.
👉 Xullas, IntEnum va StrEnum kodingizni ixcham, tushunarli va xatolardan himoyalangan qiladi.
Pythonda oddiy Enum bilan bir qatorda maxsus enum sinflari ham mavjud:
🔹 IntEnum — int tipidan meros oladi. Qiymatlar son sifatida ishlaydi.
🔹 StrEnum — str tipidan meros oladi. Qiymatlar matn sifatida ishlaydi.
🔥 Nega kerak?
• Oddiy Enum qiymatlarini son yoki matn bilan bevosita taqqoslab bo‘lmaydi. Har safar .value chaqirishga to‘g‘ri keladi.
• IntEnum va StrEnum esa bu muammoni hal qiladi: qiymatlar mos ravishda int va str kabi ishlaydi.
✅ Foydali vaziyatlar:
• IntEnum – status kodlari, buyruqlar, raqamli sensor qiymatlari bilan ishlaganda.
• StrEnum – API response qiymatlari ("success", "error", "pending" va hokazo) bilan ishlaganda.
📌 Misol:
from enum import IntEnum, StrEnum
class Status(IntEnum):
OK = 1
ERROR = 2
print(Status.OK == 1) # True ✅
class Color(StrEnum):
RED = "red"
BLUE = "blue"
print(Color.RED == "red") # True ✅
ℹ️ Eslatma:
• IntEnum — Python 3.4 dan mavjud.
• StrEnum — faqat Python 3.11 va undan yuqorida ishlaydi.
👉 Xullas, IntEnum va StrEnum kodingizni ixcham, tushunarli va xatolardan himoyalangan qiladi.
🔥2