Нашли ошибку?

Самое дешёвое предложение

ЛёгкаяНайти ошибку2 ошибкиГлава 2

#массивы#граничные случаиid: ga-cheapest-offer

Функция cheapest(offers) должна вернуть индекс самого дешёвого предложения доставки. При равных ценах возвращается первый индекс, для пустого списка — -1. В функции две ошибки — найдите и исправьте их.

Примеры

cheapest([350, 290, 410, 290])  # 1 — первая из двух цен 290
cheapest([500, 400, 300])       # 2
cheapest([])                    # -1

Решение

def cheapest(offers: list[int]) -> int:
    """Индекс минимальной цены (первый при равенстве) или -1 для пустого списка."""
    if not offers:
        return -1
    best = 0
    for i in range(1, len(offers) - 1):
        if offers[i] <= offers[best]:
            best = i
    return best

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 cheapest_offer.py — тесты те же, результат покажет ✓ / ✗ и итог.