2.3.3. Exercice 3 - Structure de données#
2.3.3.1. File I/O#
Utilisons ce que nous venons d’apprendre pour écrire un fichier un peu plus complexe.
Créez un fichier appelé “ans.txt”
Ecrivez la phrase suivante : “C’est mon premier exercice d’entrées-sorties”.
Enregistrez le fichier
Relisez le fichier et ajoutez 3 nouvelles phrases : “Je viens de me rappeler que pi vaut approximativement 3,1416”, “Écrire ceci dans ce fichier”, “est un jeu d’enfant !”
Il est impossible de se souvenir de la valeur exacte de pi, mais nous pouvons vouloir changer la précision du pi que nous imprimons à volonté. Importons donc math pour obtenir la valeur exacte de pi et imprimer pi avec la précision souhaitée.
Image par Bernadette Wurzinger de Pixabay
Hint
Comment changer la précision ? Il suffit de changer l’entier qui précède f ! :1f => 0.1, :2f => 0.11, …
2.3.3.1.1. Code#
import math # Importer la librairie "math" pour accéder au nombre pi (math.pi)
# Code libre
# Créez un fichier appelé "ans.txt"
# Ecrivez la phrase suivante : "C'est mon premier exercice d'entrées-sorties".
# Enregistrez le fichier
# Relisez le fichier et ajoutez 3 nouvelles phrases : "Je viens de me rappeler que pi vaut approximativement 3,1416", "Écrire ceci dans ce fichier", "est un jeu d'enfant !"
#@title Code à compléter (au besoin)
# Conseils : S'il vous plaît, n'enlevez pas le \n que votre TA a soigneusement mis dans le code !
with open(________, '_', encoding="utf-8") as fhandler:
fhandler.write('______________________\n')
with open(________, '__', encoding="utf-8") as fhandler:
print(fhandler.readlines())
# Votre TA souhaite une précision à la quatrième décimale ici.
firstline = f'____________________________ {math.pi:._f}\n'
secondline = '_____________________________\n'
thirdline = '___________________________\n'
fhandler.writelines([___,____,___])
# Aller au début du fichier
fhandler.seek(0)
# Imprimer le contenu du fichier
print(fhandler.readlines())
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 3
1 #@title Code à compléter (au besoin)
2 # Conseils : S'il vous plaît, n'enlevez pas le \n que votre TA a soigneusement mis dans le code !
----> 3 with open(________, '_', encoding="utf-8") as fhandler:
4 fhandler.write('______________________\n')
6 with open(________, '__', encoding="utf-8") as fhandler:
NameError: name '________' is not defined
2.3.3.2. List#
2.3.3.2.1. Échauffement : Listes#
Ecrivez le code suivant sans utiliser de liste de compréhension:
plus_treize = [nombre + 13 for nombre in range(1,11)]
Utiliser la compréhension de liste ou les boucles pour créer une liste des vingt premiers cubes (i.e.,
x^3 de 0-19
)
# Question 1 : Code libre
#@title Question 1: Code à compléter (au besoin)
plus_treize = []
for ______ in range(1,11):
plus_treize._______(________)
print(plus_treize)
#@title ##### Votre réponse devrait ressembler à ceci
plus_treize = []
for nombre in range(1,11):
plus_treize.append(nombre+13)
print(plus_treize)
# Question 2 : Code libre
#@title Question 2 : Code à compléter (au besoin)
[_____________________________________ range(20)]
2.3.3.2.2. Exercice principal : Créer et manipuler des structures de données simples#
Objectifs d’apprentissage
Ce travail permettra de vérifier que vous possédez les compétences suivantes :
Créer des listes et des dictionnaires
Itérer à travers des listes, des tuples et des dictionnaires
Indexer des séquences (par exemple des listes et des tuples)
Définir des fonctions
Utiliser des arguments optionnels dans les fonctions
Définir des classes
Ajouter une méthode personnalisée à une classe
Q1. Créez une liste avec les noms de toutes les planètes du système solaire (dans l’ordre).
Q2. Demandez à Python de vous dire combien il y a de planètes en examinant votre liste.
Q3. Utilisez le découpage pour afficher les quatre premières planètes (les planètes rocheuses).
Q4. Itérer à travers vos planètes et imprimer le nom de la planète seulement s’il y a un s
à la fin.
Q1. Créez une liste avec les noms de toutes les planètes du système solaire (dans l’ordre).
# Créez votre liste ici
#@title Code à compléter (au besoin)
# Créez votre liste ici
planetlist = ['mercure', '___',__________________________]
Q2. Demandez à Python de vous dire combien il y a de planètes en examinant votre liste.
# Ecrivez votre code ici
# Indice : utilisez la fonction len()
# Réponse : vous devriez obtenir un seul nombre de 8
#@title Code à compléter (au besoin)
print(___(______________))
Q3. Utilisez le découpage pour afficher les quatre premières planètes (les planètes rocheuses).
# Ecrivez votre code ici
#@title Code à compléter (au besoin)
____________________[:_]
Q4. Interrogez vos planètes et n’imprimez le nom de la planète que s’il y a un s
à la fin.
# Ecrivez votre code ici
# Astuce : Accéder à la dernière lettre de chaque planète (planet[-1]), imprimer le nom de la planète si la lettre est égale à "s", continuer la boucle sinon.
# Réponses :
# vénus
# mars
# uranus
#@title Code à compléter (au besoin)
for ________________ in ____________:
if ___________[__]=='s':
print(__________)
else:
____________
2.3.3.3. Dictionnaire#
Q1) Créez maintenant un dictionnaire qui associe chaque nom de planète à sa masse
Vous pouvez utiliser les valeurs de cette fiche d’information de la NASA. Vous pouvez utiliser les unités que vous voulez, mais soyez cohérent.
# Ecrivez votre code ici
#@title Code à compléter (au besoin)
planetdict = {'mercure':______,'vénus':_____,'terre':_____,
'mars':__xx___,'jupiter':____,'saturne':____,'uranus':_____,'neptune':___}
Q2) Utilisez votre dictionnaire pour trouver la masse de la Terre
# Ecrivez votre code ici
#@title Code à compléter (au besoin)
print(________[___])
Q3) Créez et affichez une liste de planètes dont la masse est supérieure à 100 fois \(10^{24}\) kg.
# Ecrivez votre code ici
# Entre les crochets, vous accéderez aux noms (clés) de chaque entrée du dictionnaire.
# Vous devriez voir ceci : ['jupiter', 'saturne', 'nepturne']
#@title Code à compléter (au besoin)
q7list = []
for key in list(_______.keys()) :
# Maintenant, vous allez accéder aux valeurs associées à chaque paire clé-valeur
if _____________[key]>100 :
q7list.append(___) # le nom de chaque planète
else :
_________
print(q7list)
Q4) Ajoutez maintenant Pluton à votre dictionnaire
# Ecrivez votre code ici
# Vous devriez voir ceci : ['mercure', 'vénus', 'terre', 'mars', 'jupiter', 'saturne', 'uranus', 'nepturne', 'pluton']
#@title Code à compléter (au besoin)
_____________['pluton'] = ______
print(planetdict.keys())
2.3.3.4. Tuples#
Q1) Créer un tuple avec 5 noms des fruits. Par exemple: ‘pomme’, ‘orange’, ‘kiwi’, ‘banane’, ‘mangue’
# Écrivez votre code ici
#@title Code à compléter (au besoin)
fruits = ('____', '_____', '_____', '_____', '_____')
Ajoutez le nom de chaque fruit à la liste ‘fruits_selectionnes’ si sa longueur de nom est supérieure à 5, sinon, ajoutez ‘Non sélectionné’
# Écrivez votre code ici
#@title Code à compléter (au besoin)
fruits_selectionnes = []
for fruit in fruits:
# Maintenant, vous allez accéder à la longueur de chaque nom de fruit
if len(____) > ____:
fruits_selectionnes.append(_____)
else:
________.append('Non sélectionné')
# Imprimer les fruits sélectionnés
print(_____)
Q2) Créez une liste de tuples, chaque tuple représente un produit et son prix. Par exemple: produits = [(“Laptop”, 800), (“Smartphone”, 500), (“Casque”, 30), (“Tablette”, 120)]
# Écrivez votre code ici
#@title Code à compléter (au besoin)
produits = [("____", ___), ("_______", ___), ("______", ___), ("______", ___)]
Calculez le total des prix des produits et ajoutez le nom du produit s’il coûte plus de 50, sinon, ajoutez ‘Non sélectionné’.
# Écrivez votre code ici
#@title Code à compléter (au besoin)
# initialiser
total_prix = 0
produits_selectionnes = []
for produit, prix in ____:
total_prix += ____
if ____ > 50:
produits_selectionnes.append(____)
else:
______.append('Non sélectionné')
# Imprimer le résultat
print("Total des prix :", _____)
print("Produits sélectionnés :", ______)
2.3.3.5. Set#
Q1) Créez une liste des couleurs. Par exemple: couleurs = [‘rouge’, ‘vert’, ‘bleu’, ‘jaune’, ‘rouge’, ‘violet’, ‘vert’]
# Écrivez votre code ici
#@title Code à compléter (au besoin)
couleurs = ['_____', '_____', '_____', '_____', '_____', '_____', '_____']
Utilisez un ensemble pour éliminer les doublons et créez un nouvel ensemble (set) appelé ‘couleurs_uniques’.
# Écrivez votre code ici
#@title Code à compléter (au besoin)
# Convertir
couleurs_uniques = set(_____)
Créez une liste ‘couleurs_longues’ en ajoutant les couleurs de ‘couleurs_uniques’ dont la longueur est supérieure à 5.
# Écrivez votre code ici
#@title Code à compléter (au besoin)
# Hint: utilisez un variable pour accéder les éléments dans couleurs_uniques
couleurs_longues = [______ for _____ in couleurs_uniques if len(______) > 5]
# Imprimer les résultats
print("Couleurs uniques :", __________)
print("Couleurs longues :", __________)
Q2) Vous avez deux listes, l’une contenant les noms d’étudiants qui ont réussi le premier examen, et l’autre contenant les noms d’étudiants qui ont réussi le deuxième examen.
# Créez les deux listes avec 4 prénoms dans chaque liste
#@title Code à compléter (au besoin)
reussite_examen1 = {'____', '____', '____', '____'}
reussite_examen2 = {'____', '____', '____', '____'}
Créez une nouvelle variable reussite_les_deux
pour les étudiants qui ont réussi les deux examens
# Écrivez votre code ici
#@title Code à compléter (au besoin)
reussite_les_deux = ______._____(______)
Créez une nouvelle variable reussite_au_moins_un
pour les étudiants qui ont réussi au moins un examen.
# Écrivez votre code ici
#@title Code à compléter (au besoin)
reussite_au_moins_un = ______._____(______)
# Imprimer
print("Étudiants qui ont réussi les deux examens :", ________)
print("Étudiants qui ont réussi au moins un examen :", ________)