• 1
    Entrée et sortie
    • Tâches
  • 2
    Conditions
    • Tâches
  • 3
    Boucle for
    • Tâches
  • 4
    Chaînes
    • Tâches
  • 5
    Boucle while
    • Tâches
  • 6
    Listes
    • Tâches
  • 7
    Tableaux 2D
    • Tâches
  • 8
    Dictionnaires
    • Tâches
  • 9
    Ensembles
    • Tâches
  • 10
    Fonctions et récursion
    • Tâches
  • к

Leçon 2. Conditions

Difficulté :

Exercice«Délai de livraison»

💻 Python

Vous travaillez en tant que programmeur dans l'entreprise "express logistics". Votre première tâche sérieuse & mdash; Créer un calculateur pour les gestionnaires qui calculera le temps final et le coût de livraison d'un colis. Les calculs dépendent de plusieurs facteurs : la zone de livraison, le poids du colis, l'heure de la commande et le type de livraison (ordinaire ou express).

Règles de calcul :

  1. Tarifs de base par zone :
    • "central" - 30 minutes, coût de base - 150 roubles.
    • "sleeping" : temps de base - 60 minutes, coût de base - 200 roubles.
    • "industrial" : temps de base - 90 minutes, coût de base - 250 roubles.
    • Si une autre zone est saisie, le programme doit signaler qu'elle n'est pas desservie.
  2. Majoration pour le poids :
    • Si le poids du colis   est strictement supérieur   à 10 kg, 15 minutes sont ajoutées au temps de livraison, et au coût & mdash; 50 roubles. Cette majoration est appliquée   après   la sélection du tarif de base.
  3. Heure de pointe :
    • Les heures de pointe sont   de 8 à 10 heures du matin (inclus)   et   de 17 à 20 heures (inclus) . Si la commande est passée pendant l'heure de pointe, 30 minutes sont ajoutées au temps de livraison, et le coût total (déjà en tenant compte de la majoration éventuelle pour le poids)   augmente de 20%   (multiplié par 1,2).
  4. Modificateur de livraison express :
    • Si le type de livraison "express" est sélectionné, alors le temps total calculé (déjà en tenant compte du poids et de l'heure de pointe)   est réduit de moitié   (division entière), et le coût total (également avec toutes les majorations)   double .

Objectif :
Écrire un programme qui demande toutes les données nécessaires à l'utilisateur et affiche le temps final et le coût de livraison. Tous les calculs doivent être appliqués séquentiellement dans l'ordre indiqué.

Format d entrée

Le nom de la zone (ligne)
le poids du colis (numéro de matériau)
l'heure de la commande (un nombre entier d'heures, 0-23)
le type de livraison (ligne, "standard" ou "express")

Format de sortie

Le temps et le coût finaux (ligne) ou un message indiquant que la zone n'est pas desservie (ligne).

Exemple

Entrée

Central
5.5
14
Standard

Sortie

Le délai de livraison final : 30 minutes. Coût final : 150 roubles.

Indice

There will be no clue here, decide for yourself!

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

🎉 Félicitations ! 🎉

Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.

AD

Publicité

red-snake blue-snake green-snake

Exécution de votre code...

Assistant IA

Bonjour ! Je suis ton assistant de programmation. Pose moi toutes tes questions sur Python — je peux t expliquer les fonctions, les méthodes et t aider avec la tâche en cours !