У вас есть список словарей с информацией о пользователях. Нужно:

Преобразуйте age в число, оставьте пользователей строго старше 18 и запишите данные и агрегированную статистику в разные JSON-файлы. Для пустого результата определите значения статистики явно.

Короткий ответ

Что ответить на собеседовании

Преобразуйте age в число, оставьте пользователей строго старше 18 и запишите данные и агрегированную статистику в разные JSON-файлы. Для пустого результата определите значения статистики явно.

Подробный разбор

Ответ с пояснениями

Условие

У вас есть список словарей с информацией о пользователях. Нужно:

  1. Отфильтровать пользователей старше 18 лет
  2. Сохранить отфильтрованные данные в один файл в формате JSON
  3. Создать и сохранить отдельный файл со статистикой по всем отфильтрованным пользователям:
  • Общее количество пользователей
  • Средний возраст (округлить до 1 знака после запятой)
  • Минимальный и максимальный возраст

users_data = [ { "name": "Алексей", "age": "25", "birth_date": "[phone]", "city": "Москва" }, { "name": "Мария", "age": "17", "birth_date": "[phone]", "city": "Санкт-Петербург" }, { "name": "Иван", "age": "30", "birth_date": "[phone]", "city": "Москва" }, { "name": "Елена", "age": "22", "birth_date": "[phone]", "city": "Новосибирск" }, { "name": "Елисей", "age": "9", "birth_date": "[phone]", "city": "..." } ]

Ответ

Преобразуйте age в число, оставьте пользователей строго старше 18 и запишите данные и агрегированную статистику в разные JSON-файлы. Для пустого результата определите значения статистики явно.

import json

def export_users(users, data_path, stats_path):
    selected = []
    for user in users:
        age = int(user['age'])
        if age > 18:
            selected.append({**user, 'age': age})
    ages = [user['age'] for user in selected]
    stats = {
        'count': len(ages),
        'average_age': round(sum(ages) / len(ages), 1) if ages else None,
        'min_age': min(ages) if ages else None,
        'max_age': max(ages) if ages else None,
    }
    for path, value in ((data_path, selected), (stats_path, stats)):
        with open(path, 'w', encoding='utf-8') as file:
            json.dump(value, file, ensure_ascii=False, indent=2)

Для примера: 3 пользователя, средний возраст 25,7, минимум 22, максимум 30. Невалидный age даст ошибку; политику пропуска задают отдельно. Пути должны быть разными и согласованными: режим w перезаписывает файлы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее