Uz Python Dev Logs
203 subscribers
57 photos
1 video
2 files
50 links
Uz Python Logs (notes)
Bu yerda Python dasturlash tiliga oid sharhlarni o'zbek tilida kuzatib borishingiz mumkin
πŸ‘‹ Bu yerda siz ham o'zingiz qiziqtirgan mavzuda qiziqarli ma'lumotlar e'lon qilishingiz mumkin
Aloqa: @AzamMamatmurodov
Ishlar: @uzpythonjobs
Download Telegram
python -c 'print("Salom Dunyo!")'
Python'ni foydalanish mumkin sohalar (joylar)

β€’ Web dasturlash: Django, Pyramid, Bottle, Tornado, Flask, web2py
β€’ GFI'ga ega dasturlar ishlab chiqish: tkInter, PyGObject, PyQt, PySide, Kivy, wxPython
β€’ Ilm-fanda va Hisoblashda: SciPy, Pandas, IPython
β€’ Dasturiy mahsulot ishlab chiqish jarayonida: Buildbot, Trac, Roundup
β€’ Tizimni boshqarishda: Ansible, Salt, OpenStack

πŸ‘‰ GFI (GUI) - Grafikli Foydalanuvchi Interfeysi
@uzpythonlogs

#use #foydalanish #soha
Matn turdagi ma'lumotni chop etish usullari

mening_matnim = "Oraliq masofani hisoblash"

- Teskarisiga o'girish:
print(mening_matnim[::-1])
- Birinchi oltita simvolni chop etish:
print(mening_matnim[:6])
- Teskarisiga o'girib, o'n to'rtta simvolni hisoblab, faqat juft simvollarni chop etish:
print(mening_matnim[:14:-2])

Qo'shimcha:
mening_matnim[boshlanish_indeksi:tugash_indeksi:qadamlar_soni]
☝️qadamlar_soni - oldidan qo'yiladigan (-) ishora, bu matnni oldin teskarisiga o'girib olish va shundan so'ng qadamlar soni hisoblanadi.

@uzpythonlogs
#matn #string #string_reversing #matn_teskariga_ogirish
Kodni ishga tushishiga ketgan vaqtni hisoblash
@uzpythonlogs
#performance #time_of_execution
Ikki lug'at(dict) turdagi ma'lumotni birlashtirish usuli:

>>> birinchi_manba = {'soni': 9, 'yigindisi': 2}
>>> ikkinchi_manba = {'yigindisi': 3, 'ochirilganlari': 12}
>>> {**birinchi_manba, **ikkinchi_manba}
{'soni': 9, 'yigindisi': 3, 'ochirilganlari': 12}


@uzpythonlogs
#dict #lugat #birlashtirish #merge #dictionary_merge
Python3 ning ichki imkoniyatlaridan foydalanib oddiy web ilova ko'tarish mumkin (framework yoki kutubxona ishlatmasdan)!

Buning uchun biz http va socketserver modullaridan foydalanishimiz yetarli va u quyidagicha bo'ladi:


from http.server import SimpleHTTPRequestHandler
from http import HTTPStatus
from socketserver import TCPServer


class Handler(SimpleHTTPRequestHandler):
def do_GET(self):
path = self.path
if path == "/":
status = HTTPStatus.OK
content = b"<b>Bosh sahifa</b>"
else:
status = HTTPStatus.NOT_FOUND
content = b"<b>Sahifa topilmadi</b>"
self.send_response(status)
self.end_headers()
self.wfile.write(content)


if __name__ == "__main__":
ip_address, port = '127.0.0.1', 8000
httpd = TCPServer((ip_address, port), Handler)
print(f"Server ishga tushdi: https://{ip_address}:{port}")
httpd.serve_forever()

Tekshirib ko'rish uchun brovserda ochib ko'rish yoki curl'dan ham foydalanishimiz mumkin :

$ curl https://127.0.0.1:8000
<b>Bosh sahifa</b>

$ curl https://127.0.0.1:8000/yangiliklar
<b>Sahifa topilmadi</b>

@uzpythonlogs
#web_ilova #http #TcpServer
Lug'at(dictionary)ni qiymatlari asosida saralash usuli:

>>> lugat = {'shaharlar': 34, 'qishloqlar': 198, 'viloyatlar': 12}
>>> saralangan_lugat = dict(sorted(lugat.items(), key=lambda x: x[1]))
>>> print(saralangan_lugat)
{'viloyatlar': 12, 'shaharlar': 34, 'qishloqlar': 198}


@uzpythonlogs
#lugat #dictionary #lambda #saralash #sorting
Uz Python Dev Logs pinned Β«Lug'at(dictionary)ni qiymatlari asosida saralash usuli: >>> lugat = {'shaharlar': 34, 'qishloqlar': 198, 'viloyatlar': 12} >>> saralangan_lugat = dict(sorted(lugat.items(), key=lambda x: x[1])) >>> print(saralangan_lugat) {'viloyatlar': 12, 'shaharlar': 34…»
Python'ning re moduli orqali matndan ma'lum shart asosida, matnning kerakli bo'lagini qirqib olish usulini - mover.uz'dagi video misolida ko'ramiz! Uni quyidagi funksiya orqali olish mumkin:


>>> url = 'https://mover.uz/watch/I2V2OKE/'
>>> import re
>>>
>>>
>>> def mover_video_url_getter(url):
... try:
... groups = re.search('https://mover.uz/watch/(.+?)/', url).groups()
... except Exception as e:
... print("Havola noto'g'ri berilgan")
... return
... else:
... if len(groups) > 0:
... video_name = groups[0]
... video_url = "https://v.mover.uz/{}_m.mp4".format(video_name)
... return video_url
... else:
... print('Mos havola topilmadi')
... return
...
>>> mover_video_url_getter(url)
'https://v.mover.uz/I2V2OKE_m.mp4'

Funksiyaning vazifasi: mover.uz'dagi biror videoga havolani berganda, funksiya video fayl turgan havolani qaytaradi.

@uzpythonlogs
#parsing #regex #videohavola
Python'da Mover.uz'dan berilgan havola orqali video'ni yuklab olish usuli:

import requests
import os


class Parse:
"""
kiruvchi havola: https://mover.uz/watch/PUxFuoqm/
chiquvchi video 360: https://v.mover.uz/PUxFuoqm_m.mp4
chiquvchi video 720: https://v.mover.uz/PUxFuoqm_h.mp4
"""
https = 'https://v.mover.uz/'
q_360 = '_m.mp4'
q_720 = '_h.mp4'
q = {
'360': q_360,
'720': q_720
}
user_agent = {'User-agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030529'}

def __init__(self, link):
self.link = link
self.quantity_list = []
self.movie_id = self.link.split('/')[-2] # PUxFuoqm

def search_movies(self):
quantity_360 = self.https + self.movie_id + self.q_360
quantity_720 = self.https + self.movie_id + self.q_720
self.processing_quantity(quantity_360, '360')
self.processing_quantity(quantity_720, '720')
return self.quantity_list

def processing_quantity(self, quantity, text):
res360 = requests.get(quantity, headers=self.user_agent)
if res360.status_code == 200:
self.quantity_list.append(text)

def uploads(self, list_uploads):
self.create_folder()
quantity = {
'360': self.https + self.movie_id + self.q_360,
'720': self.https + self.movie_id + self.q_720
}
for up in list_uploads:
res = requests.get(quantity[up], headers=self.user_agent)
with open(f"{os.getcwd()}/uploads/{up}_{quantity[up].split('/')[-1]}", 'wb') as f:
f.write(res.content)
return True

@staticmethod
def create_folder():
base_dir = os.getcwd()
list_dir = os.listdir(base_dir)
if 'uploads' not in list_dir:
try:
os.mkdir('uploads')
except OSError:
raise Exception("Uploads katalogini yaratib bo'lmadi, ruxsatni tekshiring")


if __name__ == "__main__":
parser = Parse('https://mover.uz/watch/PUxFuoqm/')
parser.uploads(parser.search_movies())

Rahmat: @alimanuz

@uzpythonlogs
#parsing #mover #videohavola #yuklabolish
1. Ikki sonning yig'indisi

Topshiriq:
Berilgan butun sonlar qatoridan shunday ikki sonning indekslarini qaytaringki, ularning yig'indisi berilgan songa teng bo'lsin.
Har bir elementni faqat bir marta ishlata olasiz!
Misol:
 raqamlar_qatori = [2, 7, 11, 15], berilgan_son = 9,
Chunki: raqamlar_qatori[0] + raqamlar_qatori[1] = 2 + 7 = 9,
Qaytadi: [0, 1].
Yechim:
 class Solution:
... def twoSum(self, nums, target):
... """
... :type nums: List[int]
... :type target: int
... :rtype: List[int]
... """
... for index, current_value in enumerate(nums):
... searching_value = target - current_value
... try:
... searching_value_index = nums.index(searching_value, index + 1)
... if not searching_value_index <= 0 and searching_value_index <= len(nums):
... return [index, searching_value_index]
... except ValueError:
... continue
...
>>> print(Solution().twoSum([1, 3, 4], 7))
[1, 2]

@uzpythonlogs
#algoritm #problem #solution #leetcode #contest #interview
Uz Python Dev Logs pinned Β«1. Ikki sonning yig'indisi Topshiriq: Berilgan butun sonlar qatoridan shunday ikki sonning indekslarini qaytaringki, ularning yig'indisi berilgan songa teng bo'lsin. Har bir elementni faqat bir marta ishlata olasiz! Misol: raqamlar_qatori = [2, 7, 11, 15]…»
Forwarded from Uz Python Meetup
Tez orada | БовсСм скоро | Very soon

πŸ‘‰ @UzPythonMeetup
1. from math import pi
print(pi)

2. import math
print(math.pi)

Savol:
1. 1 va 2 holat qanday farqi bor ?
2. Bir-biridan nima avfzalligi bor ?

Javoblarni komentariyada muhokama qilamiz!πŸ‘‡

πŸ‘‰ @uzpythonlogs
#discussion, #teamwork, #community, #faq
Channel name was changed to Β«Uz Python dev Logs | Stay at homeΒ»
This media is not supported in your browser
VIEW IN TELEGRAM
Dasturlash tillarini yillar davomida o'sishi

✌️ Python, ayniqsa oxirgi yillarda o'z o'rnini bermay kelayapti

πŸ‘‰ @uzpythonlogs