Notebook originel: gbm3A_tp2.ipynb
Table des matières
Exercice 1: modification des objets mutables
Exercice 2: clés et valeurs
Exercice 3: Récursion
Exercice 4: numération romaine
TP2🔗
Exercice 1: modification des objets mutables🔗
Créez une liste
[1, 2, 3], et affectez la à une variablenombres.Créez un dictionnaire
dict1, et affectez à la clénumdedict1la variablenombres.Modifier
nombresen lui insérant en 2e position1.5(utiliserlist.insert).Vérifiez ce que vaut maintenant la clé
numdedict1. Que pouvez vous en déduire?La fonction
id(nombres)du langage Python vous permet de connaitre l’adresse mémoire de l’objet Python associé ànombres. Affichez la, et affichez l’adresse en mémoire de la clénumdedict1.
Exercice 2: clés et valeurs🔗
Écrivez une fonction print_key_val qui pour un dictionnaire passé en paramètre de celle-ci renvoie les pairs de clés-valeurs du dictionnaire formatées suivant l’exemple ci-dessous. Seules les pairs clés-valeurs de premier niveau sont concernées.
>>> dict2 = dict(prénom="John", nom="Doe", âge=42)
>>> print_key_val(dict2)
Clé: prénom, Valeur: John
Clé: nom, Valeur: Doe
Clé: âge, Valeur: 42
Modifiez votre fonction de manière à ce que les clés soient alignées et les valeurs str soient encadrés par des guillemets (utilisez les fonctionnalités de formattage de chaîne).
>>> print_key_val_plus(dict2)
Clé: prénom, Valeur: 'John'
Clé: nom, Valeur: 'Doe'
Clé: âge, Valeur: 42
Exercice 3: Récursion🔗
Écrivez une fonction print_key_val_id qui prenant un dictionnaire en paramètre et qui pour toutes ses clés affiche l’adresse en mémoire des valeurs associées. Si une des valeurs est un dictionnaire, on répète l’opération sur cet objet de façon récursive. La sortie sera formatée selon l’exemple suivant.
Attention, les adresses mémoires changent possiblement à chaque exécution, ne vous fiez pas à celles de l’exemple pour vérifier votre résultat.
>>> dict3 = {
... "prénom": "John",
... "nom": "Doe",
... "âge": 42,
... "animal":{
... "nom": "Ulysse",
... "type": "chien"
... }
...}
>>> print_key_val_id(dict3)
prénom: John [140051913451376]
nom: Doe [140051913451440]
âge: 42 [140053133116944]
animal: {'nom': 'Ulysse', 'type': 'chien'} [140051918196672]
nom: Ulysse [140051913523376]
type: chien [140051913523504]
Exercice 4: numération romaine🔗
Écrivez une fonction qui prend en entrée un entier entre 1 et 4999 et qui retourne sa valeur en numération romaine (chaîne de caractères).
>>> arab2roman(1984)
MCMLXXXIV
Vous construirez progressivement la chaîne en utilisant les définitions suivantes (établissez d’abord l’algorithme à la main):
>>> roman_symbols = dict(M=1000, CM=900, D=500, CD=400, C=100, XC=90, L=50, XL=40, X=10, IX=9, V=5, IV=4, I=1) # {symbol: value}
>>> roman_values = { val: key for key, val in roman_symbols.items() } # {value: symbol}
Inversement, écrivez une fonction qui prends une chaîne en notation romaine et qui retourne sa valeur en chiffres arabes.
>>> roman2arab("MCMLXXXIV")
1984
Vérifiez la cohérence de vos convertisseurs pour tous les entiers de 1 à 4999.
[1]:
roman_symbols = dict(M=1000, CM=900, D=500, CD=400, C=100, XC=90, L=50, XL=40, X=10, IX=9, V=5, IV=4, I=1) # {symbol: value}
roman_values = { val: key for key, val in roman_symbols.items() } # {value: symbol}
[2]:
def arab2roman(num):
"""
Convertit un nombre arabe en nombre romain (chaîne de caractères).
>>> arab2roman(3)
III
>>> arab2roman(14)
XIV
>>> arab2roman(99)
XCIX
>>> arab2roman(509)
DIX
>>> arab2roman(1984)
MCMLXXXIV
>>> arab2roman(4888)
MMMMDCCCLXXXVIII
"""
roman = ""
return roman
[4]:
def roman2arab(roman):
"""
Convertit un nombre romain (chaîne de caractères) en nombre arabe.
>>> roman2arab("III")
3
>>> roman2arab("XIV")
14
>>> roman2arab("DIX")
509
>>> roman2arab("MCMLXXXIV")
1984
>>> roman2arab("MMMMDCCCLXXXVIII")
4888
"""
num = 0
return num
[ ]:
Cette page a été générée à partir de
gbm3A_tp2.ipynb.