🧠 Python-хитрая задача + решение
🖍️ Условие:
У тебя есть список логов (
Найди тех, кто зашел, но не вышел.
📜 Пример:
________
💻 Решение:
🛠Ответ:"carol"
#Python #Challenge #DevPuzzle
@python_job_interview
🖍️ Условие:
У тебя есть список логов (
user
, login/logout
).Найди тех, кто зашел, но не вышел.
📜 Пример:
logs = [
("alice", "login"),
("bob", "login"),
("alice", "logout"),
("dave", "login"),
("bob", "logout"),
("carol", "login"),
("dave", "logout")
]
________
💻 Решение:
from collections import defaultdict
def find_stuck_users(logs):
counter = defaultdict(int)
for user, action in logs:
if action == "login":
counter[user] += 1
elif action == "logout":
counter[user] -= 1
return sorted([user for user, count in counter.items() if count > 0])
🛠Ответ:
#Python #Challenge #DevPuzzle
@python_job_interview
👍14❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Что выведет этот Python код ? #junior #python
Задача для новичков.
Списки изменяемы и не могут быть элементами множества, но кортежи — неизменяемы и хэшируемы, поэтому кортеж из списка успешно добавится во множество.
Задача для новичков.
s = set()
a = [1, 2, 3]
s.add(tuple(a))
print(s)
👍4❤3🔥2🥰1
Хочешь понять, какие инструменты реально нужны Python-разработчику? Лови универсальную шпаргалку по лучшим библиотекам и технологиям — от новичка до синьора.
📦 Управление пакетами
→
pip
, conda
, poetry
— устанавливай, обновляй, фиксируй зависимости без боли.🧠 AI & ML
→
TensorFlow
, PyTorch
, Scikit-learn
— машинное обучение и нейросети. →
NumPy
, Pandas
, Matplotlib
, Seaborn
— анализ и визуализация данных.⚙️ Автоматизация и AI-агенты
→
LangGraph
, CrewAI
— создание LLM-агентов и пайплайнов. →
Airflow
, Celery
, Luigi
— ETL, очереди задач и планировщики.🌐 Веб-фреймворки
→
Django
, Flask
, FastAPI
— под любой масштаб. →
Tornado
, Pyramid
— для сложных архитектур.📊 Базы данных
→
PostgreSQL
, MySQL
, MongoDB
, SQLite
, Redis
, Cassandra
— SQL и NoSQL.✍️ Тестирование
→
Pytest
, Unittest
, nose2
— пишем надёжный и протестированный код.🔍 Web Scraping
→
BeautifulSoup
, Scrapy
, Selenium
, Playwright
— вытаскиваем данные даже с "закрытых" сайтов.🤓 DevOps и деплой
→
Docker
, Kubernetes
, AWS
, Heroku
, GCP
, Azure
— всё для продакшн-сборок.⌨️ IDE и редакторы
→
VS Code
, PyCharm
, Jupyter
, Spyder
— выбирай, где удобнее кодить.💡 Git и CI/CD
→
Git
, GitHub
, GitLab
, Bitbucket
— контроль версий и автоматизация сборок.🔥 Это не просто список. Это твой ориентир в мире Python. Сохрани, чтобы не искать дважды.
#python #разработка #шпаргалка #devtools #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2⚡1🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡ Python-трюк: быстрая группировка данных
Хотите сгруппировать элементы по ключу без лишних циклов?
Используйте
#Python #itertools #groupby #lifehack
Хотите сгруппировать элементы по ключу без лишних циклов?
Используйте
itertools.groupby
— но не забудьте предварительно отсортировать данные по этому ключу, иначе группы будут неправильными.
from itertools import groupby
from operator import itemgetter
data = [
{"user": "alice", "score": 8},
{"user": "bob", "score": 5},
{"user": "alice", "score": 7},
{"user": "bob", "score": 9},
]
# Сортируем по ключу
data.sort(key=itemgetter("user"))
# Группируем и считаем средний балл
for user, items in groupby(data, key=itemgetter("user")):
scores = [i["score"] for i in items]
print(user, "avg score:", sum(scores) / len(scores))
#Python #itertools #groupby #lifehack
👍8❤7🔥3
🐍 Python + Ruff: сложность кода под контролем
На скрине — функция
Линтер Ruff с правилом
📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки.
⚠️ Почему это важно:
• Снижение читаемости
• Рост вероятности багов
• Трудности при тестировании
💡 Решение:
1. Разбить функцию на несколько маленьких с понятными именами
2. Использовать ранние выходы (`return`) вместо вложенных
3. Упрощать логику с помощью вспомогательных функций или структур данных
#Python #Ruff #CleanCode #Refactoring #McCabeComplexity
На скрине — функция
validate_product
, которая проходит несколько вложенных проверок. Линтер Ruff с правилом
C901
(McCabe Complexity) сигнализирует: сложность функции = 7, что выше лимита 5.📏 McCabe Complexity измеряет количество ветвлений и условий в функции. Чем выше показатель, тем сложнее код для понимания и поддержки.
⚠️ Почему это важно:
• Снижение читаемости
• Рост вероятности багов
• Трудности при тестировании
💡 Решение:
1. Разбить функцию на несколько маленьких с понятными именами
2. Использовать ранние выходы (`return`) вместо вложенных
if
3. Упрощать логику с помощью вспомогательных функций или структур данных
#Python #Ruff #CleanCode #Refactoring #McCabeComplexity
👍1