Files
1ereNSI/representation_construits/chapitre_2/td/TD.ipynb
T

7.7 KiB

TD - Les dictionnaires

Exercice 1 - Fruits

On considère le dictionnaire suivant qui contient différents fruits ainsi que leurs quantités.

In [ ]:
fruits = {"pommes": 8, "melons": 3, "poires": 6}
  1. Quelle instruction permet d'accéder au nombre de melons ?
In [ ]:
  1. On a acheté 16 clémentines et utilisé 4 pommes pour faire une tarte. Quelles instructions permettent de mettre à jour le dictionnaire ?
In [ ]:

Exercice 2 - Encore des fruits

Répondez aux questions suivantes sans exécuter les scripts proposés.

Vous les exécuterez pour vérifier vos réponses.

  1. Qu'affiche le programme suivant ?
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for c in fruits.keys():
    print(c)
  1. Qu'affiche le programme suivant ?
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for cle, valeur in fruits.items():
    print(cle, "->", valeur)
  1. Qu'affiche le programme suivant ?
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for v in fruits.values():
    print(v)
  1. Qu'affichent les instructions suivantes ? Que peut-on en déduire sur le comportement de in avec un dictionnaire ?
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
print('pommes' in fruits)
print('bananes' in fruits)
print(4 in fruits)
In [ ]:

Exercice 3 - Agenda

Dans un agenda, un contact est modélisé par un dictionnaire :

  • La clé du dictionnaire est le nom des contacts.
  • La valeur du dictionnaire est un tuple dont la première valeur est leur âge (type int) et la seconde leur ville natale (str).

Voici une petite liste de contact :

  • Pierre a 37 ans et est né à Lille.
  • Zoé a 21 ans et est née à Nice.
  • Ali a 54 ans et est né à Bordeaux.
  • Aymeric a 72 ans et est né à Lyon.
  1. Définissez le dictionnaire de contacts.

  2. Donnez les commandes pour :

    1. accéder à l'âge de Zoé
    2. accéder à la ville natale d'Ali.
    3. décider si 'Jean' est dans le dictionnaire ou pas.
  3. Écrire le prédicat est_present(dic, nom) qui renvoie True si le nom est présent dans le dictionnaire dic e tFalse sinon.

  4. Écrire la fonction renvoyer_age(dic, nom) qui, si le nom est présent dans le dictionnaire dic, renvoie son âge.

  5. Écrire la fonction renvoyer_ville(dic, nom) qui, si le nom est présent dans le dictionnaire dic, renvoie sa ville natale.

  6. Écrire la fonction renvoyer_noms(dic, ville) qui renvoie un tableau de tous les noms dont la ville de naissance est ville.

  7. Écrire la procédure ajouter(dic, nom, age, ville) qui, si le nom est n'est pas présent dans le dictionnaire dic, l'y ajoute.

Remarques :

  • Documentez les fonction
  • Réalisez les doctests significatifs.
In [ ]:
# Question 1

# Question 2.A

# Question 2.B

# Question 2.C
In [ ]:
# Question 3
In [ ]:
# Question 4
In [ ]:
# Question 5
In [ ]:
# Question 6
In [ ]:
# Question 7

Exercice 4 - le SCRABBLE

Voici un descriptif des valeurs des lettres au scrabble français.

  • 0 point : Joker ×2 (appelés en français jokers ou lettres blanches)
  • 1 point : E ×15, A ×9, I ×8, N ×6, O ×6, R ×6, S ×6, T ×6, U ×6, L ×5
  • 2 points : D ×3, M ×3, G ×2
  • 3 points : B ×2, C ×2, P ×2
  • 4 points : F ×2, H ×2, V ×2
  • 8 points : J ×1, Q ×1
  • 10 points : K ×1, W ×1, X ×1, Y ×1, Z ×1
  1. Définissez un dictionnaire score qui prend les lettres majuscules en clés et leur score en valeur
  2. Écrire une fonction calculer_score qui prend une chaîne de caractère mot en paramètre et renvoie le score du mot s'il est possible de l'écrire avec les lettres du scrabble et None sinon.
  3. Écrire une fonction calculer_scores qui prend un tableau de mots et renvoie un tableau de score de chaque mot.

Remarques :

  • Documentez la fonction
  • Réalisez les doctests significatifs.
  • Pour tester vos fonctions, il est possible d'utiliser la liste de mots suivante :
liste_mots = ['extenue', 'ligner', 'serier', 'delasse', 'doperas', 'drapes', 'gelee', 'doucir', 'lamparo', 'salee', 'gueri', 'mulots', 'trolley', 'houppe', 'hesitez', 'vogues', 'embelli', 'etonnez', 'mers', 'riviere', 'risquer', 'grogner', 'postale', 'beler', 'lofer', 'rincent', 'boni', 'charter', 'censeur', 'glaise','sauts', 'striee', 'perclus', 'dessous', 'tireras', 'gommant', 'cooptes', 'bombyx', 'gauches', 'filiere', 'devoree', 'viriez', 'murit', 'miteux', 'empenne', 'soudez', 'cochers', 'dejoua', 'tuer', 'present']
In [ ]:
# Question 1
In [ ]:
# Question 2
In [ ]:
# Question 3