TP 3: PYTHON 3 – quelques fonctionnalités et bibliothèques -

publicité
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
Téléchargement