• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 2. Conditions

Dificultad:

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

Tarea«Tiempo de entrega»

💻 Python

Trabajas como programador en la empresa "Express Logistics". Tu primera tarea seria — Crear una calculadora para los gerentes que calcularán el tiempo final y el costo de entrega de un paquete. Los cálculos dependen de varios factores: la zona de entrega, el peso del paquete, la hora del pedido y el tipo de entrega (ordinaria o exprés).

Reglas de cálculo:

  1. Tarifas básicas por zonas:
    • "Central" - tiempo base: 30 minutos, costo base: 150 rublos.
    • "Residencial" : tiempo base: 60 minutos, costo base: 200 rublos.
    • "Industrial" : tiempo base: 90 minutos, costo base: 250 rublos.
    • Si se introduce cualquier otra zona, el programa debe informar que no se presta servicio.
  2. Recargo por peso:
    • Si el peso del paquete es estrictamente mayor a 10 kg, se añaden 15 minutos al tiempo de entrega y al costo — 50 rublos. Este recargo se aplica después de la selección de la tarifa básica.
  3. Hora punta:
    • Horas punta: de 8 a 10 de la mañana (inclusive) y de 17 a 20 de la tarde (inclusive) . Si el pedido se realiza en hora punta, se añaden 30 minutos al tiempo de entrega, y el costo total (ya considerando el posible recargo por peso) aumenta en un 20% (se multiplica por 1.2).
  4. Modificador de entrega exprés:
    • Si se selecciona el tipo de entrega "exprés", entonces el tiempo total calculado (ya considerando el peso y la hora punta) se reduce a la mitad (división entera), y el costo total (también con todos los recargos) se duplica .

Objetivo:
Escribe un programa que solicite todos los datos necesarios al usuario y muestre el tiempo final y el costo de la entrega. Todos los cálculos deben aplicarse secuencialmente en el orden indicado.

Formato de entrada

El nombre del área (línea)
el peso del paquete (número de material)
la hora del pedido (un número entero de hora, 0-23)
tipo de entrega (línea, "estándar" o "exprés")

Formato de salida

El tiempo y costo final (línea) o un mensaje de que el área no está servida (línea).

Ejemplo

Entrada

Central
5.5
14
Estándar

Salida

La hora de entrega final: 30 minutos. Costo final: 150 rublos.

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
# Запрашиваем у пользователя все необходимые данные для расчета
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("Район не обслуживается")

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.