Sariq Dev
13.3K subscribers
1.25K photos
381 videos
4 files
845 links
Mohirdev.uz asoschisi Anvar Narzullaevning rasmiy kanali.

Muhokama uchun guruhimiz: @sariqdevchat
Talab va takliflar uchun @sariqdevadmin ga murojat qiling.
Download Telegram
Yangi #foydali maslahatlar ruknini boshlaymiz.

Qisqa satrlarda Pythondagi foydali funksiyalar, metodlar, modullar va boshqa narsalar haqida maslahat berib boramiz.

Bugun Pythonda matn tarkibini tekshirish uchun qulay metodlar bilan tanishamiz.

Misol uchun siz foydalanuvchidan ismini (yoki yoshini) kiritishni so'radingiz, rasmdagi metodlar yordamida kiritilgan matn tarkibini tekshirib olishingiz mumkin.

Masalan, .isalpha() metodi kiritilgan matn faqatgina harflardan iborat bo'lsa True aks holda esa False qiymat qaytaradi.

Huddi shu kabi, .isdigit() metodi yordamida, foydalanuvchi kiritgan matn son ekanligini tekshirib olishimiz mumkin.

Bu bizga dasturimizdagi xatoliklarning oldini olishga yordam beradi.

Qolgan metodlarni rasmda ko'rishingiz mumkin. Vaqtni zoe ketqizmasdan, o'rgangan bilmingizni sinab ko'ring.
πŸ‘1
Pythondagi #foydali modullardan biri bu difflib moduli.

difflib moduli tarkibidagi funksiyalar yordamida matnlar, ro'yxatlar va hatto fayllar o'rtasida o'xshashlik (yoki farqni) osongina topishimiz mumkin.

Misol uchun, get_close_matches() funksiyasi biror ro'yxat ichidan berilgan elementga o'xshash elementlar ro'yxatini qaytaradi. Bunda biz o'xshashlik nisbatini va o'xshash elementlar sonini ham berishimiz mumkin.

Yoki, SequenceMatcher funksiyasini olaylik. Bu funksiya ikki ro'yxat (yoki matnni) solishtirib, ularning bir-biriga o'xshashlik koeffisientini qaytaradi (.ratio() metodi)

Tushunarli bo'lishi uchun rasmdagi misollarga e'tibor qiling.

Yanayam tushunarli bo'lishi uchun esa zudlik bilan Pythonda difflib modulini sinab ko'ring.
πŸ‘3
Pythonda hech qanday vazifa bajarmaydigan, lekin juda ham #foydali pass operatori mavjud.

Odatda, bu operatordan bo'shliqlarni vaqtincha to'ldirishda foydalaniladi.

Misol uchun siz bir funksiyani yozishni o'ylab qo'ydingiz, funksiyaga nom berdingiz, lekin uning kodi (badani) tayyor emas. Agar funksiyani bo'sh qoldirsangiz, Python IndentationError xatoligini beradi. Mana shunday holatlarda pass operatori sizning xaloskoringiz.

Huddi shu kabi, klasslar yaratishda ham, klass ichidagi metodlarning nomini o'yladingiz, lekin kodi hali tayyor bo'lmasa, bo'shliqni vaqtinchaga pass bilan to'ldirib ketasiz.

Bu operatordan tsikllar yoki shartlar badanini vaqtincha to'ldirib turishda ham foydalanish mumkin.
πŸ‘6πŸ‘1
Pythondagi #foydali xususiyatlardan yana biri bu bir qator kod bilan ro'yxat yaratish qulayligi (list comprehension).
Misol uchun sizga 1 dan N gacha sonlarning kvadrati kerak. Buni loop tsikli yordamida yozsangiz tahminan shunday kod bo'ladi:
kv = []
for x in range(10):
kv.append(x**2)

Pythonda huddi shu natijaga 1 qator kod bilan erishish mumkin:
kv = [x**2 for x in range(10)]

Yoki, biror ro'yxatdan juft sonlarni ajratib olish talab qilinsa:
sonlar = [12, 14, 8, 4, 9, 32, 21, 3, 5, 19]
juft_sonlar = [x for x in sonlar if x%2==0]

Ozgina kreativlik bilan, bu usul yordamida kodingizni ancha soddalashtirishingiz mumkin. Misol uchun, sonlar orasidan ma'lum shartlarga javob beruvchi sonlarni ajratib olish, matnlar orasidan ma'lum harfga boshlanuvchi yoki ma'lum uzunlikdagi matnlar ro'yxatini shakllantirish va hokazo.

Vaqtni zoe ketkazmay, o'rgangan bilimingizni darhol Pythonda sinab ko'ring.
πŸ‘28πŸ”₯2❀1
Pythondagi #foydali va dasturchilar tomonidan ko'p ishatiladigan funskyalardan biri bu uuid moduli ichidagi uuid4() funksiyasi.

Bu funksiya dastur davomida noyob (takrorlanmaydigan) ID raqam talab qilinganda ishlatilishi mumkin. Misol uchun, sahifangizdan ro'yxatdan o'tgan har bir foydalanuvchi uchun yangi ID raqam yaratishda uuid4() funksiyasi juda asqotadi.

uuid4() funskiyasi 2ΒΉΒ²Β² (5 undesillion) kombinasiya orasidan tasodifiy, 128-bit uzunlikdagi son qaytaradi. Ya'ni bu shunchlaik uzunki (36 ta 0 lik son) qaytgan son insoniyat hayotida hech qachon takrorlanmasligiga ishonsak bo'ladi.
πŸ‘7
Deyarli barcha dasturlash tillarida bir nechta shartlarni tekshirish talab qilinganida AND va OR operatorlaridan foydalanamiz:
if age>6 AND age<18:
yoki
if age<7 OR age>65:
va hokazo.

