• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 2. Conditions

Dificuldade:

Tarefa«Tempo de entrega»

💻 Python

Você trabalha como programador na empresa "express logistics". Sua primeira tarefa séria & mdash; Criar uma calculadora para gerentes que calcularão o tempo final e o custo de entrega de um pacote. Os cálculos dependem de vários fatores: a área de entrega, o peso do pacote, o horário do pedido e o tipo de entrega (comum ou expressa).

Regras de cálculo:

  1. Tarifas básicas por distrito:
    • "central" - 30 minutos, custo base - 150 rublos.
    • "dormitório" : tempo base - 60 minutos, custo base - 200 rublos.
    • "industrial" : tempo base - 90 minutos, custo base - 250 rublos.
    • Se qualquer outra área for inserida, o programa deve informar que ela não é atendida.
  2. Margem por peso:
    • Se o peso do pacote for estritamente maior que 10 kg, 15 minutos são adicionados ao tempo de entrega e ao custo & mdash; 50 rublos. Esta margem é aplicada após a seleção da tarifa básica.
  3. Horário de pico:
    • Horários de pico: das 8 às 10 da manhã (inclusive) e das 17 às 20 horas (inclusive) . Se o pedido for feito no horário de pico, 30 minutos são adicionados ao tempo de entrega, e o custo total (já considerando a possível margem por peso) aumenta em 20% (multiplicado por 1,2).
  4. Modificador de entrega expressa:
    • Se o tipo de entrega "expressa" for selecionado, o tempo total calculado (já considerando o peso e o horário de pico) é reduzido pela metade (divisão inteira), e o custo total (também com todas as margens) dobra .

Objetivo:
Escreva um programa que solicite todos os dados necessários do usuário e exiba o tempo final e o custo da entrega. Todos os cálculos devem ser aplicados sequencialmente na ordem indicada.

Formato de entrada

O nome da área (linha)
o peso do pacote (número do material)
pedido (> pedido (um número inteiro de hora do pedido, 0-23)
tipo de entrega (linha, "padrão" ou "expresso")

Formato de saída

O tempo e custo finais (linha) ou uma mensagem de que a área não é atendida (linha).

Exemplo

Entrada

Central
5.5
14
Standard

Saída

O tempo final de entrega: 30 minutos. Custo final: 150 rublos.

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
# Запрашиваем у пользователя все необходимые данные для расчета
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("Район не обслуживается")

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!