Informatique TP1.2 Stockage des données en python L'objectif de ce TP est de stocker des notes dans une variable tout d'abord, puis dans un fichier texte. 1 Collecte de notes dans une variable Rappel des instructions utiles à cette partie : Pour quoi faire ? fonction entrée(s) sortie exemples Travail sur les listes : Initialiser une liste Ajouter un élément à une liste a=[ ] liste=liste+[1] liste=liste+[a] Déterminer le nombre d'éléments dans une liste Lire la dernière valeur stockée dans une liste len liste entier : nombre d'éléments de la liste liste += [1] len(liste) liste[-1] Affichage depuis un programme vers la console : afficher un message vers la print console afficher un saut de ligne print vers la console chaine de caractère ou variable aucune entrée print('a=',a) \n dans une chaine de caractère print('a\nb') print() Saisie d'une valeur au cours d'un programme : demander une saisie dans la console input message en chaine de caractères chaine de caractères a=input("a=?\n") flottant a=float(a) Convertir une chaine de caractères en flottant : float chaine de caractère contenant un flottant Comme il y aura plusieurs notes, on les stockera dans une liste notes 1) Lancer Spyder et fermer les programmes ouverts dans l'éditeur issus de la session précédente. 2) Dans la console, créer la variable globale notes en lui affectant une liste vide ainsi que la variable globale moyenne en lui affectant la valeur 0. 3) Créer un nouveau programme et l'enregistrer sous le nom gestion_notes.py dans un dossier TP1_2_stockage. Liste des opérations que devra effectuer le programme gestion_notes.py: • afficher : - un saut de ligne pour séparer les messages du programme des messages écrits au lancement dans la console, - le message 'La liste des notes est :' suivi de la liste des notes, - le message 'La moyenne des notes est :' suivi de la moyenne. Lycée Jules Ferry Cannes Page 1 sur 3 TSI1 Informatique • • • 4) 5) TP1.2 Stockage des données en python demander la saisie d'une note par l'utilisateur. Cette note sera ajoutée comme un flottant dans la liste notes calculer la moyenne par la formule moyenne=(moyenne*(len(notes)-1)+notes[-1])/len(notes) une fois la nouvelle note mémorisée, on affiche un message (pour confirmer la saisie) qui sera identique au message avant la saisie. Vous pouvez exécuter plusieurs fois le programme gestion_notes pour constater que notes et moyenne sont bien des variables globales. Elles sont mémorisées pendant toute la durée de la session Spyder. Fermer puis relancer Spyder. Vous constatez que les variables notes et moyenne ont été supprimées. 2 Stockage des données dans un fichier Afin de ne pas perdre les données d'une session à une autre, il convient de stocker les variables dans un fichier. Utiliser votre programme plusieurs fois, ou affecter directement dans la console les variables suivantes: >>> notes=[8,10,12] >>> moyenne=10 Rappel des instructions utiles à cette partie : Pour quoi faire ? fonction entrée(s) open chaines de Créer un fichier caractères : nom (ou écraser un fichier du fichier, mode existant) de lecture 'w' open Ouvrir un fichier existant Exécuter les lignes de commandes contenues dans une chaine de caractères exec chaines de caractères : nom du fichier, mode de lecture 'r' chaine de caractères contenant des lignes de code en python sortie le fichier exemples monfichier=open('archives.txt','w') NB permet l'écriture le fichier monfichier=open('archives.txt','r') erreur si le fichier n'existe pas celles contenus dans le code exécuté exec("a=1") affecte la valeur 1 à la variable a Méthodes permettant le travail sur un fichier nommé f à l'ouverture : Pour quoi faire ? Méthode Exemples Commentaires Lire le contenu d'un la variable texte contient la chaine de caractère read texte=f.read() fichier ouvert en lecture contenu dans le fichier f. (mode 'r') Ecrire dans un fichier write la chaine de caractères est écrite dans le fichier f f.write('texte à ouvert en écriture écrire') à la suite du texte qui a été écrit depuis (mode 'w') l'ouverture en mode écriture 'w' Fermer un fichier close f.close() La fermeture de fichier ouvert est une bonne habitude à prendre (évite les conflits d'écriture). 6) A la fin du programme gestion_notes.py ajouter les instructions permettant de : - créer un fichier notes_save.txt en utilisant la fonction open en mode écriture 'w' - créer une chaine de caractères, stockée dans une variable script, contenant le code pour générer la variable notes à partir de son contenu actuel et la variable moyenne affectée de sa valeur. Lycée Jules Ferry Cannes Page 2 sur 3 TSI1 Informatique TP1.2 Stockage des données en python solution partielle : "notes="+str(notes)+"\nmoyenne… permettra à l'exécution de créer les variables notes et moyenne affectées de leurs valeurs actuelles. - ouvrir le fichier notes_save.txt - écrire la chaine de caractères script dans le fichier notes_save.txt 7) Après avoir exécuté, une fois votre programme gestion_notes.py modifié selon la question 7), ajouter en début de programme, les instructions permettant de récupérer les informations stockées dans le fichier notes_save.txt: - ouvrir le fichier notes_save.txt en lecture (mode 'r') que l'on nommera file - lire le contenu du fichier file dans la variable script - fermer le fichier file, - exécuter le code contenu dans la chaine de caractère stockée dans script. 8) Exécuter plusieurs fois votre programme gestion_notes.py afin de vérifier qu'il fonctionne correctement. 9) Vous pouvez ouvrir le fichier notes_save.txt avec le bloc note (ou avec Spyder) pour constater qu'il s'agit bien d'un fichier texte. Le répertoire par défaut, où est enregistré ce fichier, est celui où a été enregistré le dernier programme python lors de son exécution. 10) Vérifier que la place prise par un caractère (chiffre, lettre, espace, retour à la ligne) prend bien un octet. Pour cela, on comparera le nombre de caractères dans le fichier à l'espace pris par le fichier en mémoire (cliquer droit sur le fichier dans l'explorateur windows). 11) Pour compléter la programmation, on peut envisager de : - mémoriser les notes concernant plusieurs activités (kholles, interrogation et DS) - calculer la moyenne générale de ces activités éventuellement coefficientées (coefficient respectifs 3, 2 et 5). Lycée Jules Ferry Cannes Page 3 sur 3 TSI1