Pythonda esa bundan ham osonroq va tushunarliroq usuli bu all va any funksiyalaridan foydalanish.

Bu ikki #foydali funksiya bir nechta shartlarni ro'yxat ko'rinishida qabul qiladi:

βœ… any() funksiyasi ro'yxatdagi shartlardan birortasi bajarilsa TRUE qiymatini qaytaradi (OR operatori kabi):
>>> any([True, False, True])
True

βœ… all() funksiyasi esa ro'yxatdagi barcha shartlar bajarilsagina TRUE qiymatini qaytaradi (AND operatori kabi):
>>> all([True, False, True])
False

Keyingi safar sizdan bir nechta shartlarni tekshirish talab qilinganida bu ikki funksiyani tekshirib ko'ring.
πŸ‘2
Pythondagi #foydali modullar bilan tanishishda davom etamiz.

Navbat validators moduliga.
Bu moduldagi funksiyalar yordamida foydalanuvchi kiritgan ma'lumotlarning formatini tekshirishimiz mumkin.

Misol uchun, foydalanuvchidan email manzil kiritishni so'radik, kiritilgan manzil haqiqatdan ham email formatida (username@email.com) ekanini tekshirish uchun validators.email() funksiyasiga murojat qilamiz.

Yoki, biror o'zgaruvchi veb manzil ekanligini validators.domain() yoki validators.url() funksiyalari yordamida tekshirishimiz mumkin.

Agar berilgan oz'garuvchilar to'g'ri formatda bo'lsa funksiyalar True qiymatini, aks holda esa ValidationError xatoligini qaytaradi.

Validators moduli yordamida boshqa shartlarni ham tekshirishimiz mumkin, misol uchun kiritlgan son ma'lum oraliqda ekanini (validators.between()) yoki berilgan matn ma'lum uzunlikda ekanini (validators.length()) va hokazo.

Batafsil ma'lumot uchun modulning sahifasiga o'ting. O'rgangan bilimingizni esa zudlik bilan Pythonda sinab ko'ring.
πŸ‘3
Pythonda kompyuter ekranindan skrinshot olish uchun juda #foydali pyscreenshot moduli mavjud.

Modul ichidagi .grab() metodi yordamida ekrandan to'liq yoki qisman skrinshot olish, .save() metdoi yordamida esa skrinlarni faylga yozish mumkin.

Ekranning bir qismidan skirnshot olish uchun .grab() metodiga bbox parametri uzatiladi. Bu parametrda ekranning skrinshot olish kerak bo'lgan qismining koordinatalari ko'rsatiladi .grab(bbox=(x1,y1,x2,y2)).

Yangi narsa o'rgandingizmi, albatta amaliyotda qo'llab ko'ring.
πŸ‘3
Tanishing, juda #foydali wikipedia moduli.

Bu modul yordamida Wikipedia sahifasidan qiziqarli ma'lumotlarni qidirib topishingiz va turli loyihalarda ishlatishingiz mumkin (masalan, Zakovat_bot πŸ™‚).

Modulni (boshqa modullar qatori) pip install wikipedia komandasi yordamida o'rnatasiz.

Wikipedianing OΚ»zbek tilidagi sahifasiga murojat qilish uchun wikipedia.set_lang('uz') metodini chaqiring (aks holda, ma'lumotlar ingliz tilida qaytadi).

Kerakli sahifani topish uchun esa wikipedia.page() metodiga murojat qilasiz.

Wikipedia qaytargan sahifaning nomini .original_title, sahifaning qisqa mazmunini esa .summary orqali ko'rishingiz mumkin.

Modul orqali hatto sahifaning to'liq html faylini ham yuklab olishingiz mumkin (.html() metodi).

Agar sahifa haqida yanayam ko'proq ma'lumot olmoqchi bo'lsangiz wikipedia.WikipediaPage('OΚ»zbekiston') metodidan foydalaning.

Xullas, juda #foydali modul ekan. Ko'proq ma'lumot uchun modul dokumentasiyasi bilan tanishishingiz mumkin.
πŸ‘1
Kechagi Python tashqi kutubxonasi haqidagi darsimiz uchun izlanish qilib, yana bir qiziqarli va #foydali modulga ko'zim tushdi.

Tanishing, howdoi moduli. howdoi ingliz tilidan "Qanday qilib..." deb tarjima qilinadi. Bu modul yordamida siz istalgan dasturlash tiliga oid savollarga javob olishingiz mumkin.

Savol ingliz tilida bo'lishi kerak. Javob StackOverflow sahifasidagi top natija asosida qaytariladi. Albatta, qurilma internetga ulangan bo'lishi kerak.

Rasmdagi misolda men Pythonda for tsiklini qanday qilib yozishni so'radim, va ko'rsatilgan javobni oldim. Aslida bundan ham murakkab so'rovlar yuborish mumkin.

Marhamat, siz ham urinib ko'ring. Ehitmol, kimdur howdoi va googletrans asosida yangi bot ham yaratar (faqat Kirill-Lotin (Eng-Uz) bot qilaverasilarmi 😁).
πŸ‘3
Pythondagi #foydali paketlar bilan tanishishda davom etamiz. Quyidagi maqolada dasturimiz uchun minglab soxta foydalanuvchilar yaratishni oΚ»rganamiz.

LINK: https://mohirdev.uz/faker/
πŸ‘1