Isoqjanov Ilyos | Python
512 subscribers
34 photos
13 videos
2 files
60 links
🐍 Python bo'yicha o'zbek tilidagi sifatli materiallarni ko'paytirishda o'zing madadkor bo'lgin Allohim.

Shaxsiy blogim:
https://t.me/coldboot_blog

Admin:
@JurabekAbdusattarov,
@pythonwithcoldboot
Download Telegram
🆔 UUID nima va nima uchun kerak?

uuid — bu Pythonda mavjud bo‘lgan standart modul bo‘lib, globallikda noyob identifikator (UUID) yaratishning tez va oson usulidir.

Bu usul orqali biz tasodifiy 128-bitli raqam hosil qilamiz — u deyarli 100% holatda noyob bo‘ladi.

Tasavvur qiling, mavjud bo‘lgan UUID lar soni 2¹²² dan oshadi! Bu esa 5 undetsilliondan (ya’ni 5,000,000,000,000,000,000,000,000,000,000,000,000) ortiq variant degani!

🔁 Hatto trillionta UUID mavjud bo‘lsa ham, ular orasida dublikat (bir xil) chiqish ehtimoli milliarddan birdan ham kichik.

⚡️ Bu natija atigi ikki qator kod bilan amalga oshadi! 👇


import uuid
print(uuid.uuid4())



🚀 UUID bilan xavfsiz va noyob identifikatorlarni yarating!!!
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Pythonda bir qator kodda yoziladigan ishni 15 qator kod yozish orqali qiladigan C++ yoki Javachi tanishlarga yuborib qo'yamiz!😜
😁1
📍 textwrap → shorten()

shorten() funksiyasi sizning matningizni berilgan uzunlikka sig‘dira oladi va avtomatik ravishda ortiqcha qismini kesib tashlaydi.

🔸 Matn qisqa bo‘lsa – o‘zgartirmaydi
🔸 Matn uzun bo‘lsa – so‘zlar oxiridan olib tashlanadi
🔸 Oxiriga default [...] yoki ... (biz belgilagan) belgisi qo‘shiladi

📂 Misollar:

from textwrap import shorten

# Qisqartirish shart emas
shorten("Salom dunyo!", width=20)
# ➤ "Salom dunyo!"

# Qisqartirilgan, default placeholder bilan
shorten("Uzoq matnlar uchun qisqartirish kerak", width=30)
# ➤ "Uzoq matnlar uchun [...]"

# Maxsus placeholder bilan qisqartirilgan
shorten("Juda uzun jumla bo‘lsa, qisqartiramiz", width=35, placeholder="...")
# ➤ "Juda uzun jumla bo‘lsa,..."


🧠 Tarixdagi eng elegant matn qisqartirish usuli — textwrap.shorten() bilan tanishing!
👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Biz mumkin emas deb o'ylagan narsalarga oddiy ko'z bilan nigoh!🙄
Nimadir payqadingiz, chamamda!
📌 Python String (matn) metodlari: To‘liq qo‘llanma 🔠

Pythonda matn (string) bilan ishlash juda qulay va kuchli metodlar to‘plami mavjud. Quyida eng ko‘p ishlatiladigan metodlar va ularning ishlash misollari keltirilgan 👇

🔹 upper() — matndagi barcha harflarni KATTA harfga aylantiradi


text = "salom"
print(text.upper()) # 'SALOM'


🔹 lower() — matndagi barcha harflarni kichik harfga aylantiradi


text = "SALOM"
print(text.lower()) # 'salom'


🔹 capitalize() — faqat birinchi harfni katta harfga aylantiradi


text = "python dasturlash"
print(text.capitalize()) # 'Python dasturlash'


🔹 title() — har bir so‘zning bosh harfini katta qiladi


text = "python dasturlash tili"
print(text.title()) # 'Python Dasturlash Tili'


🔹 strip() — matn boshidagi va oxiridagi bo‘sh joylarni olib tashlaydi


text = " salom "
print(text.strip()) # 'salom'


🔹 replace(old, new) — matndagi old qismini new ga almashtiradi


text = "python yaxshi"
print(text.replace("yaxshi", "zo‘r")) # 'python zo‘r'


