• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 2. Условия

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Время доставки»

Вы работаете программистом в компании по доставке "Экспресс-Логистика". Ваша первая серьезная задача — создать калькулятор для менеджеров, который будет рассчитывать итоговое время и стоимость доставки одной посылки. Расчеты зависят от нескольких факторов: района доставки, веса посылки, времени оформления заказа и типа доставки (обычная или экспресс).

Правила расчета:

  1. Базовые тарифы по районам:
    • "Центральный": базовое время - 30 минут, базовая стоимость - 150 руб.
    • "Спальный": базовое время - 60 минут, базовая стоимость - 200 руб.
    • "Промышленный": базовое время - 90 минут, базовая стоимость - 250 руб.
    • Если введен любой другой район, программа должна сообщить, что он не обслуживается.
  2. Наценка за вес:
    • Если вес посылки строго больше 10 кг, к времени доставки добавляется 15 минут, а к стоимости — 50 руб. Эта наценка применяется после выбора базового тарифа.
  3. Наценка за час пик:
    • Часы пик действуют в периоды с 8 до 10 утра (включительно) и с 17 до 20 вечера (включительно).
    • Если заказ оформлен в час пик, к времени доставки добавляется 30 минут, а итоговая стоимость (уже с учетом возможной наценки за вес) увеличивается на 20% (умножается на 1.2).
  4. Модификатор "Экспресс-доставка":
    • Если выбран тип доставки "экспресс", то общее расчетное время (уже с учетом веса и часа пик) сокращается в 2 раза (целочисленное деление), а итоговая стоимость (также со всеми наценками) удваивается.

Ваша задача:
Написать программу, которая запрашивает у пользователя все необходимые данные и выводит итоговое время и стоимость доставки. Все расчеты должны применяться последовательно в указанном порядке.

Формат ввода

Название района (строка)
Вес посылки (вещественное число)
Час заказа (целое число, 0-23)
Тип доставки (строка, "стандарт" или "экспресс")

Формат Вывода

Итоговое время и стоимость (строка) или сообщение о том, что район не обслуживается (строка).

Пример

Ввод

Центральный
5.5
14
стандарт

Вывод

Итоговое время доставки: 30 минут. Итоговая стоимость: 150 руб.

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Запрашиваем у пользователя все необходимые данные для расчета
district = input()          # Название района доставки (строка)
weight = float(input())     # Вес посылки в кг (вещественное число)
hour = int(input())         # Час оформления заказа от 0 до 23 (целое число)
delivery_type = input()     # Тип доставки: "стандарт" или "экспресс" (строка)

time = 0  # Переменная для хранения итогового времени в минутах
cost = 0  # Переменная для хранения итоговой стоимости в рублях
is_valid_district = True # Флаг для проверки, обслуживается ли район

# Шаг 1: Определяем базовое время и стоимость в зависимости от района
if district == "Центральный":
    time = 30
    cost = 150
elif district == "Спальный":
    time = 60
    cost = 200
elif district == "Промышленный":
    time = 90
    cost = 250
else:
    # Если район не найден в списке, устанавливаем флаг в False
    is_valid_district = False

# Проверяем, был ли найден район. Если нет, то дальнейшие расчеты не нужны.
if is_valid_district:
    # Шаг 2: Применяем наценку за вес, если он больше 10 кг
    if weight > 10:
        time = time + 15
        cost = cost + 50

    # Шаг 3: Проверяем, попадает ли час заказа в час пик
    # Условие "И": (hour >= 8 и hour <= 10) - утренний пик
    # Условие "И": (hour >= 17 и hour <= 20) - вечерний пик
    # Условие "ИЛИ" между ними: or
    is_rush_hour = (hour >= 8 and hour <= 10) or (hour >= 17 and hour <= 20)
    if is_rush_hour:
        time = time + 30
        cost = cost * 1.2 # Увеличиваем стоимость на 20%

    # Шаг 4: Применяем модификатор для экспресс-доставки
    if delivery_type == "экспресс":
        time = time / 2 # Сокращаем время вдвое
        cost = cost * 2 # Увеличиваем стоимость вдвое

    # Выводим итоговый результат, округляя значения до целых чисел для аккуратности
    print(f"Итоговое время доставки: {int(time)} минут. Итоговая стоимость: {int(cost)} руб.")
else:
    # Если флаг is_valid_district остался False, выводим сообщение об ошибке
    print("Район не обслуживается")

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!