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

Основы Python

сообщение · 2026-07-24 05:50 UTC
А
Ответсообщение недоступно
Вот генерация в хроме: import re from datetime import datetime # Глобальный список для хранения документов (словарей пользователей) _db = [] def insert(*users): """ Добавляет одного или нескольких пользователей в базу данных. Принимает как отдельные словари, так и распакованные аргументы. """ global _db for user in users: # Проверяем на уникальность id перед добавлением (опционально) if not any(existing["id"] == user["id"] for existing in _db): _db.append(user) def select(criteria_str=None): """ Выбирает пользователей из базы данных по заданному критерию. Результат всегда отсортирован по возрастанию 'id'. """ global _db # Сначала сортируем всю базу по возрастанию id при помощи лямбда-функции sorted_db = sorted(_db, key=lambda x: x["id"]) # Если критерий поиска не задан, возвращаем всех пользователей if not criteria_str: return sorted_db # Разбираем строку критерия вида: <имя_поля> <оператор> <значение> # Поддерживаемые операторы: ==, !=, >=, <=, >, < match = re.match(r"^\s*([a-zA-Z_]\w*)\s*(==|!=|>=|<=|>|<)\s*(.+)$", criteria_str) if not match: return [] # Если формат строки не совпал с шаблоном, возвращаем пустой список field, operator, crit_value = match.groups() field = field.strip() operator = operator.strip() crit_value = crit_value.strip() # Очищаем строковое значение от лишних кавычек, если они были переданы в условии if (crit_value.startswith("'") and crit_value.endswith("'")) or ( crit_value.startswith('"') and crit_value.endswith('"') ): crit_value = crit_value[1:-1] result = [] for user in sorted_db: # Если у пользователя нет искомого поля, пропускаем его if field not in user: continue user_value = user[field] # Приведение типов для корректного сравнения if field == "id": val1, val2 = int(user_value), int(crit_value) elif field == "birth": # Конвертируем DD.MM.YYYY в объект datetime для правильного сравнения дат val1 = datetime.strptime(user_value, "%d.%m.%Y") val2 = datetime.strptime(crit_value, "%d.%m.%Y") else: val1, val2 = str(user_value), str(crit_value) # Проверка выполнения условия оператора сравнения is_match = False if operator == "==": is_match = val1 == val2 elif operator == "!=": is_match = val1 != val2 elif operator == ">=": is_match = val1 >= val2 elif operator == "<=": is_match = val1 <= val2 elif operator == ">": is_match = val1 > val2 elif operator == "<": is_match = val1 < val2 if is_match: result.append(user) return result Все тесты проходит.

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

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

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

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