[*] pr0gramm1ng basics
24 subscribers
50 photos
11 videos
20 files
41 links
Обзор различных кодов и импортируемых библиотек, информация об обновлениях и многое другое у меня на канале.
Download Telegram
Forwarded from Roblox
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
2 день разработки консоли

Сегодня я добавил новые команды. В частности это команды для получения информации о своём компьютере и добавил немного математики. Также добавил фановые команды (бросок кубика и прокрутка барабана). Планирую написать мини приложение на customTkinter для запуска этой консоли (возможно перепишу его на PyQt6, когда изучу). Пока что всё....
Тренируем мозги с задачами по ML и AI.

Я сам по ним учусь

Два незаменимых ресурса для практики в машинном обучении и нейросетях:

▶️ Deep-ML — задачи по линейной алгебре, машинному и глубокому обучению. Подходит для постепенного погружения.

▶️ Tensorgym — упражнения разного уровня сложности, чтобы закрепить теорию и прокачать практику.

Идеально подойдёт, если хотите подтянуть навыки и разобраться в тонкостях ML
Превращаем текст в голос!

Устанавливаем библиотеку:
pip install gTTS


Импортируем класс gTTS модуля gtts и os:
from gtts import gTTS
import os


Задаём текст для озвучки:
text = "Привет! Этот текст превращается в голос."


Создаём объект gTTS с русским языком:
tts = gTTS(text=text, lang="ru")


Сохраняем аудио в файл:
tts.save("voice.mp3")


Воспроизводим результат в зависимости от ОС:
os.system("start voice.mp3")  # Windows
# os.system("open voice.mp3") # macOS
# os.system("xdg-open voice.mp3") # Linux


🔥 Запускаем скрипт и текст превращается в голос, готовый к прослушиванию.
1
Превращаем текст в баннер с помощью pyfiglet

С помощью библиотеки pyfiglet на python можно преобразовать слово в ASCII-арт или в баннер для своих проектов.

Как работает эта библиотека

У неё есть много .fig файлов, из которых она достаёт ASCII-текст и собирает из них слово.

Установка pyfiglet:

pip install pyfiglet

Самый простой пример программы для преобразования текста с помощью figlet_format:

import pyfiglet

text = 'Hello'
art = pyfiglet.figlet_format(text)
print(art)

Пример вывода этой программы:

_   _      _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/

Вот ещё один пример с ручным указанием шрифта с помощью Figlet. По умолчанию standart

import pyfiglet 

fig = pyfiglet.Figlet(font='slant')
art = fig.renderText('Hello')
print(art)

Вот вывод программы:

    __  __     ____
/ / / /__ / / /___
/ /_/ / _ \/ / / __ \
/ __ / __/ / / /_/ /
/_/ /_/\___/_/_/\____/

Как узнать сколько шрифтов доступно в pyfiglet

Вот небольшая программа для того чтобы узнать сколько шрифтов поддерживает ваша версия pyfiglet:

import pyfiglet

# Получить список всех доступных шрифтов
all_fonts = pyfiglet.FigletFont.getFonts()

print(f"Всего доступно шрифтов: {len(all_fonts)}")
print("Все шрифты")
for i, font in enumerate(all_fonts[:len(all_fonts)], 1):
print(f"{i:2d}. {font}")
1❤‍🔥1🤩1🕊1
Модуль atexit в python 🐍

Модуль atexit позволяет запустить какие-либо функции, которые будут выполнены при нормальном завершении программы

Этот модуль не надо устанавливать так как он встроен в python 🐍

Вот пример того как использовать модуль atexit в программах:

import atexit

def cleanup_function():
print("Выполняется очистка...")

# Регистрация функции
atexit.register(cleanup_function)

def square_number(n):
return n**2

nums = [1, 2, 3, 4, 5]
print(list(map(square_number, nums)))

После выполнения этой программы корректно, то функция cleanup_function() выполнится.

Вот что выведется в терминале:

[1, 4, 9, 16, 25]
Выполняется очистка...

Также уже зарегистрированную функцию можно отклонить регистрацию функции:

import atexit

def cleanup_function():
print("Выполняется очистка...")

# Регистрация функции
atexit.register(cleanup_function)

def square_number(n):
return n**2

nums = [1, 2, 3, 4, 5]
print(list(map(square_number, nums)))

