TP 3: PYTHON 3 – quelques fonctionnalités et bibliothèques I- Travailler avec un fichier externe : Il peut être intéressant dans certains projets d’aller chercher les informations à utiliser dans un fichier externe (résultats de mesures électriques, fichier texte à modifier dans les applications de cryptographie …) Pour effectuer des opérations sur des fichiers externes, Python 3 possède des fonctions permettant notamment de créer, d’ouvrir, de compléter et de fermer un fichier texte. Un exemple (exemple1.py): Le programme suivant permet le cryptage en ROT13 d’un fichier texte : monfichier.txt (que l’on crée en début de programme). Le texte codé est placé dans le fichier monfichier_code.txt Pour plus de précisions sur les fonctions utilisées et leurs paramètres, vous pourrez mener des recherches sur la toile (exemple : http://python.developpez.com/cours/apprendre-python3/?page=page_11#L11-E http://fr.wikibooks.org/wiki/Apprendre_%C3%A0_programmer_avec_Python/Les_fichier s) 1 #crée un fichier monfichier sur le repertoire courant, code en rot13 et lit le fichier codé 2 # affiche le repertoire courant 3 import os 4 rep_cour = os.getcwd() 5 print (rep_cour) 6 7 i=0 8 resultat="" 9 10 # efface le contenu du fichier monfichier 11 efface= open("monfichier", "w") 12 text = "" 13 efface.write(text) 14 efface.close() 15 16 # crée et rempli le fichier monfichier 17 Fichier = open('monfichier','a') 18 Fichier.write("je ne suis plus en vacances ! à bientôt") 19 Fichier.close() 20 21 #lit et affiche le contenu de try 22 lit_fichier = open('monfichier', 'r') 23 t = lit_fichier.read() 24 lit_fichier.close() 25 26 #code chaque caractère lu en ROT13 27 while (i<len(t)): 28 x=t[i] 29 rang=ord(x) 30 if ((rang>=97)and(rang<=122)): 31 rang=(((rang-97)+13)%26)+97 32 r=chr(rang) 33 else: 34 r=chr(32) 35 resultat=resultat+r 36 i=i+1 37 38 # crée et rempli le fichier try 39 Fichier = open('monfichier_code','a') 40 Fichier.write(resultat) 41 Fichier.close() 42 1print(resultat) Qu’est-ce que le codage ROT13 ? Terminale Spécialité ISN 2- Est-il nécessaire de créer un programme particulier pour décoder un fichier texte dodé en ROT13 ? 3- Donner les prototypes et les actions opérées par les fonctions : 4- Tester le programme proposé en utilisant un fichier texte de votre choix. II- Travailler avec une bibliothèque externe ( la bibliothèque « tkinter ») : La bibliothèque tkinter est une bibliothèque graphique, qui permet en python 3 de créer des Interfaces Homme Machine (IHM). En utilisant tkinter, on peut ainsi créer des fenêtres de dialogue, des menus déroulants … Attention : vous trouverez sur la toile, beaucoup d’exemples mettant en jeu tkinter. Ces exemples sont souvent donnés en python 2. Ils sont souvent réutilisable en python 3 en effectuant les modifications nécessaires classiques (print a en python 2 est remplacé par print(a) en python3) et en utilisant tkinter et les éléments associés avec un t minuscule en python3 alors qu’il apparaît avec un T majuscule en python 2 L’exemple ci-dessous présente quelques fonctionnalités de cette bibliothèque tkinter. Vous trouverez plus d’informations sur cette bibliothèque sur la toile (http://www.siteduzero.com/tutoriel-3-660465-des-interfaces-graphiques-avectkinter.html http://fr.wikibooks.org/wiki/Programmation_Python/Tkinter ) Terminale Spécialité ISN 1 #------------ exemple 2----------------------------------2 # création de fenêtres sous tkinter et appel de fonctions 3 #--------------------------------------------------------4 from tkinter import * 5 chaine='salut' 6 #--------------------------------------------------------7 #création de la fenêtre principale 8 root = Tk() 9 root.title('fenetre principale') 10 champ_label = Label(root, text="Salut vous !") 11 champ_label.pack() 12 #root.wm_state(newstate="zoomed") 13 14 15 #------------------------------------------------------------16 17 # création de la sous fenetre 1 et des éléments la constituant 18 def createframe1(): 19 global reponse 20 global affichage 21 22 fen1=Toplevel(root) 23 fen1.title('subroot1') 24 #paramétrage d'une zone de saisie 25 nom = Label(fen1, text = 'Votre nom :') 26 reponse = Entry(fen1) 27 #paramétrage d'un bouton de validation 28 valeur = Button(fen1, text =' Valider', command=repondre) 29 affichage = Label(fen1, width=30) 30 #paramétrage d'un label 31 votre_nom=Label(fen1, text='Votre nom est :') 32 #paramétrage d'un bouton de destruction de la fenêtre 33 bouton_quitter_fen1 = Button(fen1, text="Quitter", command= fen1.destroy) 34 35 #création des zones paramétrées précédemment 36 nom.pack() 37 reponse.pack() 38 valeur.pack() 39 votre_nom.pack() 40 affichage.pack() 41 bouton_quitter_fen1.pack() 42 #---------------------------------------------------------------43 44 #création de la sous fenetre 2 45 def createframe2(): 46 fen2=Toplevel(root) 47 fen2.title('subroot2') 48 bouton_quitter_fen2 = Button(fen2, text="Quitter", command= fen2.destroy) 49 bouton_quitter_fen2.pack() 50 #---------------------------------------------------------------51 52 # appel des sous fenetre et création de celles-ci 53 54 btn=Button(root,text=chaine,command = createframe1) Projet : calculatrice pour informaticien Créer un programme qui permette d’effectuer les conversions des nombres utiles en informatique (binaire/décimale ; décimale/binaire ; binaire/hexadécimale ; hexadécimale/binaire ; décimale/hexadécimale ; hexadécimale/décimale) Cahier des charges : - Une interface graphique sera créée pour l’utilisation de cette calculatrice. - Pour chacune des conversions, une fonction en python sera construite (par exemple on construira la fonction BinHex pour la conversion binaire/hexadécimal) - Les résultats seront consignés dans un fichier texte. On gardera en mémoire toutes les opérations effectuées. L’utilisateur aura la possibilité d’effacer le contenu du fichier résultat. Terminale Spécialité ISN