Les collections

Les collections sont des types de données qui contiennent plusieurs données. Nous avons vu :

  • les chaines de caractères (str)
  • les listes (list)
  • les tuples (tuple)
  • les dictionnaires (dict)

Les Dictionnairs (dict) sont des collections non ordonnées de couples clef-valeur.

Exercices - dictionnaires

Les questions suivantes vont vous faire manipuler les instructions principales.

La cellule suivante crée un dictionnaire vide.


In [ ]:
training = {}

Ajoutez une clef subject avec la valeur Python


In [ ]:
training["subject"] = "Python"

Ajoutez une clef duration avec la valeur correspondant au nombre de jours de formation (ce nombre de jours est un entier


In [ ]:
training["duration"] = 2

Affichez "Clef exist" si la clef trainees existe sinon "Clef n'existe pas"


In [ ]:
print("Clef existe" if "trainees" in training else "Clef n'existe pas")

Créez la clef trainees et affectez lui une valeur correspondant au nombre de stagiaires.


In [ ]:
training["trainees"] = 6

Affichez la liste des clefs


In [ ]:
print(list(training))

Modifiez la clef trainees pour que la valeur associée soit incrémentée de 2. Attention, n'affectez pas une nouvelle valeur mais la valeur actuelle incrémentée de 2.


In [ ]:
training["trainees"] += 2

Exercices : dictionnaires et fonctions

Vous avez remarqué que les différentes questions précédentes permettent d'utiliser un dictionnaire comme structure de données et qu'ainsi, il est possible de modifier certaines informations de ces structures de données.

Nous pouvons accéder directement à ces informations par leur clef, mais cela nécessite de connaitre les clefs. Et une faute d'orthographe peut entrainer des erreurs de manière parfaitement silencieuse. Par exemple :

training = {}
training["subject"] = "Pthon"
# Oups, erreur, il faut corriger
training["suject"] = "Python"

Dans cet exemple, la dernière ligne ne corrige pas la clef mais en ajoute une nouvelle. Mais la valeur incorrecte n'est pas corrigée et restera fausse.

Pour éviter ce type d'erreur, nous allons utiliser des fonctions.

Commencez par créer le corps de la fonction suivante qui retourne un dictionnaire avec une clef subject et une clef duration.


In [ ]:
def create_training(subject: str, duration: int):
    pass  # TODO: remplacez le pass par l'implémentation
    return dict(subject=subject, duration=duration)

Créez une fonction add_trainees ajoutant un nombre de participant (le paramètre est de type int)


In [ ]:
def add_trainees(training: dict, how_many: int):
    training['trainees'] = training.get('trainees', 0) + int(how_many)

Attention, n'oubliez pas un idiome en Python : si vous modifiez la valeur, alors la fonction ne doit rien retourner. Si la fonction retourne un dictionnaire représentant la formation, alors la donnée passée en paramètre ne doit pas être modifiée.

  • Créez une formation avec le sujet Python de 5 jours.
  • Répétez ensuite plusieurs fois l'ajout de participants.
  • Vérifiez ainsi que tout fonctionne bien.

In [ ]:

Pour finir, créez une fonction should_cancel_training qui retournera True si la formation a strictement moins de 3 participants, False sinon.


In [ ]:
def should_cancel_training(training):
    return training.get('trainees', 0) < 3

Écrivez le code affichant le message adéquat dans la cellule suivante.


In [ ]:
TRAINING_CANCELED = "La formation {} est annulée"
TRAINING_MAINTAINED = "La formation {} est maintenue"

In [ ]:
tr_python = create_training("Python", 5)

print((TRAINING_CANCELED if should_cancel_training(tr_python) else TRAINING_MAINTAINED)
      .format(tr_python['subject']))