ChatCrawlerпоиск по публичному Telegram Открыть приложение
О

Основы Python

сообщение · 2025-07-04 18:22 UTC
M
Ответсообщение недоступно
from datetime import datetime import re # Глобальная переменная для хранения данных _database = [] def insert(*users): """Добавляет пользователей в базу данных""" for user in users: # Проверяем уникальность id и name if any(u['id'] == user['id'] for u in _database): raise ValueError(f"User with id {user['id']} already exists") if any(u['name'] == user['name'] for u in _database): raise ValueError(f"User with name {user['name']} already exists") _database.append(user) def select(condition=None): """Выбирает пользователей по условию или всех, если условие не задано""" filtered_users = _database.copy() if condition: # Парсим условие match = re.match(r'^(\w+)\s*(<=|>=|<|>|=)\s*(.+)$', condition.strip()) if not match: raise ValueError("Invalid condition format") field, operator, value = match.groups() def compare(user): try: # Для поля birth сравниваем как дату if field == 'birth': user_date = datetime.strptime(user[field], '%d.%m.%Y') target_date = datetime.strptime(value, '%d.%m.%Y') if operator == '<': return user_date < target_date elif operator == '>': return user_date > target_date elif operator == '<=': return user_date <= target_date elif operator == '>=': return user_date >= target_date elif operator == '=': return user_date == target_date # Для других полей сравниваем как строки или числа user_value = user[field] if operator == '<': return user_value < type(user_value)(value) elif operator == '>': return user_value > type(user_value)(value) elif operator == '<=': return user_value <= type(user_value)(value) elif operator == '>=': return user_value >= type(user_value)(value) elif operator == '=': return str(user_value) == value except (KeyError, ValueError): return False filtered_users = [u for u in filtered_users if compare(u)] # Сортируем по id перед возвратом return sorted(filtered_users, key=lambda x: x['id'])

Вся лента · оригинал в Telegram

Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог