PyAutoGUI - это модуль Python для программного управления мышью и клавиатурой. Он также позволяет делать скриншоты. Для создания скриншота вам просто нужно вызвать функцию screenshot(). Это простой и быстрый способ сделать скриншот, но у него есть ограничения. Например, он не может делать скриншоты отдельных окон.
Пример кода на PyAutoGUI:
import pyautogui
# Создание скриншота
screenshot = pyautogui.screenshot()
# Сохранение скриншота в файл
screenshot.save("screenshot.png")
Pillow - это форк оригинальной библиотеки PIL (Python Imaging Library). Он предоставляет широкий функционал для работы с изображениями, включая создание скриншотов. Для этого используется метод ImageGrab.grab(). Он позволяет делать скриншоты всего экрана или его отдельных областей, но, как и PyAutoGUI, не может делать скриншоты отдельных окон.
Пример кода на Pillow:
from PIL import ImageGrab
# Создание скриншота
screenshot = ImageGrab.grab()
# Сохранение скриншота в файл
screenshot.save("screenshot.png")
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
📅 Продолжил пилить серию видосов по телеграм боту для расписания универа.
6️⃣ часть (думаю, что последняя) посвящена не скажу чему)) Посмотрите сами в видео!)
Лайк, коммент, критика приветствуется.
👌 Можете предлагать идеи для некст проектов.
👌 И было бы интересно выкинуть этого бота в прод и собрать аналитику, актуальный ли проект?
https://youtu.be/A1mMBsM61ec
Лайк, коммент, критика приветствуется.
https://youtu.be/A1mMBsM61ec
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Телеграм БОТ РАСПИСАНИЯ университета на Python | Подключаем РЕПОРТЫ | AIOgram FSM
В этом видео продолжаем создавать телеграм бота для расписания университета. Добавим возможность писать админу репорты, преддложения. Так же продолжаем работу с машиной состояний. Используем Python, библиотеку aiogram
👨💻 Подписывайся на наш телеграм канал!…
👨💻 Подписывайся на наш телеграм канал!…
❤2👍2
Функция object в Python не требует параметров при вызове. Она возвращает объект без функциональных особенностей, который не содержит полезных методов или атрибутов. Например, когда вы создаете объект x = object(), вызов dir(x) отобразит только базовые методы, которые являются стандартными для всех классов. Это связано с тем, что функция object является самым базовым типом.
x = object()
print(dir(x))
Функция object в Python обычно не используется для создания объектов, поскольку получаемый объект не имеет полезных методов. Однако она применяется в нескольких конкретных сценариях. Например, когда вам нужно создать нейтральный объект для сравнения, функция object оказывается полезной. Кроме того, она полезна, когда вы хотите реализовать истинное инкапсуляцию в Python.
В контексте наследования функция object имеет большое значение. В Python каждый класс происходит от класса object, что делает его базовым классом для всех других классов. Даже когда класс явно не наследуется от какого-либо класса, он неявно наследуется от класса object. Таким образом, функция object играет критическую роль в механизме наследования Python, предоставляя стандартные методы и атрибуты для всех классов.
class MyClass:
pass
print(issubclass(MyClass, object)) # Вернет True, поскольку каждый класс является подклассом object
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Библиотека
retrying не является встроенной библиотекой в Python, поэтому ее нужно установить отдельно. Команда pip install retrying должна быть выполнена в командной строке. После установки вы можете импортировать ее с помощью команды import retrying.Библиотека
retrying довольно проста в использовании. Основной функцией этой библиотеки является декоратор @retry, который мы можем применить к любой функции, которую мы хотим повторить. Это особенно полезно для задач, которые имеют шанс на отказ. Например, сетевые запросы могут потерпеть неудачу из-за временных сетевых проблем, и вместо того, чтобы сразу же терпеть неудачу, использование библиотеки retrying может позволить нашей программе попробовать снова. Простой пример будет выглядеть так:from retrying import retry
@retry
def make_network_request():
# код для выполнения сетевого запроса
В этом примере, если функция
make_network_request потерпит неудачу, она будет попробована снова благодаря декоратору @retry.Библиотека
retrying предлагает ряд преимуществ. Она позволяет создавать более надежный и устойчивый код, особенно при работе с операциями, которые могут время от времени терпеть неудачу. Она также предоставляет различные варианты управления поведением повтора, такие как установка максимального числа попыток, указание времени ожидания между попытками или даже использование пользовательских условий для повтора. Это дает нам большую гибкость для обработки различных сценариев и требований.https://pypi.org/project/retrying/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Гоу смотреть, оценивать, использовать)
https://youtu.be/kwFEeuzICjU
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
TELEGRAM BOT на PYTHON AIOgram | ЗАГРУЖАЕМ на СЕРВЕР | ХОСТИНГ
В этом видео мы создадим простого бота в телеграм на библиотеке Aiogram и загрузим его на хостинг. На этом сервере наш бот сможет постоянно работать.
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 ht…
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 ht…
👍7❤3
🤡8👍4🤔2
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Вызываем функцию rec, передавая туда значение 3.
Внутри функции идет проверка, где мы в return'e возвращаем результат n + новый вызов функции rec(n-1) —> rec(2)
Операция повторяется и мы возвращаем результат n + rec(n-1) —> n + rec(1)
Заходим заново в функцию и возвращаем n + rec(0) —> теперь после вызова сработает return 1, т.к. if проверяет что n==0.
После чего, идем замыкать рекурсию в обратную сторону.
n + rec(0) —> 1 + 1 —> 2
n + rec(1) —> 2 + 2 —> 4
n + rec(2) —> 3 + 4 —> 7
Внутри функции идет проверка, где мы в return'e возвращаем результат n + новый вызов функции rec(n-1) —> rec(2)
Операция повторяется и мы возвращаем результат n + rec(n-1) —> n + rec(1)
Заходим заново в функцию и возвращаем n + rec(0) —> теперь после вызова сработает return 1, т.к. if проверяет что n==0.
После чего, идем замыкать рекурсию в обратную сторону.
n + rec(0) —> 1 + 1 —> 2
n + rec(1) —> 2 + 2 —> 4
n + rec(2) —> 3 + 4 —> 7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Что выдаст код выше?
Anonymous Quiz
7%
True True True
37%
True True False
3%
False True False
7%
True False True
15%
True False False
17%
Не знаю
14%
❤️
❤5👎1
Модуль 'this' в Python - это встроенный модуль, который, когда импортируется, автоматически выводит 'The Zen of Python'. Это, по сути, набор правил и принципов, на которых строится разработка на Python. Они служат напоминанием о том, какой должна быть идеальная программа на Python, и хотя они не являются строгими правилами, они широко применяются и уважаются в сообществе Python.
Пример:
import this
После выполнения этого кода, вы увидите 'The Zen of Python' на вашем экране.
Попробуйте сами
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
https://www.youtube.com/watch?v=tXbmRlAvGUo
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Машина состояний FSM в AIOgram 3.x | Python Telegram Bot
В этом видео мы посмотрим, как работает Finite State Machine (FSM) машина состояний в Аиограм 3.
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 https://t.me/pythonhub_chat 🖇
😳 Полезные ссылки 😳
Echo…
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 https://t.me/pythonhub_chat 🖇
😳 Полезные ссылки 😳
Echo…
👍6
Бинарное дерево - это иерархическая структура данных, в которой каждый узел имеет не более двух потомков: левый и правый. В этом блоге мы рассмотрим, как создать бинарное дерево в Python.
В бинарном дереве узел является основным элементом. Каждый узел имеет данные и ссылки на левого и правого потомков. В Python мы можем создать узел, определив класс Node с инициализатором, который устанавливает данные и оба потомка.
Пример кода:
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
После того как узел определен, мы можем создать бинарное дерево. Начальный узел известен как корень. Мы создаем бинарное дерево, добавляя новые узлы в качестве левого или правого потомка корня или любого другого узла.
Пример кода:
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
Обход - это процесс посещения каждого узла в дереве. Существуют различные методы обхода, включая прямой (Preorder), симметричный (Inorder) и обратный (Postorder) обход. В Python мы можем реализовать эти методы с помощью рекурсии или стеков.
Пример кода для прямого обхода:
def preorder_traversal(root):
if root:
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4
Что выдаст код выше?
Anonymous Quiz
25%
С#
22%
"Python", "JavaScript", "C++", "Java"
18%
["Python", "JavaScript", "C++", "Java"]
13%
Python
7%
None
6%
Error
9%
Не знаю
👍9
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Немного затянулось, сорри.
Как вы знаете (или не знаете, тогда знайте) метод .pop удаляет элемент по индексу.
Т.е. если бы мы написали, my_list.pop(1), то элемент JavaScript бы удалился из списка.
Но а что, если мы не прокинули индекс? Тогда выбирается последний элемент. В нашем случае - c#
Но почему ответ - это не список без последнего элемента.
Все дело в том, что мы принтуем не список, а результат выполнения функции .pop. В свою очередь, функция .pop возвращает удаленный элемент (последний элемент) (( C# ))
Немного затянулось, сорри.
Как вы знаете (или не знаете, тогда знайте) метод .pop удаляет элемент по индексу.
Т.е. если бы мы написали, my_list.pop(1), то элемент JavaScript бы удалился из списка.
Но а что, если мы не прокинули индекс? Тогда выбирается последний элемент. В нашем случае - c#
Но почему ответ - это не список без последнего элемента.
Все дело в том, что мы принтуем не список, а результат выполнения функции .pop. В свою очередь, функция .pop возвращает удаленный элемент (последний элемент) (( C# ))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Модуль difflib в Python - это мощный инструмент, который помогает разработчикам сравнивать последовательности. Он особенно полезен для сравнения текстовых данных и нахождения различий между ними.
Функция get_close_matches() используется для поиска наиболее похожих вариантов в последовательности. Это полезно, например, при реализации системы автодополнения, где нужно предложить пользователю наиболее вероятные варианты на основе его ввода.
Например:
import difflib
words = ['кот', 'собака', 'кит', 'слон']
difflib.get_close_matches('кот', words)
В этом примере функция возвращает:
['кот', 'кит'].Функция ndiff() используется для сравнения двух последовательностей и выявления различий между ними. Она возвращает генератор, который производит строки, иллюстрирующие различия между последовательностями. Это полезно, например, при сравнении версий текстовых документов.
Например:
import difflib
str1 = "кот"
str2 = "кит"
diff = difflib.ndiff(str1, str2)
print('\\n'.join(diff))
В этом примере функция выводит:
к
- о
+ и
т
Функция SequenceMatcher() является более общей и мощной функцией, чем ndiff(). Она позволяет сравнивать любые две последовательности и определять степень их сходства.
Например:
import difflib
str1 = "кот"
str2 = "кит"
match = difflib.SequenceMatcher(None, str1, str2)
print(match.ratio())
В этом примере функция возвращает:
0.6666666666666666, что означает, что строки совпадают на 66.67%.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Метод .isnumeric() в Python используется для проверки, содержит ли строка только числа. Если все символы в строке являются числами, этот метод возвращает значение True. В противном случае возвращается False. Этот метод очень полезен при валидации ввода данных, когда вы хотите убедиться, что пользователь ввел только числа.
str1 = '12345'
print(str1.isnumeric()) # Вывод: True
str2 = '12345abc'
print(str2.isnumeric()) # Вывод: False
Метод .isalpha() в Python, с другой стороны, используется для проверки, содержит ли строка только буквы. Если все символы в строке являются буквами, этот метод возвращает значение True. В противном случае возвращается False. Этот метод также полезен при валидации ввода данных, когда вы хотите убедиться, что пользователь ввел только буквы.
str3 = 'abc'
print(str3.isalpha()) # Вывод: True
str4 = 'abc123'
print(str4.isalpha()) # Вывод: False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Телеграм БОТ РАСПИСАНИЯ университета на Python | Админка, Статистика, Рассылка, ХОСТИНГ | AIOgram
В этом видео продолжаем создавать телеграм бота для расписания университета. Добавим возможность смотреть, сколько пользователей в боте, делать рассылку, а так же выложим на сервер нашего бота.
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001…
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001…
👍3
BST - это древовидная структура данных, в которой каждый узел имеет максимум два потомка. Основное свойство BST заключается в том, что каждый узел на большее значение, чем все узлы в его левом поддереве и на меньшее значение, чем все узлы в его правом поддереве. Этот уникальный атрибут делает BST идеальным для быстрого поиска данных.
class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
def insert(root, key):
if root is None:
return Node(key)
else:
if root.val < key:
root.right = insert(root.right, key)
else:
root.left = insert(root.left, key)
return root
def inorder(root):
if root:
inorder(root.left)
print(root.val),
inorder(root.right)
r = Node(50)
r = insert(r, 30)
r = insert(r, 20)
r = insert(r, 40)
r = insert(r, 70)
r = insert(r, 60)
r = insert(r, 80)
inorder(r)
В этом примере мы создаем BST с помощью Python. Мы определяем класс Node, который представляет узел в BST. Затем мы определяем функции для вставки нового узла и для обхода BST.
BST имеют множество преимуществ, благодаря которым они широко используются. Они позволяют быстро осуществлять поиск, вставку и удаление данных. Однако BST также имеют некоторые недостатки. Например, если дерево не сбалансировано, время поиска может увеличиться.
То есть, по сути, это сортированное дерево, поиск в котором легко выполнить, из-за того, что оно упорядочено.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Многопоточность - это метод, который позволяет коду выполняться параллельно. Это означает, что два или более куска кода могут работать одновременно, что делает обработку данных более эффективной. В Python для создания многопоточных программ можно использовать модуль threading. При использовании этого модуля, каждый цикл будет работать в своем собственном потоке, что позволяет им работать одновременно.
Для создания двух одновременно работающих циклов вам потребуется создать два потока. Каждый поток будет выполнять свой собственный цикл. Вот пример того, как это может выглядеть:
import threading
import time
def loop1():
for i in range(10):
print('Loop 1:', i)
time.sleep(1)
def loop2():
for i in range(10):
print('Loop 2:', i)
time.sleep(1)
thread1 = threading.Thread(target=loop1)
thread2 = threading.Thread(target=loop2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()import threading
import time
def loop1():
for i in range(10):
print('Loop 1:', i)
time.sleep(1)
def loop2():
for i in range(10):
print('Loop 2:', i)
time.sleep(1)
thread1 = threading.Thread(target=loop1)
thread2 = threading.Thread(target=loop2)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
В этом примере два цикла выполняются одновременно, каждый в своем собственном потоке.
Попробуйте скопировать и проверить у себя самостоятельно!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2