🔹 split(sep) — matnni ajratib, ro‘yxatga (list) aylantiradi


text = "olma,banan,anor"
print(text.split(",")) # ['olma', 'banan', 'anor']


🔹 join(list) — ro‘yxatdagi elementlarni bitta stringga qo‘shadi


fruits = ['olma', 'banan', 'anor']
print(", ".join(fruits)) # 'olma, banan, anor'


🔹 find(sub) — substringning indeksini qaytaradi (topilmasa -1)


text = "hello world"
print(text.find("world")) # 6


🔹 startswith(sub) / endswith(sub) — matn berilgan qism bilan boshlanadimi/tugaydimi tekshiradi


print("hello".startswith("he")) # True
print("hello".endswith("lo")) # True


🔹 isalpha() / isdigit() / isalnum() — faqat harfmi, raqammi yoki harf+raqammi tekshiradi


print("python".isalpha()) # True
print("123".isdigit()) # True
print("abc123".isalnum()) # True


🔹 zfill(width) — matnni width uzunlikka yetkazish uchun boshiga 0 qo‘shadi


print("42".zfill(5)) # '00042'


Ushbu metodlar matnlar bilan ishlashni oson va samarali qiladi. Dasturlash jarayonida juda foydali!

🧑‍💻 Siz yana qaysi metod yoki mavzuni o‘rganmoqchisiz? Izohda yozing!
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Junior dasturchi vs Senior dasturchi!! Farq faqat shundamas😂
📌 Python: int (butun son) tipidagi o'zgaruvchilar haqida

🔢 int — bu Pythondagi butun sonli o'zgaruvchi turi. Keling, u bilan bog'liq foydali metod va funksiyalarni ko‘rib chiqamiz.

🔹 1. .bit_length()
Sonni yozish uchun kerak bo‘lgan bitlar sonini qaytaradi.


x = 37
print(x.bit_length()) # ➝ 6


🔹 2. .to_bytes(length, byteorder)
Sonni baytlarga o‘giradi.


x = 1024
b = x.to_bytes(2, byteorder='big')
print(b) # ➝ b'\x04\x00'


🔹 3. int.from_bytes(bytes, byteorder)
Baytdan son hosil qiladi.


b = b'\x04\x00'
x = int.from_bytes(b, byteorder='big')
print(x) # ➝ 1024


🔹 4. Dunder metodlar (__add__, __sub__, ...)
Arifmetik amallar uchun ichki metodlar:


x = 10
print(x.__add__(5)) # ➝ 15


🔹 5. int() funksiyasi
Turli turlardan butun songa o‘tkazish:


print(int("123")) # ➝ 123
print(int(12.8)) # ➝ 12
print(int(True)) # ➝ 1


🔹 6. math modulidagi funksiyalar
int bilan ishlaganda foydali bo‘ladigan funksiyalar:


import math

print(math.factorial(5)) # ➝ 120
print(math.gcd(24, 36)) # ➝ 12


Bonus:
Agar int tipidagi barcha metodlarni ko‘rmoqchi bo‘lsangiz:


print(dir(int))


💡 int — oddiy ko‘ringan bo‘lsa ham, kuchli imkoniyatlarga ega! Kodlaringizda undan to‘g‘ri foydalaning 😉
This media is not supported in your browser
VIEW IN TELEGRAM
Yozgan dasturi ishlamaganda, dasturchilarning muammoga yechim topish jarayoni! (hazil)😎
📊 Python: multimode() funksiyasi haqida batafsil

multimode() — bu statistics moduliga tegishli funksiya bo‘lib, berilgan ma'lumotlar ichida eng ko‘p uchraydigan element(lar) ro‘yxatini qaytaradi.

🔍 multimode() funksiyasi nima qiladi?

- multimode(data) funksiyasi data ichidagi eng ko‘p takrorlangan qiymat(moda)larni aniqlaydi.
- U bir nechta qiymatni qaytarishi mumkin — agar ularning takrorlanish soni bir xil bo‘lsa.
- Agar data bo‘sh bo‘lsa, u holda bo‘sh ro‘yxat ([]) qaytariladi.

📥 Argument:
data — bu istalgan iterable (masalan, list, tuple, str, set, h.k.)

📤 Natija:
Eng ko‘p uchragan qiymat(lar) ro‘yxati (list shaklida)

Foydalanish misollari:


from statistics import multimode

# Misol 1: bir nechta moda bor
print(multimode([1, 2, 2, 3, 3]))
# ➝ [2, 3] (ikkalasi ham 2 marta uchragan)

# Misol 2: faqat bitta moda bor
print(multimode([4, 4, 4, 5, 6]))
# ➝ [4]

# Misol 3: bo'sh ro'yxat
print(multimode([]))
# ➝ []


📌 Foydali eslatmalar:

- multimode() qiymatlarni aniqlangan tartibda qaytaradi — ya’ni data ichida qanday ketma-ketlikda bo‘lsa, shunday tartibda chiqadi.
- Bu funksiya mode() funksiyasidan farqli o‘laroq bir nechta modani qaytarishi mumkin, mode() esa faqat bitta moda beradi va ko‘p moda bo‘lsa xatolik chiqaradi.

🎯 Qayerda foydali?

- Ma’lumotlar tahlilida eng ko‘p uchraydigan qiymatlarni aniqlashda
- O‘quvchilar baholarini, so‘rovnoma natijalarini tahlil qilishda
- Statistika asosida qarorlar chiqarishda

💡 Misol hayotdan:
Agar sizda baholar ro‘yxati bo‘lsa:


grades = [5, 4, 5, 3, 4, 4, 5]
print(multimode(grades)) # ➝ [4, 5]


Demak, 4 va 5 eng ko‘p uchrayotgan baholar ekan.

🧠 Esda tuting:
multimode() — bu oddiy, lekin kuchli vosita. U sizga bir necha moda borligini aniqlash imkonini beradi — bu esa real statistik tahlilda juda muhim.
🔥1
🌐 Python: webbrowser moduli orqali veb-sahifa ochish

Agar siz Python dasturingizdan avtomatik tarzda brauzerda sayt ochmoqchi bo‘lsangiz — webbrowser moduli aynan siz uchun!

🔧 Asosiy funksiyasi:


import webbrowser

webbrowser.open("https://www.google.com")


Yuqoridagi kod — sizning standart brauzeringizda Google saytini ochadi.

📌 Foydali qo‘shimcha funksiyalar:

1. webbrowser.open_new(url)
Yangi brauzer oynasida sahifani ochadi.


webbrowser.open_new("https://t.me/python_uz")


2. webbrowser.open_new_tab(url)
Yangi tabda sahifani ochadi (agar mavjud bo‘lsa).


webbrowser.open_new_tab("https://youtube.com")


💡 Qayerda ishlatiladi?

- Telegram bot yoki GUI dasturdan sahifani ochish
- Hujjat, video, manba yoki havolani avtomatik ishga tushirish
- O‘quv loyihalarda foydalanuvchiga sayt ko‘rsatish

📎 Eslatma:

- webbrowser — bu Python'ga standart o‘rnatilgan modul, alohida o‘rnatish shart emas.
- Internetga ulangan bo‘lishingiz kerak.

Misol: Foydalanuvchi o‘zi tanlagan sahifani ochish:


url = input("Sayt manzilini kiriting: ")
webbrowser.open(url)


🚀 Foydali, oddiy va juda qulay!
webbrowser — bu dasturingizni real dunyo bilan bog‘lashning eng oson yo‘llaridan biri!
Query JSON

📌 JMESPath nima?

JMESPath — bu JSON uchun so‘rov tili bo‘lib, murakkab tuzilmadagi JSON'dan kerakli ma’lumotni juda oson va aniq tarzda ajratib olish imkonini beradi. Python’da jmespath kutubxonasi orqali ishlatiladi.

🔧 Foydasi nimada?
JSON'ni qidirish juda sodda bo‘ladi
Murakkab tuzilmalar bilan ishlash osonlashadi
So‘rovlar aniq va ixcham yoziladi

🧪 Misol: Ko‘p elementli murakkab JSON bilan ishlash


import jmespath