#Отклонение регистрации функции
atexit.unregister(cleanup_function)

Таким образом в терминале последняя функция выводится не будет:

[1, 4, 9, 16, 25]

Также функцию atexit.register можно использовать как декоратор для функции:

import atexit

@atexit.register #Регистрация с помощью декоратора
def cleanup_function():
print("Выполняется очистка...")

def square_number(n):
return n**2

nums = [1, 2, 3, 4, 5]
print(list(map(square_number, nums)))

Выведет в терминал:

[1, 4, 9, 16, 25]
Выполняется очистка...

Я думаю что эта библиотека довольно полезная. Например можно после выполнении программы очищать программу от ненужных файлов, которые были созданы при выполнении программы
🔥1
Библиотека notify-py в python 🐍

С помощью этой библиотеки вы сможете получать сообщения python как от системы

Установка notify-py:

pip install notify-py

Настройка сообщения от системы:

from notifypy import Notice 

notification = Notice() #создаём объект сообщение

notification.title = 'Готово' #Ставим название сообщение
notification.message = 'Скрипт выполнен...' #Указываем текст сообщения

notification.send() #отправляем сообщение

На фото изображено как будет выглядеть сообщение от этой программы

Эту библиотеку можно использовать для визуализации выполнения программы. Например при удачном выполнении программы будет выводится "Программа выполнена успешно..", а при неудачном "Программа была выполнена некорректно.."
Моржовый оператор в python 🐍

Этот оператор позволяет присваивать значение переменной внутри выражения. Он появился в Python 3.8

Например, выражение без моржового оператора:

user_id = 1
if user_id == 1:
print(user_id)

Тот же код с использованием моржового оператора:

if (user_id := 1) == 1:
print(user_id)

Пример с использованием циклов.

1️⃣ пример:

for num in (nums := [1, 2, 3, 4, 5]).copy():
nums.append(num**2)
nums.pop(0)
print(nums)

2️⃣ пример:

nums =  [1, 2, 2, 3, 2, 28, 19, 2]
while (num := 2) in nums:
print(nums)
nums.pop(0)

Этот оператор при правильном использовании сделает ваш код чище и меньше
Детекция лиц на изображении в python 🐍

RetinaFace - библиотека для обнаружения лиц на изображении. Она определяет лицо по 5 ключевым точкам (landmarks) - это нос, правый глаз, левый глаз, правый уголок рта и левый уголок рта.

С помощью этой библиотеки можно определять сколько человек изображено на изображении (видео).

⚡️ Установка ⚡️:

pip install retina-face

Какие интересные проекты можно сделать с помощью этой библиотеки:

1️⃣. Сколько лиц на изображении в тг боте (или без бота)
2️⃣. Сколько лиц на видео в реальном времени (с помощью cv2)
3️⃣. Определение настроения (подставлять смайлик по выражению лица 😊) с помощью ключевых точек (landmarks)

С помощью этой библиотеки можно работать с компьютерным зрением. Работает библиотека стабильно на версии Python 3.8
🤩1
[*] pr0gramm1ng basics
Photo
Сделал небольшой код на python 🐍 с использованием библиотеки RetinaFace 😶

Вот сам код:

from retinaface import RetinaFace
import cv2

path_to_file = 'image_1.png' # путь к файлу на вашем пк

image = cv2.imread(path_to_file) # открываем файл

if image is None:
raise FileNotFoundError(f"Не удалось загрузить изображение: {image}")

resp = RetinaFace.detect_faces('image_1.png') # считываем лица

if isinstance(resp, dict): # есть ли лица на фото
for face_id, face_info in resp.items(): # из словаря достаёём значения для построения квадрата на лицо
facial_area = face_info["facial_area"]
x1, y1, x2, y2 = facial_area

cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 0), 2) # отображаем квадрат

cv2.imwrite("output_image_path.png", image) # сохраняем
print(f"Изображение с обнаруженными лицами сохранено как: output_image_path.png")


В коде есть небольшое объяснение, но немного поясню сам. Метод detect_faces возвращает список словарей:

{
"face_1": {
"score": 0.999,
"facial_area": [x1, y1, x2, y2],
"landmarks": {
"left_eye": [x, y],
"right_eye": [x, y],
"nose": [x, y],
"mouth_left": [x, y],
"mouth_right": [x, y]
}
},
"face_2": {
"score": 0.987,
"facial_area": [x1, y1, x2, y2],
"landmarks": { ... }
},
...
}


