🧩 Мини-решатель судоку за 20 строк!
Рабочий скрипт на Python, который решает любое корректное поле судоку через рекурсивный бэктрекинг.
📌 Этот код решает судоку с помощью бэктрекинга без библиотек. Минималистичная, быстрая и полностью рабочая версия.
Без зависимостей. Просто скопировать и запустить.
Подпишись 👉🏻 @KodduuPython 🤖
Рабочий скрипт на Python, который решает любое корректное поле судоку через рекурсивный бэктрекинг.
def solve(board):
for i in range(9):
for j in range(9):
if board[i][j] == 0:
for n in range(1, 10):
if valid(board, i, j, n):
board[i][j] = n
if solve(board):
return True
board[i][j] = 0
return False
return True
def valid(board, r, c, n):
row = all(board[r][i] != n for i in range(9))
col = all(board[i][c] != n for i in range(9))
box = all(board[r//3*3+i//3][c//3*3+i%3] != n for i in range(9))
return row and col and box
board = [
[5,3,0,0,7,0,0,0,0],
[6,0,0,1,9,5,0,0,0],
[0,9,8,0,0,0,0,6,0],
[8,0,0,0,6,0,0,0,3],
[4,0,0,8,0,3,0,0,1],
[7,0,0,0,2,0,0,0,6],
[0,6,0,0,0,0,2,8,0],
[0,0,0,4,1,9,0,0,5],
[0,0,0,0,8,0,0,7,9]
]
solve(board)
for row in board:
print(row)
📌 Этот код решает судоку с помощью бэктрекинга без библиотек. Минималистичная, быстрая и полностью рабочая версия.
Без зависимостей. Просто скопировать и запустить.
Подпишись 👉🏻 @KodduuPython 🤖
❤1
📚 Как за минуту распарсить огромный CSV-файл размером в гигабайты без загрузки в память!
Когда файл влезает в оперативку — всё легко. Но если файл 10+ ГБ?
Тогда надо читать его построчно, аккуратно обрабатывать и не уронить машину.
Вот рабочий скрипт:
📌 Этот код обрабатывает гигабайтные CSV-файлы без переполнения памяти.
Файл читается построчно через
Функция
📦 Ничего устанавливать не надо — только стандартная библиотека Python.
---
✅ Реальная сложность задачи:
- Оперативная память ограничена: файл нельзя просто
- Нужно обрабатывать миллионы строк быстро и без потерь.
- Требуется минимальное потребление памяти, чтобы не убить сервер/ноутбук.
Подпишись 👉🏻 @KodduuPython 🤖
Когда файл влезает в оперативку — всё легко. Но если файл 10+ ГБ?
Тогда надо читать его построчно, аккуратно обрабатывать и не уронить машину.
Вот рабочий скрипт:
import csv
def process_row(row):
# Здесь твоя логика обработки
if int(row['price']) > 1000:
print(f"{row['name']} стоит {row['price']}")
with open('bigfile.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
process_row(row)
📌 Этот код обрабатывает гигабайтные CSV-файлы без переполнения памяти.
Файл читается построчно через
csv.DictReader, без полной загрузки в память. Функция
process_row позволяет применить любую бизнес-логику к данным.📦 Ничего устанавливать не надо — только стандартная библиотека Python.
---
✅ Реальная сложность задачи:
- Оперативная память ограничена: файл нельзя просто
pandas.read_csv().- Нужно обрабатывать миллионы строк быстро и без потерь.
- Требуется минимальное потребление памяти, чтобы не убить сервер/ноутбук.
Подпишись 👉🏻 @KodduuPython 🤖
👍3
Все еще можно успеть на поезд "Старт курса с преподавателем на Майские". Начать можно и после майских 👉 Профессия Python-разработчик.
Реклама. Информация о рекламодателе по ссылкам в посте.
Реклама. Информация о рекламодателе по ссылкам в посте.
Для извлечения текста из пиксельных PDF (то есть отсканированных документов, где текст представлен как изображение), нужно использовать OCR (оптическое распознавание символов). Один из самых популярных инструментов — Tesseract OCR, в связке с
Вот пример кода:
### ✅ Установка необходимых библиотек:
> 📌 Также нужно установить сам Tesseract OCR:
* macOS:
* Ubuntu:
* Windows: [Скачать Tesseract здесь](https://github.com/tesseract-ocr/tesseract#windows)
---
### 🧠 Python-скрипт для извлечения текста из пиксельного PDF:
---
### ⚙️ Если нужен русский язык:
* Убедитесь, что установлен русский язык для Tesseract.
* Для macOS:
* Для Ubuntu:
* В коде:
Подпишись 👉🏻 @KodduuPython 🤖
pdf2image и pytesseract.Вот пример кода:
### ✅ Установка необходимых библиотек:
pip install pytesseract pdf2image pillow
> 📌 Также нужно установить сам Tesseract OCR:
* macOS:
brew install tesseract* Ubuntu:
sudo apt install tesseract-ocr* Windows: [Скачать Tesseract здесь](https://github.com/tesseract-ocr/tesseract#windows)
---
### 🧠 Python-скрипт для извлечения текста из пиксельного PDF:
import pytesseract
from pdf2image import convert_from_path
from PIL import Image
# Путь к вашему PDF
pdf_path = 'example_scanned.pdf'
# Преобразуем PDF в изображения (по одной странице)
pages = convert_from_path(pdf_path, dpi=300)
all_text = []
# Обрабатываем каждую страницу
for i, page in enumerate(pages):
# Преобразуем страницу в текст с помощью OCR
text = pytesseract.image_to_string(page, lang='eng') # для русского: lang='rus'
all_text.append(f"--- Page {i+1} ---\n{text}\n")
# Сохраняем результат в файл
with open('output_text.txt', 'w', encoding='utf-8') as f:
f.writelines(all_text)
print("✅ Текст успешно извлечен и сохранён в output_text.txt")
---
### ⚙️ Если нужен русский язык:
* Убедитесь, что установлен русский язык для Tesseract.
* Для macOS:
brew install tesseract-lang + rus.traineddata* Для Ubuntu:
sudo apt install tesseract-ocr-rus* В коде:
pytesseract.image_to_string(..., lang='rus')Подпишись 👉🏻 @KodduuPython 🤖
GitHub
GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)
Tesseract Open Source OCR Engine (main repository) - tesseract-ocr/tesseract
🔥4
🐍 Python: Генерация QR-кодов с логотипом
Хочешь создать QR-код, который не только работает, но и выглядит стильно? Добавим логотип в центр QR-кода!
📌 Что здесь происходит:
- Используем библиотеку
- Устанавливаем высокий уровень коррекции ошибок (`ERROR_CORRECT_H`), чтобы QR-код оставался читаемым даже с логотипом.
- Добавляем логотип в центр QR-кода с помощью
📎 Примечание: Убедитесь, что логотип не слишком большой, чтобы не затруднить сканирование QR-кода.
Подпишись 👉🏻 @KodduuPython 🤖
Хочешь создать QR-код, который не только работает, но и выглядит стильно? Добавим логотип в центр QR-кода!
import qrcode
from PIL import Image
# Данные для QR-кода
data = "https://example.com"
# Создание QR-кода
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
qr.add_data(data)
qr.make()
qr_img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
# Загрузка логотипа
logo = Image.open("logo.png")
# Изменение размера логотипа
box_size = qr_img.size[0] // 4
logo = logo.resize((box_size, box_size))
# Позиционирование логотипа в центре
pos = ((qr_img.size[0] - box_size) // 2, (qr_img.size[1] - box_size) // 2)
qr_img.paste(logo, pos)
# Сохранение результата
qr_img.save("qr_with_logo.png")
📌 Что здесь происходит:
- Используем библиотеку
qrcode для создания QR-кода.- Устанавливаем высокий уровень коррекции ошибок (`ERROR_CORRECT_H`), чтобы QR-код оставался читаемым даже с логотипом.
- Добавляем логотип в центр QR-кода с помощью
PIL.📎 Примечание: Убедитесь, что логотип не слишком большой, чтобы не затруднить сканирование QR-кода.
Подпишись 👉🏻 @KodduuPython 🤖
❤1
🐍 Преврати любой текст в ASCII-арт прямо в терминале**
Добавь ретро-вайб своей программе — пусть вывод будет как в хакерских фильмах 👾
📌 Что делает код:
- Использует библиотеку
- Работает прямо в терминале, можно использовать в логотипах CLI-интерфейсов, баннерах, меню и т.п.
🛠 Установи через pip:
Подпишись 👉🏻 @KodduuPython 🤖
Добавь ретро-вайб своей программе — пусть вывод будет как в хакерских фильмах 👾
from pyfiglet import Figlet
f = Figlet(font='slant') # Можно выбрать другие: 'block', 'bubble', 'doom', 'starwars' и др.
text = "Hack the World"
ascii_art = f.renderText(text)
print(ascii_art)
📌 Что делает код:
- Использует библиотеку
pyfiglet для генерации текста в стиле ASCII-арта.- Работает прямо в терминале, можно использовать в логотипах CLI-интерфейсов, баннерах, меню и т.п.
🛠 Установи через pip:
pip install pyfiglet
Подпишись 👉🏻 @KodduuPython 🤖
Скидка на программу FullStack Developer and Data Scientist (Python+JS+Data) до 18 мая 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
⚡️ Мега-быстрая загрузка 10 000 файлов через
Если нужны реально тысячи параллельных скачиваний — только асинхронность спасёт.
Вот рабочий код:
📌 Этот код:
- Открывает до 100 соединений одновременно (`limit=100`).
- Асинхронно читает сеть и сохраняет файлы без блокировки диска.
- Ловит ошибки загрузки, чтобы не падать целиком.
📦 Установка зависимостей:
---
✅ Реальная сложность задачи:
- Асинхронное скачивание требует правильно держать много TCP-сессий одновременно.
- Нужно ограничивать коннекторы, чтобы не забить сеть и сервер.
- Нужно параллельно писать на диск без блокировки основного потока.
---
🔥 Что важно знать:
- Такой код может качать сотни файлов в секунду.
- Работает почти на уровне максимальной скорости вашего интернета.
- Если слишком агрессивно — можно получить 429 ("Too Many Requests") от сервера. Тогда надо добавить
Подпишись 👉🏻 @KodduuPython 🤖
aiohttp и asyncioЕсли нужны реально тысячи параллельных скачиваний — только асинхронность спасёт.
Вот рабочий код:
import asyncio
import aiohttp
import aiofiles
urls = [f"https://example.com/file{i}.txt" for i in range(1, 10001)]
async def download(session, url):
try:
async with session.get(url, timeout=10) as resp:
if resp.status == 200:
fname = url.split('/')[-1]
async with aiofiles.open(fname, 'wb') as f:
await f.write(await resp.read())
except Exception as e:
print(f"Ошибка {url}: {e}")
async def main():
connector = aiohttp.TCPConnector(limit=100)
async with aiohttp.ClientSession(connector=connector) as session:
tasks = [download(session, url) for url in urls]
await asyncio.gather(*tasks)
asyncio.run(main())
📌 Этот код:
- Открывает до 100 соединений одновременно (`limit=100`).
- Асинхронно читает сеть и сохраняет файлы без блокировки диска.
- Ловит ошибки загрузки, чтобы не падать целиком.
📦 Установка зависимостей:
pip install aiohttp aiofiles
---
✅ Реальная сложность задачи:
- Асинхронное скачивание требует правильно держать много TCP-сессий одновременно.
- Нужно ограничивать коннекторы, чтобы не забить сеть и сервер.
- Нужно параллельно писать на диск без блокировки основного потока.
---
🔥 Что важно знать:
- Такой код может качать сотни файлов в секунду.
- Работает почти на уровне максимальной скорости вашего интернета.
- Если слишком агрессивно — можно получить 429 ("Too Many Requests") от сервера. Тогда надо добавить
semaphore или задержку между запросами.Подпишись 👉🏻 @KodduuPython 🤖
🔥3
✍️ Как за 20 строк научить Python исправлять опечатки в текстах
Мини-скрипт для автокоррекции человеческих ошибок в строках.
📌 Этот код:
- Использует
- Работает из коробки на английском языке.
- Исправляет самые частые опечатки автоматически.
📦 Установка:
---
✅ Реальная сложность задачи:
- Опечатки непредсказуемы → нужна статистическая модель исправления.
- Нужно быстро обрабатывать текст без больших моделей вроде GPT.
- Нужно уметь работать со словарями и контекстами без тонкой настройки.
---
💡 Этот трюк можно встроить в:
- Автоматические чат-боты
- Умные формы ввода
- Лингвистические анализаторы
Подпишись 👉🏻 @KodduuPython 🤖
Мини-скрипт для автокоррекции человеческих ошибок в строках.
from textblob import TextBlob
def correct_text(text):
blob = TextBlob(text)
return str(blob.correct())
examples = [
"I havv goood speling",
"Ths is a smple txt with erors",
"Pythn is amazng!"
]
for sentence in examples:
print(f"Before: {sentence}")
print(f"After : {correct_text(sentence)}")
print()
📌 Этот код:
- Использует
TextBlob для анализа и исправления текста.- Работает из коробки на английском языке.
- Исправляет самые частые опечатки автоматически.
📦 Установка:
pip install textblob
python -m textblob.download_corpora
---
✅ Реальная сложность задачи:
- Опечатки непредсказуемы → нужна статистическая модель исправления.
- Нужно быстро обрабатывать текст без больших моделей вроде GPT.
- Нужно уметь работать со словарями и контекстами без тонкой настройки.
---
💡 Этот трюк можно встроить в:
- Автоматические чат-боты
- Умные формы ввода
- Лингвистические анализаторы
Подпишись 👉🏻 @KodduuPython 🤖
⚡2
Скидка 50% на программу FullStack Developer and Data Scientist (Python+JS+Data) до 18 мая 🔥🔥🔥
Подпишись 👉🏻 @KodduuPython 🤖
Подпишись 👉🏻 @KodduuPython 🤖
🚀 Как скачать 10 000 файлов быстро и без перегрева системы
Когда надо скачать тысячи файлов (логов, документов, изображений) — тупой
Решение — параллельная загрузка через пул потоков.
Вот рабочий код:
📌 Этот код:
- Скачивает до 20 файлов одновременно (параметр `max_workers`).
- Обрабатывает ошибки (например, таймауты и падение сети).
- Бережёт ресурсы: не создаёт слишком много потоков и не душит сервер.
📦 Нужно установить только
✅ Реальная сложность задачи:
- Слишком много запросов → можно легко убить свой интернет или упасть по памяти.
- Нужна балансировка скорости и нагрузки (потому
- Требуется аккуратно сохранять файлы и обрабатывать возможные сбои.
Подпишись 👉🏻 @KodduuPython 🤖
Когда надо скачать тысячи файлов (логов, документов, изображений) — тупой
requests.get в цикле будет очень медленным. Решение — параллельная загрузка через пул потоков.
Вот рабочий код:
import requests
from concurrent.futures import ThreadPoolExecutor
urls = [f"https://example.com/file{i}.txt" for i in range(1, 10001)]
def download(url):
try:
r = requests.get(url, timeout=10)
if r.status_code == 200:
with open(url.split('/')[-1], 'wb') as f:
f.write(r.content)
except Exception as e:
print(f"Ошибка при скачивании {url}: {e}")
with ThreadPoolExecutor(max_workers=20) as executor:
executor.map(download, urls)
📌 Этот код:
- Скачивает до 20 файлов одновременно (параметр `max_workers`).
- Обрабатывает ошибки (например, таймауты и падение сети).
- Бережёт ресурсы: не создаёт слишком много потоков и не душит сервер.
📦 Нужно установить только
requests, если ещё нет:
pip install requests
✅ Реальная сложность задачи:
- Слишком много запросов → можно легко убить свой интернет или упасть по памяти.
- Нужна балансировка скорости и нагрузки (потому
ThreadPoolExecutor с лимитом).- Требуется аккуратно сохранять файлы и обрабатывать возможные сбои.
Подпишись 👉🏻 @KodduuPython 🤖
👍3
📌 Задача
Три тела взаимодействуют гравитационно в пустом пространстве. Мы хотим смоделировать их движение и визуализировать траектории.
## ✅ Требуемые библиотеки
## 🧠 Код: Решение и Визуализация
## ⚙️ Что делает код:
* Использует метод Рунге-Кутты для численного интегрирования движения.
* Визуализирует траектории всех трех тел в 3D.
* Можно изменить массы, начальные координаты и скорости для экспериментов.
Подпишись 👉🏻 @KodduuPython 🤖
Три тела взаимодействуют гравитационно в пустом пространстве. Мы хотим смоделировать их движение и визуализировать траектории.
## ✅ Требуемые библиотеки
pip install numpy matplotlib
## 🧠 Код: Решение и Визуализация
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
G = 1.0 # Гравитационная постоянная
# Массы тел
m1, m2, m3 = 1.0, 1.0, 1.0
# Начальные координаты (x, y, z) и скорости (vx, vy, vz)
# Можно изменить под свой случай
r1 = np.array([1.0, 0.0, 0.0])
r2 = np.array([-1.0, 0.0, 0.0])
r3 = np.array([0.0, 1.0, 0.0])
v1 = np.array([0.0, 0.3, 0.0])
v2 = np.array([0.0, -0.3, 0.0])
v3 = np.array([0.0, 0.0, 0.0])
# Функция для расчета ускорений
def acceleration(ri, rj, mj):
r = rj - ri
dist = np.linalg.norm(r) + 1e-5
return G * mj * r / dist**3
# Метод Рунге-Кутты 4-го порядка
def rk4_step(r, v, m, dt):
a = np.zeros_like(r)
for i in range(3):
for j in range(3):
if i != j:
a[i] += acceleration(r[i], r[j], m[j])
r_new = r + v * dt + 0.5 * a * dt**2
v_new = v + a * dt
return r_new, v_new
# Инициализация массивов
steps = 5000
dt = 0.001
r = np.array([r1, r2, r3])
v = np.array([v1, v2, v3])
m = np.array([m1, m2, m3])
trajectories = [[], [], []]
# Основной цикл
for _ in range(steps):
for i in range(3):
trajectories[i].append(r[i].copy())
r, v = rk4_step(r, v, m, dt)
trajectories = np.array(trajectories)
# 🎥 Визуализация в 3D
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
for i in range(3):
ax.plot(trajectories[i][:, 0], trajectories[i][:, 1], trajectories[i][:, 2], label=f"Body {i+1}")
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.set_title("Three-Body Problem Simulation")
ax.legend()
plt.tight_layout()
plt.show()
## ⚙️ Что делает код:
* Использует метод Рунге-Кутты для численного интегрирования движения.
* Визуализирует траектории всех трех тел в 3D.
* Можно изменить массы, начальные координаты и скорости для экспериментов.
Подпишись 👉🏻 @KodduuPython 🤖