Kodduu Python
1.07K subscribers
317 photos
28 videos
191 links
Научись программировать на Python на интересных примерах

Самый быстрый курс https://stepik.org/a/187914
Самый нескучный курс https://stepik.org/a/185238

Во вопросам сотрудничества: @AlexErf
Download Telegram
Давайте рассмотрим библиотеку imagehash. Эта библиотека позволяет вычислять "хэши" изображений, что может быть полезно для определения похожих изображений без сравнения каждого пикселя.

1. Установка:

bash
pip install ImageHash


2. Пример использования:

Вычисление хэша для изображения:

python
from PIL import Image
import imagehash

# Открытие изображения
image_path = "path_to_your_image.jpg"
image = Image.open(image_path)

# Вычисление dHash
hash_val = imagehash.dhash(image)

print(hash_val)


Этот код вычисляет dHash изображения и выводит его значение. Вы можете сравнить хэши различных изображений, чтобы определить, насколько они похожи. Если хэши совпадают или очень близки, это может указывать на схожесть изображений.

Эта библиотека полезна для поиска дубликатов изображений, группировки похожих изображений или даже для простого сжатия изображений в базе данных, сохраняя только их хэши вместо полных изображений.

Подпишись 👉🏻 @KodduuPython 🤖
11
Давайте рассмотрим библиотеку fortuna.

fortuna — это генератор случайных чисел и утилита для монте-карло, которая основана на методе зиггурата для более быстрой генерации случайных чисел по сравнению с стандартной библиотекой Python.

1. Установка:

bash
pip install fortuna


2. Пример использования:

python
import fortuna

# Генерация случайного целого числа от 1 до 100
random_int = fortuna.randint(1, 100)
print(f"Random integer: {random_int}")

# Генерация случайного числа с плавающей запятой от 0 до 1
random_float = fortuna.random()
print(f"Random float: {random_float}")

# Генерация случайного булева значения
random_bool = fortuna.boolean()
print(f"Random boolean: {random_bool}")

# Выбор случайного элемента из списка
sample_list = ["apple", "banana", "cherry"]
choice = fortuna.choice(sample_list)
print(f"Random choice from list: {choice}")


Эти примеры показывают, как можно использовать fortuna для генерации различных случайных значений. Библиотека предлагает быструю генерацию случайных чисел, которая может быть полезной в некоторых приложениях, требующих интенсивной генерации случайных чисел.

Подпишись 👉🏻 @KodduuPython 🤖
👍2
Давайте рассмотрим библиотеку под названием colorthief.

colorthief позволяет извлекать главный цвет или палитру цветов из изображения. Это может быть полезно для создания цветовых схем на основе изображений или для анализа доминирующих цветов в наборе данных изображений.

1. Установка:

bash
pip install colorthief


2. Пример использования:

python
from colorthief import ColorThief

color_thief = ColorThief('path_to_your_image.jpg')

# Получить главный цвет изображения
dominant_color = color_thief.get_color(quality=1)
print(f"Dominant color: {dominant_color}")

# Получить палитру цветов из изображения
color_palette = color_thief.get_palette(color_count=6)
print(f"Color palette: {color_palette}")


В этом коде get_color() возвращает доминирующий цвет изображения, в то время как get_palette() возвращает список цветов, представляющих основные оттенки изображения.

Эта библиотека особенно полезна для дизайнеров, аналитиков данных или разработчиков, работающих с визуализацией данных, где требуется соответствие цветовым схемам основанным на изображениях.

Подпишись 👉🏻 @KodduuPython 🤖
Поговорим о библиотеке tinytag.

tinytag — это библиотека для чтения мета-информации музыкальных файлов и видео. С её помощью можно извлекать такую информацию, как исполнитель, название трека, альбом, продолжительность и другие.

1. Установка:

bash
pip install tinytag


2. Пример использования:

python
from tinytag import TinyTag

tag = TinyTag.get('path_to_your_audio_or_video_file.mp3')

print('Artist:', tag.artist)
print('Album:', tag.album)
print('Title:', tag.title)
print('Track Number:', tag.track)
print('Genre:', tag.genre)
print('Duration in seconds:', tag.duration)


Этот код извлекает и выводит основную мета-информацию из аудиофайла.

tinytag поддерживает множество форматов аудио и видео, включая MP3, OGG, OPUS, WMA, FLAC, WAV и многие другие.

Эта библиотека особенно полезна для разработчиков, работающих над приложениями для управления музыкальными коллекциями или анализа медиа-контента.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим библиотеку pyfiglet.

pyfiglet преобразует текст в ASCII-искусство с использованием шрифтов в стиле "figlet". Это может быть веселым и интересным способом представить текст в командной строке или других текстовых интерфейсах.

1. Установка:

bash
pip install pyfiglet


2. Пример использования:

python
import pyfiglet

ascii_art = pyfiglet.figlet_format("Hello, World!", font="slant")
print(ascii_art)


Когда вы запустите этот код, вы увидите слова "Hello, World!" в стилизованном виде, созданном с использованием шрифта "slant".

Вы можете использовать разные шрифты, которые доступны в pyfiglet. Чтобы узнать список доступных шрифтов, используйте:

python
import pyfiglet

fonts = pyfiglet.Figlet().getFonts()
print(fonts)


Эта библиотека идеально подходит для создания впечатляющих заголовков или логотипов в текстовых интерфейсах или для добавления небольшой изюминки в ваши скрипты и приложения.

Подпишись 👉🏻 @KodduuPython 🤖
Рассмотрим библиотеку faker.

faker — это библиотека для генерации большого количества фиктивных данных: имен, адресов, телефонных номеров, текстов и многого другого. Это может быть очень полезно при написании тестов, наполнении базы данных тестовыми данными или в любых других ситуациях, где требуется реалистичная, но не настоящая информация.

1. Установка:

bash
pip install faker


2. Пример использования:

python
from faker import Faker

fake = Faker()

print("Name:", fake.name())
print("Address:", fake.address())
print("Email:", fake.email())
print("Text:", fake.text())
print("Date of Birth:", fake.date_of_birth())

# Если вы хотите данные на конкретном языке:
fake_ru = Faker('ru_RU')
print("Russian Name:", fake_ru.name())


С помощью faker можно генерировать огромное количество разных типов данных. В библиотеке также предусмотрена локализация, что позволяет получать данные, соответствующие различным языкам и культурам.

Это чрезвычайно полезная утилита для разработчиков, тестировщиков и аналитиков данных.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим библиотеку asciimatics.

asciimatics — это библиотека для создания текстовых пользовательских интерфейсов и анимаций в терминале. Это позволяет разработчикам создавать красочные интерфейсы, анимации и визуализации, работающие в любом стандартном текстовом терминале.

1. Установка:

bash
pip install asciimatics


2. Пример использования:

Создадим простую анимацию "звездного неба":

python
from asciimatics.effects import Stars
from asciimatics.renderers import ColourImageFile
from asciimatics.scene import Scene
from asciimatics.screen import Screen

def demo(screen):
effects = [
Stars(screen, (screen.width + screen.height) // 2)
]
screen.play([Scene(effects, -1)], stop_on_resize=True)

Screen.wrapper(demo)


Запустив этот код, вы увидите анимированное звездное небо в вашем терминале.

asciimatics предоставляет множество других эффектов, виджетов и утилит, которые позволяют создавать разнообразные текстовые интерфейсы и визуализации. Библиотека идеально подходит для создания терминальных приложений с интерактивным пользовательским интерфейсом или для простых текстовых анимаций.

Подпишись 👉🏻 @KodduuPython 🤖
👍2
Рассмотрим библиотеку art.

art позволяет генерировать текстовое искусство в различных стилях, а также предоставляет набор символьных изображений.

1. Установка:

bash
pip install art


2. Пример использования:

python
import art

# Создание текстового искусства
text_art = art.text2art("Hello")
print(text_art)

# Создание символьного изображения
symbol_art = art.art("butterfly")
print(symbol_art)

# Получение списка всех доступных стилей и изображений
all_fonts = art.get_fonts()
all_arts = art.ART_NAMES
print("Available fonts:", all_fonts)
print("Available arts:", all_arts)


С помощью art можно быстро и легко добавить стилизованный текст или символьные изображения в ваши консольные приложения, создавая интересное и уникальное визуальное представление.

Подпишись 👉🏻 @KodduuPython 🤖
👍2
В Python множество интересных и редких библиотек, которые можно использовать для создания уникальных проектов. В этом примере мы будем использовать библиотеку sh для работы с системными командами и art для генерации ASCII-артов.

Убедитесь, что у вас установлены обе библиотеки перед тем как запускать пример кода:

bash
pip install sh art


Теперь создадим небольшой скрипт, который генерирует ASCII-арт из текста, а затем отображает его в терминале, используя команду cat.

python
import sh
from art import *

def display_ascii_art(text):
ascii_art = text2art(text, "block", chr_ignore=True)
with open('ascii_art.txt', 'w') as file:
file.write(ascii_art)
sh.cat('ascii_art.txt')

if __name__ == "__main__":
text = input("Введите текст для генерации ASCII-артов: ")
display_ascii_art(text)


Теперь, когда вы запустите этот скрипт и введете какой-то текст, он создаст файл ascii_art.txt с ASCII-артом вашего текста и отобразит его в терминале.

Примечание: Этот пример более интересен в Unix-подобных системах, так как библиотека sh позволяет вам взаимодействовать с системными командами прямо из Python. Библиотека art также весьма забавная и может быть использована для создания ASCII-артов для различных целей.

Подпишись 👉🏻 @KodduuPython 🤖
В этот раз мы воспользуемся библиотекой pyforest, которая позволяет лениво импортировать множество популярных библиотек Python, и библиотекой pandas_alive, которая предназначена для создания анимированных визуализаций.

Сначала установите нужные библиотеки, выполнив команду:

bash
pip install pyforest pandas_alive


Теперь создадим пример скрипта, который создает анимированный барплот из датасета:

python
import pyforest
import pandas_alive

# Импортируем данные
data_url = 'https://github.com/jackparmer/animated-bar-charts/raw/master/minard/cities.csv'
cities = pd.read_csv(data_url)

# Обработка данных для создания анимированной визуализации
cities['date'] = pd.to_datetime(cities['date'])
cities.set_index('date', inplace=True)

# Создание анимированного барплота
animated_barplot = cities.plot_animated(filename='animated_barplot.gif')

# Если хотите просмотреть анимацию в Jupyter Notebook
# animated_barplot


В этом примере мы импортируем данные из URL-адреса с помощью библиотеки pandas, преобразуем столбец даты в datetime объект, устанавливаем его в качестве индекса, и затем создаем анимированный барплот с помощью pandas_alive. Результат сохраняется в файл animated_barplot.gif.

Этот пример хорошо демонстрирует, как можно создать анимированную визуализацию данных с помощью некоторых специализированных библиотек Python.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим ещё один интересный пример, используя библиотеку pydub для работы с аудиофайлами и speech_recognition для распознавания речи.

Сначала установите нужные библиотеки:

bash
pip install pydub SpeechRecognition


Для работы pydub вам также понадобится установить ffmpeg. После установки библиотек, воспользуйтесь следующим скриптом, чтобы конвертировать аудиофайл в текст:

python
from pydub import AudioSegment
import speech_recognition as sr

def audio_to_text(audio_file):
audio = AudioSegment.from_file(audio_file)
audio = audio.set_frame_rate(16000).set_channels(1) # Устанавливаем частоту дискретизации и количество каналов для распознавания речи

temp_file = "temp.wav"
audio.export(temp_file, format="wav")

recognizer = sr.Recognizer()
with sr.AudioFile(temp_file) as source:
audio_data = recognizer.record(source)
try:
text = recognizer.recognize_google(audio_data)
print(f"Распознанный текст: {text}")
except sr.UnknownValueError:
print("Google Speech Recognition не смог распознать аудио")
except sr.RequestError as e:
print(f"Не удалось запросить результаты у службы Google Speech Recognition; {e}")

if __name__ == "__main__":
audio_file = "your_audio_file.mp3" # замените на путь к вашему аудиофайлу
audio_to_text(audio_file)


В этом примере:
1. Мы используем pydub для загрузки аудиофайла и преобразования его параметров к формату, который подходит для speech_recognition.
2. Экспортируем аудио во временный файл формата wav.
3. Используем speech_recognition для распознавания речи из аудиофайла и вывода распознанного текста на экран.

Заметьте, что для успешного выполнения данного примера вам потребуется иметь доступ в Интернет, так как speech_recognition использует Google Web Speech API для распознавания речи.

Подпишись 👉🏻 @KodduuPython 🤖
3
В этот раз давайте рассмотрим пример кода с использованием библиотеки PyMuPDF для работы с PDF-файлами и pyttsx3 для преобразования текста в речь (TTS).

Сначала установите нужные библиотеки:

bash
pip install PyMuPDF pyttsx3


Теперь давайте создадим скрипт, который будет читать PDF-файл и преобразовывать его в аудио:

python
import pyttsx3
import PyMuPDF

def read_pdf_to_audio(pdf_path):
pdf_document = PyMuPDF.open(pdf_path)
engine = pyttsx3.init()

for page_number in range(len(pdf_document)):
page = pdf_document.loadPage(page_number)
page_text = page.getText()
engine.say(page_text)
engine.runAndWait()

pdf_document.close()
engine.stop()

if __name__ == "__main__":
pdf_path = "example.pdf" # Путь к вашему PDF-файлу
read_pdf_to_audio(pdf_path)


В этом скрипте:
1. Мы открываем PDF-файл с помощью библиотеки PyMuPDF.
2. Инициализируем движок TTS (Text-to-Speech) с помощью pyttsx3.
3. Проходимся по каждой странице PDF-файла, извлекаем текст с помощью метода getText и используем pyttsx3, чтобы прочитать его вслух.
4. Закрываем PDF-файл и останавливаем движок TTS после прочтения всего документа.

Этот пример показывает, как можно комбинировать различные библиотеки Python для создания интересных и полезных приложений, таких как автоматический синтез речи из PDF-файлов.

Подпишись 👉🏻 @KodduuPython 🤖
2
В этот раз давайте рассмотрим пример с использованием библиотеки streamlit для создания простого веб-приложения и beautifulsoup4 для парсинга HTML.

Установим нужные библиотеки:

bash
pip install streamlit beautifulsoup4 requests


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

python
import streamlit as st
import requests
from bs4 import BeautifulSoup

def fetch_headlines(url):
response = requests.get(url)
if response.status_code != 200:
st.write(f"Failed to retrieve the page: {response.status_code}")
return []

soup = BeautifulSoup(response.text, 'html.parser')
headlines = [item.text for item in soup.find_all('h1')]
return headlines

st.title("Headline Fetcher")

url = st.text_input("Enter a URL:", "https://example.com")

if url:
headlines = fetch_headlines(url)
if headlines:
st.write("Headlines:")
for idx, headline in enumerate(headlines, 1):
st.write(f"{idx}. {headline}")
else:
st.write("No headlines found.")

if __name__ == "__main__":
st.run()


Для запуска вашего веб-приложения, сохраните код в файле, например, app.py, и запустите его с помощью команды:

bash
streamlit run app.py


После запуска откройте указанный в терминале URL-адрес в своем веб-браузере. Вы увидите текстовое поле для ввода URL. Введите URL веб-сайта, и приложение извлечет и отобразит все заголовки (элементы h1) с этого веб-сайта.

Этот пример показывает, как можно создать простое веб-приложение для парсинга веб-страниц с использованием streamlit и beautifulsoup4.

Подпишись 👉🏻 @KodduuPython 🤖
1
Возможно, вы захотите узнать о каких-то менее известных, но полезных библиотеках Python. Примером может служить библиотека geopy, которая используется для выполнения географических расчетов. Ниже приведен пример кода, который использует geopy для расчета расстояния между двумя городами:

python
from geopy.distance import geodesic

# Координаты городов (широта, долгота)
moscow_coords = (55.7558, 37.6176)
new_york_coords = (40.7128, -74.0060)

# Рассчитываем расстояние между Москвой и Нью-Йорком
distance = geodesic(moscow_coords, new_york_coords).kilometers

print(f"Расстояние между Москвой и Нью-Йорком составляет {distance:.2f} километров.")


Данный скрипт рассчитает и выведет расстояние между Москвой и Нью-Йорком. Библиотека geopy предоставляет простой и эффективный способ работы с географическими данными в Python.

Подпишись 👉🏻 @KodduuPython 🤖
1
Вот пример использования библиотеки textblob, которая может быть полезной для обработки текста и анализа настроения. В этом примере мы используем textblob для определения полярности и субъективности текста:

python
from textblob import TextBlob

# Некоторый текст для анализа
text = """Python is an amazing programming language.
I love working on projects using Python!"""

# Создание объекта TextBlob
blob = TextBlob(text)

# Полностью перевод текста на другой язык (например, на русский)
translated_blob = blob.translate(to="ru")
print(f"Переведенный текст: {translated_blob}")

# Анализ настроения каждого предложения в тексте
for sentence in blob.sentences:
print(f"Предложение: {sentence}")
print(f"Полярность: {sentence.sentiment.polarity}")
print(f"Субъективность: {sentence.sentiment.subjectivity}")
print()


В этом примере textblob используется для перевода текста на русский язык, а также для анализа настроения каждого предложения в тексте, что может быть полезным во многих областях, включая анализ отзывов и социальных медиа.

Библиотека textblob легка в использовании, и с ее помощью можно легко проводить различные виды анализа текста без необходимости иметь глубокие знания в области обработки естественного языка.

Подпишись 👉🏻 @KodduuPython 🤖
В этот раз давайте рассмотрим библиотеку faker, которая может генерировать большое количество фейковых данных - что может быть полезно для тестирования и разработки.

python
from faker import Faker

fake = Faker()

# Генерация случайного имени
print(f"Имя: {fake.name()}")

# Генерация случайного адреса
print(f"Адрес: {fake.address()}")

# Генерация случайного текста
print(f"Текст: {fake.text()}")

# Генерация случайной даты
print(f"Дата: {fake.date()}")

# Генерация случайного времени
print(f"Время: {fake.time()}")

# И многое другое!


Библиотека faker может генерировать различные виды данных, включая имена, адреса, текст и даты. Это может быть особенно полезно, когда вам нужно создать большой набор тестовых данных для проверки своего кода или приложения. Это также может быть полезным, если вам нужно анонимизировать реальные данные перед их использованием в отчетах или демонстрациях.

Подпишись 👉🏻 @KodduuPython 🤖
4
Давайте рассмотрим библиотеку pydantic, которая используется для валидации данных и парсинга на основе Python аннотаций типов. Это может быть очень полезным для обеспечения того, чтобы ваши данные были в правильном формате перед их использованием.

python
from pydantic import BaseModel, ValidationError, validator
from typing import List, Optional

class Address(BaseModel):
street: str
city: str
zip: str
country: Optional[str] = "USA"

@validator("zip")
def zip_length(cls, v):
if len(v) != 5:
raise ValueError('Zip code must be 5 digits')
return v

class Person(BaseModel):
name: str
age: int
email: str
address: Address
phone_numbers: List[str]

try:
person = Person(
name="John Doe",
age=25,
email="john.doe@example.com",
address={
"street": "123 Main St",
"city": "New York",
"zip": "12345"
},
phone_numbers=["123-456-7890"]
)
print(person.dict())
except ValidationError as e:
print(e.json())


В этом примере определены две модели данных: Address и Person. pydantic используется для валидации данных, которые передаются в Person, и обеспечивает, чтобы адрес содержал правильные поля и почтовый индекс имел правильную длину. Если данные невалидны, pydantic генерирует исключение ValidationError, которое можно легко перехватить и обработать.

Этот код помогает убедиться, что данные находятся в ожидаемом формате, что может быть крайне важным для предотвращения ошибок и упрощения отладки вашего кода в будущем.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим библиотеку streamlit, которая позволяет быстро создавать интерактивные веб-приложения для анализа данных без необходимости в написании обширного frontend-кода. Она может быть особенно полезной для создания прототипов и визуализации данных.

Пример создания простого веб-приложения с использованием streamlit:

python
import streamlit as st
import pandas as pd
import numpy as np

# Заголовок веб-приложения
st.title('Мое первое приложение с использованием Streamlit')

# Загрузка данных
uploaded_file = st.file_uploader("Загрузите свой CSV файл", type=["csv"])

if uploaded_file is not None:
# Чтение данных
data = pd.read_csv(uploaded_file)

# Отображение первых 5 строк данных
st.write('Показать первые 5 строк данных:')
st.write(data.head())

# Гистограмма
st.write('Гистограмма:')
hist_values = np.histogram(
data['your_column'], bins=25, range=(0, 250))[0]
st.bar_chart(hist_values)

# Параметры визуализации
st.write('Настройка визуализации:')
bins = st.slider('Количество бинов:', min_value=5, max_value=100, value=25)
st.hist_chart(data['your_column'], bins=bins)


В этом примере мы создаем простое веб-приложение с streamlit, которое позволяет пользователю загружать файл CSV, просматривать первые 5 строк данных и настраивать гистограмму, изменяя количество бинов с помощью слайдера. Это прекрасный способ быстро создать интерактивное веб-приложение для анализа и визуализации данных без необходимости погружаться в разработку frontend.

Чтобы запустить это приложение, сохраните код в файл, например app.py, и запустите его с помощью команды streamlit run app.py в командной строке.

Подпишись 👉🏻 @KodduuPython 🤖
Давайте рассмотрим необычную библиотеку под названием this, которая является частью стандартной библиотеки Python. Когда вы импортируете её, вы получите "Дзен Python" - набор принципов, которыми руководствуются разработчики при написании кода на Python.

Вот простой пример:

python
import this


При выполнении этого кода на экране вы увидите:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!


Это забавный и образовательный способ узнать о философии Python прямо из интерпретатора. Надеюсь, что это было интересно! Если у вас есть другие предпочтения или запросы, дайте знать.

Подпишись 👉🏻 @KodduuPython 🤖
3
Давайте рассмотрим интересную и необычную библиотеку antigravity.

В Python есть встроенная библиотека под названием antigravity, которая является пасхальным яйцом. При её импорте открывается веб-страница с комиксом xkcd, который шутливо посвящен этой библиотеке.

Пример кода:

python
import antigravity

При выполнении этого кода в вашем веб-браузере по умолчанию будет открыта страница с комиксом.

Это еще один из множества примеров юмора и культурных ссылок, которые можно найти в мире Python.

Подпишись 👉🏻 @KodduuPython 🤖
2