data = {
"company": {
"name": "TechSoft",
"location": "Tashkent",
"departments": [
{
"name": "Engineering",
"employees": [
{"name": "Ali", "age": 30, "skills": ["Python", "C++"]},
{"name": "Laylo", "age": 27, "skills": ["Java", "Kotlin"]}
]
},
{
"name": "Marketing",
"employees": [
{"name": "Vali", "age": 24, "skills": ["SEO", "Content"]},
{"name": "Zarina", "age": 29, "skills": ["SMM", "Copywriting"]}
]
}
]
}
}


🔍 1. Barcha xodimlarning ismlarini olish:


result = jmespath.search("company.departments[*].employees[*].name", data)
# Natija: [['Ali', 'Laylo'], ['Vali', 'Zarina']]


🔍 2. Faqat Engineering bo‘limidagi xodimlar yoshi:


result = jmespath.search("company.departments[?name=='Engineering'].employees[*].age", data)
# Natija: [[30, 27]]


🔍 3. Marketing bo‘limidagi barcha skill'lar:


result = jmespath.search("company.departments[?name=='Marketing'].employees[*].skills", data)
# Natija: [[['SEO', 'Content'], ['SMM', 'Copywriting']]]


🔗 Ko‘proq o‘rganish uchun: jmespath.org
📦 Python kutubxonasi: pip install jmespath
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Dasturdagi xatoliklar va meni o'rtamizdagi munosabatlar🤝
🔤 swapcase() metodi — harflar registrini teskari qilish

Python'dagi swapcase() metodi — bu str (matn) tipidagi obyektlar uchun mavjud bo‘lgan ichki metod bo‘lib, har bir harfning registrini teskari qiladi.

👉 Ya’ni:
Katta harf — kichikka aylanadi
Kichik harf — kattaga aylanadi

🧪 Misol:


text = "Hello, World!"
result = text.swapcase()
print(result)  # Natija: hELLO, wORLD!


🟢 Bu metod foydali bo‘lishi mumkin:

- Matnni testlashda
- Foydalanuvchi kiritgan ma’lumotni normallashtirishda
- Kod yozishda kreativ usullarda
🔥1
⏱️ Kodingiz tezligini o‘lchang – timeit yordamida!
Ba’zida kodimiz qanchalik samarali ishlashini tezda aniqlashimiz kerak bo‘ladi. Buni oddiy time bilan emas, balki timeit moduli orqali amalga oshirgan ma’qul — bu aniq, ishonchli va takrorlanuvchan usul.

🔍 Nega aynan `timeit`?
- Qo‘shimcha xarajatlarni hisobga oladi
- Interpreter qizishini inobatga oladi
- Kodni izolyatsiyada bajaradi
- Natijani bir necha marta o‘lchab, eng real vaqtni beradi

🧪 Oddiy misol

import timeit

# Kodni 10 000 marta ishlatib, umumiy vaqtni o‘lchash
print(timeit.timeit("'-'.join(str(n) for n in range(100))", number=10000))


🔁 Ikkita yechimni solishtirish

setup_code = "nums = list(range(100))"

stmt1 = "'-'.join(str(n) for n in nums)"
stmt2 = "'-'.join(map(str, nums))"

print("Generator:", timeit.timeit(stmt1, setup=setup_code, number=10000))
print("map: ", timeit.timeit(stmt2, setup=setup_code, number=10000))


🛠 Tavsiyalar
- setup= orqali boshlang‘ich ma’lumotlarni tayyorlang
- number= bilan kod necha marta ishlatilishini belgilang
- repeat() yordamida bir necha marta o‘lchab, eng ishonchli natijani oling

🎯 Xulosa
timeit — kod yechimlarini solishtirish va eng tezini tanlash uchun ajoyib vosita. Mikrooptimizatsiya uchun ayni muddao!
🔥1
⏱️ Qanday kodlarning tezligini timeit bilan o‘lchash mumkin, qaysilariniki mumkin emas?
Kod samaradorligini tekshirishda ko‘pchilik timeit modulidan foydalanadi. Lekin har qanday kod uchun bu vosita mos kelavermaydi. Keling, nima mumkin, nima mumkin emas — aniqlashtirib olamiz.

