Строка вместо ошибки
get_price(catalog, product_id) возвращает цену товара. Если товара нет, она возвращает
строку "нет товара" — и расчёт суммы корзины падает с непонятной ошибкой TypeError.
Исправьте get_price: для отсутствующего товара она должна выбрасывать ValueError
с сообщением "товар <id> не найден".
Подсказка 1 из 1
raise ValueError(f"товар {product_id} не найден")