- Генератор списков
- Генератор матриц
- Функциональный нод 2.0
- Имя of the month 2.0
- Подготовка данных
- Арифметический помощник
- Подготовитель данных
- Странный рост
- Странное произведение
- Наилучший выбор
- Кофейня
- В эфире рубрика «Эксперименты»
- Длинная сортировка
- Чётная фильтрация
- Повторюшка
- Обратная связь
- Фильтрация словаря
- Преобразование словаря
- Ключевой секрет
- База данных пользователей
import re from datetime import datetime _database = [] def insert(*users): for user in users: _database.append(user) _database.sort(key=lambda x: x['id']) def select(condition=None): if condition is None: return _database.copy() pattern = r'(\w+)\s*([<>]=?|==?|!=)\s*(.+)' match = re.match(pattern, condition.strip()) field, operator, value = match.groups() def compare(user_value, op, cond_value): if op == '==': return user_value == cond_value elif op == '!=': return user_value != cond_value elif op == '<': return user_value < cond_value elif op == '<=': return user_value <= cond_value elif op == '>': return user_value > cond_value elif op == '>=': return user_value >= cond_value filtered_users = [] for user in _database: user_value = user[field] if field == 'id': user_value = int(user_value) value_int = int(value) if compare(user_value, operator, value_int): filtered_users.append(user) elif field == 'birth': user_date = datetime.strptime(user_value, '%d.%m.%Y') value_date = datetime.strptime(value, '%d.%m.%Y') if compare(user_date, operator, value_date): filtered_users.append(user) else: # name field if compare(user_value, operator, value): filtered_users.append(user) return filtered_users