timeit bilan o‘lchash mumkin bo‘lgan kodlar:
1. Kichik, tez ishlovchi kodlar
Misol: ro‘yxat yaratish, string birlashtirish, matematik hisoblash


timeit.timeit("sum(range(1000))", number=10000)


2. Bir nechta algoritm tezliklarini solishtirish
Masalan: map() va list comprehension. Chunki bazi holatlarda bizga eng muhim narsa tezlik bo'ladi va hattoki millisoniyalar uchun kurashamiz.


# Qaysi tezroq ishlaydi?
"'_'.join(map(str, range(100)))"
"'_'.join(str(i) for i in range(100))"


3. Funksiya ichidagi hisoblashlar (rekursiya, sikl, qidiruv)


def is_even(n): return n % 2 == 0
timeit.timeit("is_even(42)", globals=globals(), number=1000000)


timeit bilan o‘lchash tavsiya etilmaydigan kodlar:
1. Tashqi omillarga bog‘liq kodlar
(Masalan: Internet, fayl o‘qish, API so‘rovlar, ma’lumotlar bazasi)


# Bunday kodlar bir marta sekin, bir marta tez ishlashi mumkin
requests.get("https://example.com")


2. Selenium, YouTube, WebScraping kodlari
Brauzer ochilishi, sahifa yuklanishi, reklamalar, JS kodlari — bular natijani beqaror qiladi.

3. Katta resurs talab qiladigan ishlar
Masalan: katta faylni ochish, rasmni qayta ishlash, video tahlili — bular `timeit`ni haddan ortiq sekinlashtiradi.

🟡 Bunday holatlarda nima qilish kerak?
💡 Oddiy usul — time moduli yordamida vaqtni o‘lchash:


import time
start = time.time()

# Murakkab kod, masalan: web scraping
# ...

end = time.time()
print(f"Bajarilish vaqti: {end - start:.2f} soniya")


🎯 Xulosa:
Kichik, mustaqil hisob-kitob Ha
Funksiya ichidagi algoritm Ha
Web scraping / API / Selenium Yo‘q
Internetga bog‘liq ishlar Yo‘q
Katta fayl bilan ish ⚠️ Ehtiyot bilan
🔥1
Iyun oyidan boshlab video darslar tayyorlash niyatimiz bor, sizlarga qiziq mavzularni bilsak ko'proq shular bo'yicha videolar tayyorlardik
🧩 Merge Sort (Birlashtirish orqali saralash) algoritmi — Python’da amaliy ko‘rinish

🔹 Merge Sort — bu klassik “bo‘lib boshqar” (divide and conquer) yondashuviga asoslangan saralash algoritmi bo‘lib, u barqaror va ishonchli ishlashi bilan mashhur.

⚙️ Algoritm qanday ishlaydi?
1. Bo‘lish (Divide):
- Ro‘yxat teng yoki tengga yaqin ikkiga bo‘linadi.
- Har bir kichik ro‘yxat yana bo‘linadi — bu jarayon rekursiv davom etadi.

2. Birlashtirish (Merge):
- Eng kichik bo‘laklar saralanadi va ketma-ketlikda bitta tartiblangan ro‘yxatga birlashtiriladi.

🧪 Python’da amalga oshirish:

def merge_sort(arr):
if len(arr) <= 1:
return arr

middle = len(arr) // 2
left = merge_sort(arr[:middle])
right = merge_sort(arr[middle:])

return merge(left, right)

def merge(left, right):
result = []
i = j = 0

# Ikkala ro‘yxatni solishtirib birlashtiramiz
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1

# Qolgan elementlarni qo‘shamiz
result.extend(left[i:])
result.extend(right[j:])
return result

# Misol:
nums = [38, 27, 43, 3, 9, 82, 10]
print(merge_sort(nums)) # Natija [3, 9, 10, 27, 38, 43, 82]


📊 Tahlil:
- ⏱️ Vaqt murakkabligi: O(n log n) (eng yaxshi, o‘rtacha va yomon holatda ham)
- 💾 Xotira murakkabligi: O(n) (qo‘shimcha xotira kerak bo‘ladi)

