About Python [ru]
6.22K subscribers
320 photos
1.59K links
Все о Python: алгоритмы, паттерны проектирования, задачи, нейронные сети

Канал на бирже - https://telega.in/c/python_tesst

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
👩‍💻 Как Python помогает восстанавливать древние фрески: алгоритмы цифровой реставрации

Рассказал, как с Python и OpenCV восстанавливал фрески: писал свои алгоритмы, экспериментировал с нейросетями и пытался вернуть прошлое в настоящем. IT встречает вечность, серьёзно.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Ищем похожие иероглифы при помощи искусственного интеллекта

Пишу про свой мини-инструмент для изучения китайского — он показывает похожие иероглифы, чтобы не путаться. Объясняю архитектуру, выбор компонентов и кидаю код. Всё на Python и чуть SQL.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Безопасный парсинг query string с типами

Напишите функцию parse_query(query_string), которая принимает строку запроса из URL (например, "age=25&name=John&active=true") и возвращает словарь, где значения автоматически приводятся к корректным Python-типам:

"true" / "false"bool
— числа → int или float
— остальное → str

Поведение:

• Ключи и значения из строки должны быть декодированы (%20 → пробел и т.п.).

• Повторяющиеся ключи игнорируются — берётся первое вхождение.

• Пустые значения (key=) считаются None.


Решение задачи🔽

from urllib.parse import parse_qsl, unquote_plus

def convert_value(val):
if val == "":
return None
if val.lower() == "true":
return True
if val.lower() == "false":
return False
try:
if "." in val:
return float(val)
return int(val)
except ValueError:
return val

def parse_query(query_string):
result = {}
pairs = parse_qsl(query_string, keep_blank_values=True)

for key, value in pairs:
if key not in result: # Берем только первое вхождение
decoded_key = unquote_plus(key)
decoded_value = unquote_plus(value)
result[decoded_key] = convert_value(decoded_value)

return result

# Пример использования
query = "age=25&name=John%20Doe&height=1.82&active=true&admin=false&bio=&age=999"
print(parse_query(query))
# Ожидаемый результат:
# {'age': 25, 'name': 'John Doe', 'height': 1.82, 'active': True, 'admin': False, 'bio': None}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Проверка теории повторяемости биржевых графиков

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Пишем небольшой терминал на python #1. Файловая система

Рассказываю, как начать писать терминал на Python с собственной примитивной файловой системой — первая часть серии. Стартуем с filesystem.py и классов для диска и файлов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
⚙️ Что такое enumerate() в Python и зачем он нужен?

enumerate() — это встроенная функция, которая добавляет счётчик к итерируемому объекту. Полезна, когда нужно получить и индекс, и значение при переборе списка, строки или любого итератора.

➡️ Пример:

fruits = ['яблоко', 'банан', 'вишня']

for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

0: яблоко
1: банан
2: вишня


🗣️ Без enumerate() пришлось бы вручную управлять счётчиком. Это делает код чище, читаемее и более "питоничным".


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Всё про конфиги

Материалы лекции про конфигурационные файлы — все основные аспекты написания и использования конфигов для самых маленьких, примеры кода на python.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Godot 3.6 с поддержкой python

Использование Python вместо GDScript в Godot: настройка окружения, установка плагина для Python на версии 3.x и сборка игры под Windows. Всё просто и быстро для тех, кто предпочитает Python!

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥211
👩‍💻 Мир за пределами Pandas: достойные альтернативы для работы с данными

В статье рассмотрены альтернативы Pandas: от колоночной DuckDB и сверхскоростной Polars до мощного Modin и гибкого Vaex. Узнайте их особенности, преимущества и ключевые характеристики.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Чистый код в Python

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Вредоносные пакеты deepseeek и deepseekai были опубликованы в Python Package Index

Исследователи обнаружили вредоносные пакеты deepseeek и deepseekai, крадущие конфиденциальные данные из окружения. В статье разбор атаки, её механизм и рекомендации по защите.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🪞 Читай чужой код как зеркало своего уровня

Ты либо хвалишь себя, что «так бы не написал», либо впадаешь в панику — «я бы никогда так не смог». И то, и другое — полезно.

👉 Совет: анализируй чужой код активно: что работает хорошо? Что кажется опасным? Какие паттерны тебе бы пригодились? Не просто читай — изучай. Это кратчайший путь к росту.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 ТОП-43 курса по Machine Learning, включая бесплатные курсы по машинному обучению

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Конвертер CSV в JSON

Напишите скрипт, который принимает путь к файлу CSV, конвертирует его содержимое в формат JSON и сохраняет результат в новый файл с тем же именем, но с расширением .json.

Пример:

id,name,age
1,Alice,30
2,Bob,25
3,Charlie,35

python csv_to_json.py data.csv

[
{"id": "1", "name": "Alice", "age": "30"},
{"id": "2", "name": "Bob", "age": "25"},
{"id": "3", "name": "Charlie", "age": "35"}
]


Решение задачи🔽

import csv
import json
import sys
import os

def csv_to_json(csv_file_path):
try:
json_file_path = os.path.splitext(csv_file_path)[0] + ".json"

with open(csv_file_path, 'r', encoding='utf-8') as csv_file:
reader = csv.DictReader(csv_file)
data = [row for row in reader]

with open(json_file_path, 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, indent=4, ensure_ascii=False)

print(f"Файл успешно конвертирован: {json_file_path}")
except FileNotFoundError:
print(f"Ошибка: Файл {csv_file_path} не найден.")
except Exception as e:
print(f"Ошибка: {e}")

# Пример использования:
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Использование: python csv_to_json.py <путь_к_csv>")
else:
csv_to_json(sys.argv[1])
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 AJAX-запросы в Django на примере простейшего приложения сбора и показа сообщений

Статья предлагает простой мануал по использованию AJAX для динамического обновления страниц. Рассматривается взаимодействие фронтенда с AJAX и бэкенда на Django, с акцентом на минимализм кода для новичков.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Поиск пересечения двух списков

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

Пример:

list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]

result = find_intersection(list1, list2)
print(result)
# Ожидаемый результат: [3, 4, 5]


Решение задачи🔽

def find_intersection(list1, list2):
set2 = set(list2)
return [item for item in list1 if item in set2]

# Пример использования:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]

result = find_intersection(list1, list2)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Самая наглядная и простая модель естественного отбора: птицы со всего одним геном. Важность разнообразия у потомков

Статья представляет простейшую модель естественного отбора с одним параметром-гена. Рассматриваются принципы её работы, интерактивные примеры кода на Python с использованием p5py, и визуализации в формате гифок.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM