Подсчёт среднего года выпуска автомобилей по регионам

Извлеките двух- или трёхзначный код региона из конца номера, накопите сумму годов и количество машин по коду. Среднее — сумма, делённая на количество; ведущий ноль региона лучше сохранить.

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

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

Извлеките двух- или трёхзначный код региона из конца номера, накопите сумму годов и количество машин по коду. Среднее — сумма, делённая на количество; ведущий ноль региона лучше сохранить.

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

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

Условие

Имеется класс Car, содержащий государственный номер и год выпуска автомобиля. Требуется вычислить среднее значение года выпуска для каждого региона, используя список cars.

class Car:
    def __init__(self, number: str, year: int):
        self.number = number
        self.year = year

cars = [
    Car("a121mm16", 2016),
    Car("c313xx16", 2011),
    Car("b777xx777", 2007),
    Car("a123xx01", 2012),
    Car("c888xx777", 2022),
    Car("b123xx47", 2002),
]

Задача подразумевает разбор номера машины для получения региона, группировку машин по региону и расчёт среднего года выпуска в каждой группе.

Ответ

Извлеките двух- или трёхзначный код региона из конца номера, накопите сумму годов и количество машин по коду. Среднее — сумма, делённая на количество; ведущий ноль региона лучше сохранить.

Для формата номеров из примера:

import re

def average_years(cars):
    totals = {}
    for car in cars:
        match = re.fullmatch(r'[A-Za-zА-Яа-я]\d{3}[A-Za-zА-Яа-я]{2}(\d{2,3})', car.number)
        if match is None:
            raise ValueError('Unexpected plate format')
        region = match.group(1)
        total, count = totals.get(region, (0, 0))
        totals[region] = (total + car.year, count + 1)
    return {region: total / count for region, (total, count) in totals.items()}

Результат: '16': 2013.5, '777': 2014.5, '01': 2012.0, '47': 2002.0. Это парсер учебного формата, не полная проверка допустимости госномера.

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

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

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

Подробнее