🛠 Optimallashtirish usullari:
Kichik bo‘limlar uchun insertion sort ishlatish (kam sonli elementlarda samaraliroq)

Agar pastki ro‘yxatlar allaqachon tartiblangan bo‘lsa — qayta saralashni o‘tkazib yuborish mumkin

Har safar yangi ro‘yxat yaratmasdan, bitta yordamchi massiv orqali birlashtirishni amalga oshirish — bu xotira sarfini kamaytiradi

🔚 Merge Sort — bu algoritmik jihatdan samarali va doimiy O(n log n) ishlash kafolatini beruvchi kuchli usul. Kodni tushunish oson, optimallashtirish imkoniyatlari esa uni real loyihalarda ishlatishga mos qiladi.
🔗 Python’da istisnolarni zanjirlash (exception chaining) — xatoliklar sababi yo‘qolib ketmasin

Dasturda murakkab jarayonlar bajarilganda, ichma-ich try-except bloklar bo‘lishi odatiy hol. Ba’zida bir xatolik boshqa bir xatolikni keltirib chiqaradi. Ana shunday vaziyatda istisnolarni zanjirlash texnikasi ishga tushadi.

Python’da bu raise ... from ... sintaksisi orqali amalga oshiriladi.

🧠 "Istisnolarni zanjirlash" o'zi nima?
Bu — bir istisno (xatolik) boshqa bir istisnoning natijasi ekanini aniq ko‘rsatish imkonini beradi. Ya’ni, dasturning yuqori darajasida xatolik chiqqanda, u avvalgi chuqurroq xatolikdan kelib chiqqanini yo‘qotmasdan bildiradi.

🧪 Misol:

def hisobla():
try:
natija = 1 / 0
except ZeroDivisionError as e:
raise ValueError("Hisoblashda xatolik!") from e

hisobla()


🔍 Bu yerda:

- 1 / 0 — ZeroDivisionError xatosini keltirib chiqaradi
- U except blokida ushlanadi
- Yangi istisno (ValueError) shu xatolik asosida qayta chiqariladi
- from e — eski istisno (e) bilan bog‘laydi

📋 Natijada konsolda quyidagi zanjirli xatolik chiqadi:
Traceback (most recent call last):
...
ZeroDivisionError: division by zero

The above exception was the direct cause of the following exception:

ValueError: Hisoblashda xatolik!

➡️ Bu yerda ikkita xatolik birgalikda ko‘rsatilgan. Ilk sabab (0 ga bo‘lish) yo‘qolmaydi.

📌 Qanday foyda bor?
- Dasturchi sifatida asl xatoni aniqlash ancha oson bo‘ladi
- Log fayllari yoki monitoring tizimlarida muammoning kelib chiqish tarixini ko‘rish mumkin
- Xatoliklar ichki kontekstda saqlanadi, ya’ni nima sababli nima yuz bergani aniq yoziladi

⚠️ E’tiborli jihat:
Agar from qismini yozmasangiz, Python avtomatik tarzda context orqali istisnoni bog‘lab qo‘yadi, lekin bu holatda xatolik "during handling of the above exception" degan ko‘rinishda chiqadi. Ammo from orqali yozish — aniq, toza va nazorat ostidagi usul hisoblanadi.

🔚 Xulosa:

raise ... from ... — murakkab dasturlarda xatoliklarni shaffof va chuqur tahlil qilish imkonini beruvchi kuchli vosita.

Uni o‘z loyihalaringizda ishlatish — professional yondashuv belgisidir.
👍1🔥1
Tasavvur qiling sizga 1 dan n gacha bo'lgan sonlarni vergul bilan ajratib yozilgan shaklga keltirish talab etildi.
Masalan n=5 bo'lganda siz 1, 2, 3, 4, 5 ni hosil qilishingiz kerak.
Diqqat savol: siz quyidagi usullardan qaysi birini tanlagan bo'lardingiz va nima uchun?

1.
natija = "1"
for i in range(2, n + 1):
natija += f", {i}"


2.
natija = ", ".join(str(i) for i in range(1, n + 1))
print(natija)


Izohlarda, fikringizni yozib qoldiring.

@simplypythonuz
🔥2