Здесь score - это уверенность (насколько модель уверена, что на изображении есть лицо), facial_area - координаты ограничивающего прямоугольника: [x1, y1, x2, y2], где: (x1, y1) — верхний левый угол, (x2, y2) — нижний правый угол, landmarks - ключевые точки (нос, правый уголок рта, левый уголок рта, правый глаз, левый глаз).

⚡️ Что делает программа: указываешь путь к файлу (обязательно изображение) и программа на этом изображении ищет лица и прикрепляет к ним квадраты. На фотографиях есть изображение до обработки и после ⚡️
🔥1
[*] pr0gramm1ng basics
Photo
Библиотека Tensorflow на python 🐍

Tensorflow - мощный фреймворк с открытым исходным кодом для машинного обучения и разработки нейросетей, разработанный компанией Google.

Установка:

pip install tensorflow 

Также в этой библиотеке есть встроенный API Keras. Он полностью интегрирован в Tensorflow.

🤖 Пример нейросети на Tensorflow:

import tensorflow as tf #импортируем

# 1. Загрузка данных (встроенный датасет)
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # Нормализация

# 2. Построение модели
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)), # Сглаживаем изображение 28x28 в вектор
tf.keras.layers.Dense(128, activation='relu'), # Полносвязный слой на 128 нейронов
tf.keras.layers.Dropout(0.2), # Регуляризация для борьбы с переобучением
tf.keras.layers.Dense(10) # Выходной слой на 10 классов (цифры 0-9)
])

# 3. Компиляция модели
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])

# 4. Обучение модели
model.fit(x_train, y_train, epochs=5)

# 5. Оценка качества
model.evaluate(x_test, y_test, verbose=2)

Для каких задач чаще всего используется Tensorflow:

1. Компьютерное зрение (Computer Vision). Например библиотека Mediapipe.

2. Обработка естественного языка. Например, определение тональности (NLTK + Tensorflow), машинный перевод (Tensorflow + Transformers (Hugging Face)), генерация текста (чат-боты)

3. Обработка звука и речи (Tensorflow Audio или Tensorflow + Librosa)

🔥 Щас на этой библиотеке я работаю над созданием своей нейросети. Она будет распознавать цифры, который я ей написал. Вчера 5 часов делал датасет и переобучил нейросеть. Сегодня придётся новый делать, поэтому не знаю когда дам её код. Стабильно библиотека работает на версии Python 3.8 🔥
MyFirstNeiro.rar
2.8 MB
Сделал свою нейросеть на python 🐍 при помощи библиотеки TensorFlow 🔥

Скрипты писал меньше часа, а саму нейросеть обучал почти 2 дня (методом проб и ошибок).

Так вот, что она делает?

🤖 Моя нейросеть умеет распознавать цифры 0-9. Обучена на данных MNIST (также сделал скрипты для создания своего датасета для моей нейросети).

Зависимости:

- TensorFlow (версия: 2.13.0)
- NumPy (версия: 1.24.3)
- Pillow (версия: 10.4.0)
- Pygame (версия: 2.6.1)

Нейросеть зовут - Овощ 🍆 (ну просто она реально овощ). Версия Python 3.8

GitHub репозиторий: my_first_neiro
👍1
Библиотека PyUSB в python 🐍

Это библиотека нужна для работы с USB устройствами (не всеми). Она является низкоуровневой и самой распространенной библиотекой для работы с USB. Эта библиотека поддерживается на Windows, Linux и MacOs (кроссплатформенная).

Пример кода на PyUSB:

import usb.core
import usb.util

# Найти устройство по VID и PID
dev = usb.core.find(idVendor=0x1234, idProduct=0x5678)

if dev is None:
raise ValueError("Устройство не найдено")

# Установить конфигурацию
dev.set_configuration()

# Отправить данные
dev.write(1, b'Hello USB')

Что такое PID и VID?

PID (Product id) - это идентификатор продукта. Он придумывается производителем для какого-либо устройства

VID (Vendor id) - это идентификатор производителя. Он назначается организацией USB-IF (официальная ассоциация USB)

👉 Вместе VID и PID полностью идентифицируют конкретную модель устройства

Вот пример кода для того чтобы узнать VID, PID и название продукта (product):

import usb.core

for dev in usb.core.find(find_all=True):
print(hex(dev.idVendor), hex(dev.idProduct), dev.product)

Есть конечно и библиотеки получше, чем PyUSB (например, hidapi (или hid), pyserial), но пока что решил рассказать про неё

Документация 👉 PyUSB 👈
Превращаем голос в текст 🔥

Чтобы перевести голос в текст в python можно воспользоваться библиотекой speech_recognition.

Speech_recognition - библиотека для распознавания речи в python. Она поддерживает несколько движков и API

Установка:

pip install SpeechRecognition
# Для работы с микрофоном
pip install pyaudio

Пример с обработкой звука из микрофона:

import speech_recognition as sr

# Создаем распознаватель
recognizer = sr.Recognizer()

def recognize_speech():
with sr.Microphone() as source:
print("Скажите что-нибудь...")

# Настройка для уменьшения шума
recognizer.adjust_for_ambient_noise(source, duration=1)

# Запись аудио
audio = recognizer.listen(source, timeout=5)

# Распознавание через Google
text = recognizer.recognize_google(audio, language="ru-RU")
print(f"Вы сказали: {text}")

recognize_speech()

В этом примере мы используем эту библиотеку для распознавания записанной нами речи через микрофон.

Эта библиотека также поддерживает работу с файлами (перевод звуков из файла в текст):

import speech_recognition as sr

def recognize_from_file(filename):
recognizer = sr.Recognizer()

with sr.AudioFile(filename) as source:
# Чтение всего аудиофайла
audio = recognizer.record(source)

text = recognizer.recognize_google(audio, language="ru-RU")
return text

# Использование
result = recognize_from_file("audio.wav")
print(result)

Эта библиотека подходит для распознавания голоса и его перевода в текст, но чаще всего используют другие библиотеки, но для начала её хватит
Библиотека socket в python 🐍

Socket - это библиотека для обмена данными между компьютерами. С её помощью можно установить соединение какого-либо компьютера (клиента) к другому компьютеру (серверу) и по сети передавать данные. Эта библиотека кроссплатформенная (подходит для Linux, Windows, MacOs). Также она поддерживает различные протоколы (TCP, UPD, RAW сокеты).

Пример кода клиента:

import socket

def start_client():
# создаём объект сокета с TCP подключением к IPv4
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# подключаем клиента к серверу
client_socket.connect(('localhost', 12345))

message = "Привет, сервер!"
# отправляем сообщение серверу
client_socket.sendall(message.encode())
# получаем ответ от сервера
response = client_socket.recv(1024)
print(f"Ответ сервера: {response.decode()}")
# закрываем сокет
client_socket.close()

if __name__ == "__main__":
start_client()

Пример сервера с socket:

import socket

def start_server():
# создаём объект сокета для сервера с TCP подключением и IPv4
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# привязываем к адресу и порту server_socket.bind(('localhost', 12345))
# слушаем
server_socket.listen(1)
print("Сервер запущен...")

while True:
# принимаем подключение клиента
client_socket, addr = server_socket.accept()
print(f"Подключен клиент: {addr}")
# получаем данные от клиента
data = client_socket.recv(1024)
print(f"Получено: {data.decode()}")

# Отправляем данные обратно
client_socket.sendall(data)
client_socket.close()

if __name__ == "__main__":
start_server()

Семейства адресов, которые может использовать socket:

1. Socket.AF_INET - это IPv4

2. Socket.AF_INET6 - это IPv6

3. Socket.AF_UNIX - это UNIX-сокеты

Типы сокетов:

1. Socket.SOCK_STREAM - TCP (надёжный, с установкой соединения)

2. Socket.SOCK_DGRAM - UPD (ненадёжный, без соединения)

С помощью библиотеки socket можно реализовать простейший мессенджер в консоли, чтобы обмениваться информацией с клиентом и сервером
hand.py
4.3 KB
Программа на Mediapipe для распознавания 7 жестов рук (палец вверх/вниз, ножницы, бумага, камень, рок 🤟, указательный палец вверх)

Требования 🛠️

- Python 3.10
- MediaPipe
- NumPy
- OpenCV

Также этот скрипт есть на моём 👉 GitHub 👈 с зависимостями