Python · 21 строк
Функция считает цену поездки: подача, километры, минуты, минимальная цена, коэффициент спроса, ночная наценка 20 % с 00:00 до 06:00 по местному времени, промокод.
Промокод бывает двух видов: {"discount": 300} — скидка в рублях или {"percent": 15} — процент. Сервис работает в UTC и обслуживает города от Калининграда до Владивостока. Отметьте строки с ошибками.
В работе: Цена, которую пассажир видит до заказа и которую спишут с карты после поездки.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: на задачах Яндекс Такси: тарифы и промокоды. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
from datetime import datetimeTARIFFS = {"econom": {"base": 99, "per_km": 12.5, "per_min": 7, "min_price": 189},"comfort": {"base": 149, "per_km": 16, "per_min": 9, "min_price": 299},}def trip_price(tariff, km, minutes, surge, promo=None, started_at=None):t = TARIFFS.get(tariff)price = t["base"] + km * t["per_km"] + minutes * t["per_min"]price = max(price, t["min_price"])price = price * surgestarted_at = started_at or datetime.now()if 0 <= started_at.hour <= 6:price *= 1.2if promo:price -= promo["discount"]if promo and promo["percent"]:price = price * (1 - promo["percent"] / 100)return round(price)