Les données sont stockées de façon indépendante du programme qui les utilise. Il est donc nécessaire d’accéder à celles ci (depuis le programme) à travers trois étapes:
Pour cet exercice, vous devez utiliser en priorité le fichier
squelette python-08-fichiers-lecture.py.
IMPORTANT : Enregistrez le avec
Right Click + Save Link As... pour conserver
l’encodage.
Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :
Les données utilisées pour cet exercice sont stockées dans le fichier
python-08-fichiers-lecture-data-listes.csv.
Ce fichier contient 100 listes de 10 nombres compris dans l’intervalle
[10, 100[. Le fichier est encodé en utf8. IMPORTANT :
Enregistrez le avec Right Click + Save Link As... pour
conserver l’encodage.
L’objectif est d’écrire une fonction read_data() :
n
listes d’entiers si le fichier comporte n lignes.Utiliser la construction with et la fonction open()
pour ouvrir le fichier.
file est nécessaire. Il peut être fourni
sous la forme d’une chaîne de caractères ;mode est optionnel mais c’est une bonne
pratique que de le fournir explicitement. On veut ici ouvrir le fichier
en lecture. Quelle est la valeur à passer ?encoding est optionnel. Il est cependant
vivement recommandé de le fournir. Pour l’essentiel on travaillera avec
l’encodage universel utf8 mais d’autres encodages sont
parfois utilisés pour les fichiers français (latin-1 ou
iso-8859-1) ou sur le système d’exploitation Windows
(cp850).La fonction open() renvoie un objet io.TextIOWrapper,
qui fournit quelques méthodes de lecture simples à manipuler.
Parmi ces méthodes, readlines()
est intéressante, car elle permet de récupèrer les données du fichier en
une seule opération.
Explorons à présent l’objet retourné par readlines().
Les données lues dans un fichier texte par readlines()
sont retournées sous la forme d’une liste de chaines de caractères.
Relire attentivement la consigne et jeter un oeil sur les doctests pour
avoir une idée précise de l’attendu.
Utiliser une list comprehension pour fabriquer une liste d’entiers pour chaque élément de la liste retournée.
Vérifier le bon fonctionnement de la fonction en effectuant un appel
depuis main() et en affichant la valeur de retour (les
doctests de la fonction donnent des exemples d’appel et les valeurs de
retour correspondantes).
Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal.
$ python -m doctest exercice.py -v
La totalité des doctests doivent réussir.
Afficher la totalité des listes d’entiers contenues dans le fichier
listes.csv.
Ecrire une fonction get_elt_k() qui :
read_data() ;Vérifier la validité de la fonction en affichant la 37ième liste.
Ecrire les fonctions suivantes :
get_first() qui prend en argument une liste et retourne
le premier élément de cette liste ;get_last() qui prend en argument une liste et retourne
le dernier élément de cette liste ;get_max() qui prend en argument une liste et retourne
le maximum de cette liste ;get_min() qui prend en argument une liste et retourne
le minimum de cette liste ;get_sum() qui prend en argument une liste et retourne
la somme de cette liste.Vérifier la validité des fonctions précédentes en recherchant :