Pour créer un programme interactif, il peut être souhaitable de laisser la possibilité à l'utilisateur de rentrer des données en cours d'exécution, après l'affichage d'une question par exemple.
from random import randint
n = int(input("Combien de fois voulez-vous jouer à pile ou face ?\n"))
k = 0
for i in range(n):
if randint(0, 1):
k += 1
print("Vous avez obtenu %d fois pile et %d fois face." % (k, n-k))
Il existe des bibliothèques supplémentaires permettant à un programme Python de prendre en compte des évènements liés au clavier (frappe de touches) ou à la souris (clics et mouvements), mais ces fonctionnalités sont plutôt à gérer dans le cadre d'une interface graphique.
Un programme Python peut interagir avec un fichier en lecture ou en écriture.
f = open('/home/moi/coffre.odt', 'r+') # ouverture en lecture et écriture
contenu = f.read() # récupération du contenu
f.write("Avec les compliments d'Arsène Lupin.") # réécriture du fichier
La technique précédente est efficace pour analyser et sauvegarder des textes. Le module pickle fournit un encodage spécifique à Python pour enregistrer n'importe quel objet (par exemple une liste ou un objet structuré de grande taille) sous forme d'un fichier.
import pickle
f = open('/home/moi/biblio', 'r+')
bib = pickle.load(f) # récupération d'un ancien fichier pickle
bib.append('La Page blanche') # ajout d'un élément à la liste chargée
pickle.dump(bib, f) # enregistrement de la liste comme fichier
Sur un ordinateur muni d'un accès à Internet, certaines fonctions permettent de récupérer le contenu de pages web et même d'interroger des serveurs à distance.
from urllib.request import urlopen
page = urlopen('http://images.math.cnrs.fr/') # ouverture de la page sous forme de fichier
contenu = page.read() # lecture du code source
page.close() # fermeture du fichier
print(contenu) # affiche le code source de la page
Pour une page PHP avec données à transmettre par protocole POST (identifiants et mot de passe, par exemple), ces données sont à préciser avant l'ouverture de la page.
import urllib
data = urllib.parse.urlencode({'id': "Zébulon", 'passe': "Tournicoton"})
page = urlopen('http://monsite.fr/connexion.php', data)
Le contenu d'une page peut ensuite être analysé à l'aide de html.parser
ou de Beautiful Soup.
Il existe plusieurs bibliothèques permettant de développer une interface graphique. La plus utilisée est fournie par le module tkinter. Sur les systèmes Linux, ce module requiert le paquet python-tk
ou python3-tk
.
from tkinter import *
fen = Tk() # création d'une fenêtre
titre = Label(fen, text = "Ma première interface graphique")
titre.pack() # placement du titre
can = Canvas(fen, bg='white', height=200, width=300) # zone de dessin
def tache(ev):
can.create_oval(ev.x-5, ev.y-5, ev.x+5, ev.y+5, fill='red')
can.bind("<Button-1>", tache) # réaction au clic sur le dessin
can.pack()
def clear():
can.delete(ALL)
effaceur = Button(fen, text = "Effacer", command = clear)
effaceur.pack(side = LEFT)
exit = Button(fen, text = "Quitter", command = fen.quit)
exit.pack(side = RIGHT)
fen.mainloop() # maintien de la fenêtre jusqu'à fermeture
fen.destroy() # suppression de la fenêtre