Exercices d'entraînement☘
Ces exercices doivent être utilisés pour vous entraîner à programmer. Ils sont généralement accompagnés d'aide et de leur solution pour vous permettre de progresser.
Avant de vous précipiter sur ces solutions dès la première difficulté, n'oubliez pas les conseils suivants :
- Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
- Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
- Avez-vous utilisé des affichages intermédiaires, des
print()
, pour visualiser au fur et à mesure le contenu des variables ? - Avez-vous testé le programme avec les propositions de tests donnés dans l'exercice ?
- Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?
Rappels
- Chaque programme Python doit être sauvegardé sous forme de fichier texte avec l'extension
.py
.
Enregistrez ce fichier dans le dossier[NSI_Tables_Donnees]
avec le nom donné à l'exercice :ProgC01.51.py
,ProgC01.52.py
, etc... - Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche
[F5]
. - Le programme principal doit contenir des tests personnalisés :
##----- Programme principal et tests -----## if __name__ == '__main__': # Placer les tests ici
Dans les exercices de cette page, on part de la table de données (tableau
de dictionnaires) Courses
définie par :
1 2 3 |
|
ProgC01.51☘
Créez un programme permettant d'exporter la table Courses
dans le fichier
Courses01.csv
:
Code | Nom | Prix | Quantité |
---|---|---|---|
88 | Pommes | 1.5 | 3.2 |
157 | Poires | 2.55 | 1.2 |
72 | Pêches | 3.74 | 0.5 |
Une solution
1 2 3 4 5 6 7 |
|
ProgC01.52☘
À la suite du programme précédent, on ajoute la ligne :
9 |
|
-
Enregistrez ce programme sous le nom
ProgC01.52.py
. -
Complétez ce programme par les instructions permettant d'ajouter à la liste initiale de courses les abricots, de code 49, coûtant 4,20 euros par kilogramme sachant qu'on en a acheté 1,75 kg.
-
Exportez la nouvelle table obtenue sous la forme d'un fichier CSV intitulé
Courses02.csv
.Une solution
1 2 3 4 5 6 7 8 9 10 11 12
from fonctions_csv import * Courses = [{'Code': 88, 'Nom': 'Pommes', 'Prix': 1.5, 'Quantité': 3.2}, {'Code': 157, 'Nom': 'Poires', 'Prix': 2.55, 'Quantité': 1.2}, {'Code': 72, 'Nom': 'Pêches', 'Prix': 3.74, 'Quantité': 0.5}] exporte_csv(Courses, 'Courses01.csv', ['Code', 'Nom','Prix','Quantité']) nouvel_achat = {'Code': 49, 'Nom': 'Abricots', 'Prix': 4.2, 'Quantité': 1.75} Courses.append(nouvel_achat) exporte_csv(Courses, 'Courses02.csv', ['Code', 'Nom','Prix','Quantité'])
ProgC01.53☘
-
Copiez, collez et enregistrez sous le nom
ProgC01.53.py
le code suivant :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
from fonctions_csv import * def ajoute_prix_paye(table, attribut1, attribut2): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut1, attribut2 - str, chaînes de caractères étant deux clés de cette table et dont les valeurs sont des nombres Sortie: None - Modifie table en ajoutant une nouvelle clef correspondant au produit des valeurs des attributs passés en paramètre (fonction à effet de bord) """ pass def prix_total(table, attribut): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut - str, chaîne de caractères étant une clé de cette table dont les valeurs sont des nombres Sortie: int ou float - La somme des valeurs de la clé attribut """ pass ##----- Programme Principal -----## if __name__ == '__main__': Courses = [ {'Code': 88, 'Nom': 'Pommes', 'Prix': 1.5, 'Quantité': 3.2}, {'Code': 157, 'Nom': 'Poires', 'Prix': 2.55, 'Quantité': 1.2}, {'Code': 72, 'Nom': 'Pêches', 'Prix': 3.74, 'Quantité': 0.5}, {'Code': 49, 'Nom': 'Abricots', 'Prix': 4.2, 'Quantité': 1.75}] ajoute_prix_paye(Courses, 'Prix', 'Quantité') # Export du fichier Courses03.csv print(prix_total(Courses, 'Prix Payé'))
-
Complétez la définition de la fonction
ajoute_prix_paye()
:3 4 5 6 7 8 9 10 11 12
def ajoute_prix_paye(table, attribut1, attribut2): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut1, attribut2 - str, chaînes de caractères étant deux clés de cette table et dont les valeurs sont des nombres Sortie: None - Modifie table en ajoutant une nouvelle clef correspondant au produit des valeurs des attributs passés en paramètre (fonction à effet de bord) """
Fichier à obtenir
L'appel
ajoute_prix_paye(Courses, 'Prix', 'Quantité')
renvoie la table ci-dessous :Code Nom Prix Quantité Prix Payé 88 Pommes 1.5 3.2 4.8 157 Poires 2.55 1.2 3.06 72 Pêches 3.74 0.5 1.87 49 Abricots 4.2 1.75 7.35 Une piste
Vous pouvez utiliser la fonction
round(valeur, 2)
pour arrondir le flottantvaleur
à deux chiffres après la virgule.Une solution
3 4 5 6 7 8 9 10 11 12 13 14 15
def ajoute_prix_paye(table, attribut1, attribut2): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut1, attribut2 - str, chaînes de caractères étant deux clés de cette table et dont les valeurs sont des nombres Sortie: None - Modifie table en ajoutant une nouvelle clef correspondant au produit des valeurs des attributs passés en paramètre (fonction à effet de bord) """ for ligne in table: prix = ligne[attribut1]*ligne[attribut2] ligne['Prix Payé'] = round(prix, 2)
-
Exportez la liste obtenue sous la forme d'un fichier CSV intitulé
Courses03.csv
.Une solution
33 34 35 36 37 38 39 40 41 42 43
##----- Programme Principal -----## if __name__ == '__main__': Courses = [ {'Code': 88, 'Nom': 'Pommes', 'Prix': 1.5, 'Quantité': 3.2}, {'Code': 157, 'Nom': 'Poires', 'Prix': 2.55, 'Quantité': 1.2}, {'Code': 72, 'Nom': 'Pêches', 'Prix': 3.74, 'Quantité': 0.5}, {'Code': 49, 'Nom': 'Abricots', 'Prix': 4.2, 'Quantité': 1.75}] ajoute_prix_paye(Courses, 'Prix', 'Quantité') exporte_csv(Courses, 'Courses03.csv', ['Code', 'Nom','Prix','Quantité', 'Prix Payé']) print(prix_total(Courses, 'Prix Payé'))
-
Complétez la définition de la fonction
PrixTotal()
:
Vérifiez que cet achat de courses coûte 17,08 euros.17 18 19 20 21 22 23 24
def prix_total(table, attribut): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut - str, chaîne de caractères étant une clé de cette table dont les valeurs sont des nombres Sortie: int ou float - La somme des valeurs de la clé attribut """
Une solution
17 18 19 20 21 22 23 24 25 26 27 28
def prix_total(table, attribut): """ table - list, Table de données représentée par un tableau de dictionnaires ayant les mêmes clés attribut - str, chaîne de caractères étant une clé de cette table dont les valeurs sont des nombres Sortie: int ou float - La somme des valeurs de la clé attribut """ prix = 0 for ligne in table: prix += ligne[attribut] return prix