• 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 1. Entering and output of data

Difficulté :

Exercice«Commandes uniques»

💻 Python

Le restaurant a décidé de connaître le nombre de clients uniques et combien chacun d'eux a payé. Écrivez un programme qui accepte un dictionnaire avec les clients et renvoie les clients uniques ainsi que leurs coûts totaux dans l'établissement.

Format d entrée

La première ligne contient un seul nombre n & mdash; le nombre d'enregistrements de transactions. Chacune des n lignes suivantes contient le nom du client (ligne sans espaces) et le montant de l'achat (un entier), séparés par un espace.

Format de sortie

Une ligne contenant le dictionnaire Python, où les clés sont des noms de clients uniques, et les valeurs sont leurs coûts totaux.

Exemple

Entrée

4
Peter 300
Anna 150
Peter 100
Anna 400

Sortie

{'Peter': 400, 'Anna': 550}

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
# Инициализируем пустой словарь для хранения итоговых сумм по клиентам
client_totals = {}

# Считываем первое число - общее количество записей о покупках
try:
    num_records = int(input())

    # Проверяем, что количество записей не отрицательное
    if num_records < 0:
        # В случае отрицательного числа, считаем это некорректным вводом
        # и выводим пустой словарь, так как транзакций не будет.
        print({})
    else:
        # Запускаем цикл, который выполнится указанное количество раз
        for _ in range(num_records):
            # Считываем строку и разделяем ее на имя и сумму по пробелу
            # .split() по умолчанию разделяет по пробелам и возвращает список строк
            parts = input().split()
            name = parts[0]
            amount = int(parts[1])

            # Используем метод словаря get(). Он безопасен и удобен.
            # Если клиент (ключ 'name') уже есть в словаре, get() вернет его текущую сумму.
            # Если клиента еще нет, get() вернет значение по умолчанию, которое мы указали (0).
            # Затем к полученному значению мы прибавляем новую сумму и записываем результат в словарь.
            client_totals[name] = client_totals.get(name, 0) + amount

        # Выводим итоговый словарь с результатами
        print(client_totals)

except (ValueError, IndexError):
    # Эта часть кода сработает, если ввод некорректен.
    # Например, если вместо числа введено слово, или в строке с транзакцией нет суммы.
    # В таких случаях программа выведет пустой словарь, что является логичным
    # поведением при невозможности обработать данные.
    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 !