Vous êtes sur la page 1sur 9

Exemples de programmes écrits dans le langage de programmation Python dans sa version 3.

Exemples de codes représentatifs

Une introduction

ageDeEricPraline = 50
ageDeHenryWensleydale = 20

# Test
if 0 > ageDeEricPraline > 150 or ageDeEricPraline > ageDeHenryWensleydale:
print("l'age de Eric Praline est incorrect")

#echange : swap
ageDeHenryWensleydale, ageDeEricPraline = ageDeEricPraline,ageDeHenryWensleydale
print("age de Henry Wensleydale = %d , age de Eric Praline = %d" %
(ageDeHenryWensleydale,ageDeEricPraline))

#>>>
#l'age de Eric Praline est incorrect
#age de Henry Wensleydale = 50 , age de Eric Praline = 20

Les structures de données en natif

# Les listes :
maListeDeMeubles = ['table','chaise','frigo']
maListeDeMeubles.sort() #Tri de la liste
for unMeuble in maListeDeMeubles:
print('longueur de la chaîne ', unMeuble, '=', len(unMeuble))

#les listes imbriquées:


laListeDesNombresPairs = [unNombre for unNombre in range(1000) if unNombre % 2 ==
0]
print (laListeDesNombresPairs)

#Les dictionnaires :
unAnnuaire = {'Laurent': 6389565, 'Paul': 6356785}
for unNom, x in unAnnuaire.items():
print("le nom %s a pour numéro de téléphone %d" %(unNom, x))

#Les tuples (n-uplet) : séquence constante


Couleur = ('Rouge', 'Bleu', 'Vert')
print(Couleur[0], Couleur[1], Couleur[2])

PointDeReference = (100, 200)


print(" x0 = %d y0 = %d " %(PointDeReference[0],PointDeReference[1]))

Accès a une base de données


# Avec MySql :
import MySQLdb, pprint

uneConnexionBDD = MySQLdb.connect(host ='192.32.12.10',


user ='admin',
passwd ='988',
db ='uneBase')
leCurseur = uneConnexionBDD.cursor()
unAuteur = "'Zola'"
leCurseur.execute(""" SELECT title, description FROM books WHERE author = %s """ %
(unAuteur,))
pprint.pprint(leCurseur.fetchall())
leCurseur.query("update books set title='assommoir' where author='Zola'")
uneConnexionBDD.commit()

# Par ODBC :
import dbi, odbc
connexion = odbc.odbc('mondsn/monlogin/monpassword')
leCurseur = connexion.cursor()
leCurseur.execute('select clientid, name, city from client')
print(leCurseur.fetchall())

Programmation réseau - Internet

#Lire une page Web et afficher le source HTML

import urllib
print(urllib.urlopen)

#Usage de FTP : démonstration des paramètres nommés

import ftplib
uneSessionFTP = ftplib.FTP( host = '198.12.45.123',
user = 'MonLogin',
passwd = 'MonMotDePasse')

unFichier = open('monFichier.txt','rb')
uneSessionFTP.storbinary( 'STOR monFichier.txt', unFichier ) #envoi du fichier
unFichier.close()
uneSessionFTP.quit()

Tracé de courbes avec matplotlib

import math
from pylab import plot, axis, savefig, show, title

plot( [1,2,3,4],
[1,4,9,16])
axis( [1, 4, 0, 16] )
title( 'ma courbe' )
savefig( 'c:\\uneCourbeSauvee.png' )
show()
Utilitaires de la bibliothèque standard

#Encodage d'une image binaire sous forme de chaîne (Pour les protocoles qui
n'acceptent que l'ASCII)

lesDonneesImage = open('uneImage.gif','rb').read()
laChaineZippee = lesDonneesImage.encode('zlib').encode('base64')

Jython : utilisation de Java en Python

#Exemple d'une applet scripté

from javax.swing import *

class MyApplet( JApplet ):


def init( self ):
unLabel= JLabel("Jython améliore la productivité")
self.getContentPane().add( unLabel )

Mail

#Envoi par mail du contenu d'un fichier

import smtplib
from email.MIMEText import MIMEText

IPduServeur = 'localhost'
monFichierMail = open ('monMailAEnvoyer.txt', 'rb') # lecture du fichier
leMessage = MIMEText ( monFichierMail.read() ) # création d'un message
text/plain
monFichierMail.close()

leMessage['Subject'] = "Confirmation de l'exigence A441"


leMessage['From'] = "expediteur@phales.com"
leMessage['To'] = "destinataire@ecn.com"

leServeurSMTP = smtplib.SMTP(IPduServeur) # envoi du messge


leServeurSMTP.connect()
leServeurSMTP.sendmail('expediteur@phales.com',
'destinataire@ecn.com',
leMessage.as_string())
leServeurSMTP.quit()

Classe

Exemple de classe (voir programmation orientée objet).

class Fruit :
def __init__(self) :
pass

class Pomme(Fruit):
"""
Cette classe représente une pomme.
"""
Mangeurs = ["Jacques", "Nicolas","Virgile"]

def __init__(self, couleur):


"""
Pour construire une Pomme, donnez sa couleur.
"""
Fruit.__init__(self)
self._couleur = couleur

def couleur(self):
"""
Retourne la couleur de la Pomme.
"""
return self._couleur

def comestible(self, mangeur):


"""
Dit si la pomme est comestible ou non,
en fonction du mangeur.
"""
if mangeur in self.Mangeurs:
print(mangeur, "mange des pommes")
else:
print (mangeur, "n'aime pas les pommes")

petitePomme = Pomme("verte")
petitePomme.comestible("Pierre") # Pierre n'aime pas les pommes
petitePomme.comestible("Nicolas") # Nicolas mange des pommes

On remarque notamment la présence de documentation (optionnelle bien sûr) directement dans le code. La
commande help() permet d'obtenir, dans l'interpréteur Python, cette aide directement :

>>> help(Pomme)

donne :

Help on class Pomme in module __main__:

class Pomme(Fruit)
| Cette classe représente une pomme.
|
| Methods defined here:
|
| __init__(self, couleur)
| Pour construire une Pomme, donnez sa couleur.
|
| comestible(self, mangeur)
| Dit si la pomme est comestible ou non,
| en fonction du mangeur.
|
| couleur(self)
| Retourne la couleur de la Pomme.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| Mangeurs = ['Jacques', 'Nicolas', 'Virgile']
WMI (sous Windows 2000/XP)

Lister les processus et leur nom

import wmi
controler = wmi.WMI ()
for unProcessus in controler.Win32_Process ():
print (unProcessus.ProcessId, unProcessus.Name)

Rebooter une machine à distance

import wmi
controler = wmi.WMI (computer = "Nom_Machine_Distante",
privileges = ["RemoteShutdown"] )
os = controler.Win32_OperatingSystem (Primary=1)[0]
os.Reboot ()

Automation Win32

#Exemple de pilotage de CATIA par la technologie COM/DCOM


import win32com.client

catiaApplication = win32com.client.Dispatch("CATIA.Application")
monDocument = catiaApplication.ActiveDocument.Product
nombreDeProduit = monDocument.Products.Count

for produits in range(nombreDeProduit):


produits += 1
print (monDocument.Products.Item(produits).Name)

#Exemple de pilotage du lecteur multimédia


from win32com.client import Dispatch
leMediaPlayer = Dispatch("WMPlayer.OCX")
uneMorceauDeMusique = leMediaPlayer.newMedia("C:/mesDoc/monTitre.wma") # ou mp3
leMediaPlayer.currentPlaylist.appendItem(uneMorceauDeMusique)
leMediaPlayer.controls.play()
raw_input("appuyez sur la touche ENTRÉE pour arrêter la musique")
leMediaPlayer.leMediaPlayer.stop()

ctypes

ctypes permet d'accéder directement à des dll.

import ctypes
# modification du fond d’écran de windows
SPI_SETDESKWALLPAPER = 20
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER,
0,
"C:\\Mes documents\\Mes
images\\maPhoto.bmp" ,
0)
# Resolution de l'écran
SM_CXSCREEN = 0
SM_CYSCREEN = 1
taille_x = ctypes.windll.user32.GetSystemMetrics(SM_CXSCREEN)
taille_y = ctypes.windll.user32.GetSystemMetrics(SM_CYSCREEN)
print ("La résolution d'écran est %d par %d" % (taille_x, taille_y))

Data Mining - Réseaux bayésiens avec reverend

# les filtres Baysesiens permettent de classifier des données.


# Exemple d'application : reconnaissance automatique de la langue, anti-Spam,
cryptographie...

from reverend.thomas import Bayes

unReseauBayesiens = Bayes()
uneListeDePropositions = [('math', 'on fait des calculs , des additions,
des multiplications'),
('math', '3 + 4 = 7 ; 10 + 7 = 17 ; 99/11 = 9'),
('math', '12 + 10 -5 = 17 ; 70-10 = 60'),
('math', 'le carré des 2 cotés du triangle sont
liés par une relation'),
('math', 'la fonction sinus ( sin ) sert à
représenter les phénomènes cycliques'),
('math', 'sin (PI) = 3.14159 et cosinus (0) = 1'
),
('philosophie', 'je disserte sur le sens de la vie'),
('philosophie', 'être ou ne pas être, telle est la
question'),
('philosophie', 'je sais que je ne sais rien'),
('philosophie', 'les phénomènes sont réels à condition
que nous le souhaitions'),
('philosophie', 'la raison est-elle toujours
raisonnable ?'),
('philosophie', 'le cerveau peut-il être compris ?'),
('philosophie', "l'univers peut-il être l'objet de
connaissance ?"),
('philosophie', 'le calcul a-t-il des limites
intrinsèques ?'),
('philosophie', "une relation peut être durable si
l'homme la souhaite")]

for uneCategorie, uneProposition in uneListeDePropositions:


unReseauBayesiens.train( uneCategorie, uneProposition ) # entrainement du
réseau

phraseAnalyse1 = 'voici un résultat : 66/6 = 11 '


phraseAnalyse2 = "je ne saurais dire s'il pourra tout comprendre ... "
phraseAnalyse3 = "le phénomène de la pluie pourrait être d'origine divine"
phraseAnalyse4 = 'la représentation bourbakiste des chiffres assure leur
détermination'

for unePhrase in (phraseAnalyse1, phraseAnalyse2, phraseAnalyse3, phraseAnalyse4)


:
solutions = unReseauBayesiens.guess(unePhrase) # calculs de la catégorie
categorie = solutions[0][0]
probabilite = solutions[0][1]
print ("la phrase '%s' est de catégorie '%s' avec une probabilité de '%d /100'
" %(unePhrase,categorie,probabilite *100))

# Résultats :
# la phrase 'voici un résultat : 66/6 = 11 ' est de catégorie 'math' avec une
probabilité de '99 /100'
# la phrase 'je ne saurais dire s'il pourra tout comprendre ... ' est de catégorie
'philosophie' avec une probabilité de '99 /100'
# la phrase 'le phénomène de la pluie pourrait être d'origine divine' est de
catégorie 'philosophie' avec une probabilité de '92 /100'
# la phrase 'la représentation bourbakiste des chiffres assure leur détermination'
est de catégorie 'philosophie' avec une probabilité de '55 /100'

Implémentation du crible d'Ératosthène

Ce script calcule les nombres premiers inférieurs à 200 en appliquant la méthode du crible d'Ératosthène.

# calcul des nombres premiers inférieurs à N


# initialisation
#!/usr/bin/python
# -*- coding: utf-8 -*-
N = 200
liste = range(2, N) # liste de 2 à N
nombre = 2
while nombre*nombre <= N: # tant que le nb premier < à la
# racine carrée de N
for i in liste[liste.index(nombre) + 1:]: # parcourt la liste à partir de ce
nombre
if i % nombre == 0: # un multiple du nombre est trouvé
liste.remove(i) # ou "del liste[ liste.index(i)
]" :
# on le raye de la liste
nombre = liste[liste.index(nombre) + 1] # on prend le nombre suivant non
rayé

print (liste) # affichage du résultat

Voici une version algorithmiquement équivalente mais beaucoup plus rapide qui exploite la puissance du type
liste de Python :

N = 1000 # on cherche les nombres premiers inférieurs à N


liste = range(N+1) # création de la liste des entiers de 0 à N
liste[1] = 0 # 1 n'est pas premier
nombre = 2

while nombre ** 2 <= N: # tant que le nombre à examiner est inférieur à


# la racine carrée de N

liste[nombre*2 :: nombre] = [0] * ((N // nombre) - 1) # éliminer tous les


# multiples du nombre
# passer au nombre non examine suivant
nombre += 1
while not liste[nombre]:
nombre += 1

liste = filter (None, liste)


print (liste) # et à la fin, on affiche le résultat

Que l'on peut enfin réduire à :

N, nombre = 1000, 2
liste, liste[1] = range(N+1), 0

while nombre**2 <= N:


liste[nombre*2 :: nombre] = [0]*len( liste[nombre*2 :: nombre] )
nombre += 1
print (filter(None, liste))

Les fonctions, les types et les classes sont des objets

#Les fonctions sont des objets


def uneFonction ( unEntier, uneChaine):
"documentation de la fonction"
print ("unEntier : " + str( unEntier ))

#Vous pouvez d'ailleurs ajouter des attributs à la fonction:

uneFonction.compteur = 10

print ("la fonction a pour nom :" + uneFonction.__name__)


print ("la fonction a pour documentation : " + uneFonction.__doc__)
print (uneFonction.compteur)

>>la fonction a pour nom :uneFonction


la fonction a pour documentation : documentation de la fonction
10

#Les types de base sont des objets


valeurOpposee = -25 .__neg__() # equivalent à - (-25)
print ("la valeur opposée de -25 est : " + str ( valeurOpposee ))

#Les classes sont des objets


class Insecte : pass # On definit une classe mère, qui ne fait rien pour
l'instant
class Fourmi(Insecte): # Definition d'une classe dérivée
def marcher (self):
print ("je marche")

print ("la classe Fourmi a pour classe mère :" + str ( Fourmi.__bases__))

#l'opposé de -25 est : 25


#la classe Fourmi a pour classe mère :(<class __main__.Insecte at 0x02B69A20>,)

Graphique

Tkinter

Cet exemple montre comment se servir de la bibliothèque Tkinter pour créer une interface graphique.

from Tkinter import *


fen = Tk()
text1 = Label(fen, text='Bonjour !')
entr1 = Entry(fen)
bout1 = Button(fen, text='Quitter', command=fen.destroy)
text1.grid( row=1, column=1)
entr1.grid( row=1, column=2)
bout1.grid( row=2, column=1)
fen.mainloop()
WxPython

Cet exemple crée en WxPython une fenêtre et un boite modale sur appui bouton - l'utilisation d’éditeur
WYSIWYG comme glade ou boa constructor est recommandée pour les grandes applications

from wxPython.wx import *


ID_OK_BOUTON=100

class PanneauPerso( wxPanel ):


def __init__(self, parent, id):
wxPanel.__init__(self, parent, id)
self.unChampText = wxStaticText(self, -1, "TextAvantLeClic", wxPoint(5,
5))
self.unChampBouton = wxButton(self, ID_OK_BOUTON, "CliquerMoi",
wxPoint(100, 5))
EVT_BUTTON(self, ID_OK_BOUTON, self.OnClick) # enregistrement du callback

def OnClick(self,event):
self.unChampText.SetLabel('ApresLeClic') # sur appui bouton, modifier
le champ texte
b = wxMessageDialog( self, "Une Boite de dialogue","titre", wxOK)
b.ShowModal() # montrer un e boite de
dialogue
b.Destroy()

monApplication = wxPySimpleApp()
maFenetre = wxFrame(None, -1, "Titre de l Application")
PanneauPerso ( maFenetre , -1)
maFenetre.Show(1)
monApplication .MainLoop()

Récupérée de « https://fr.wikibooks.org/w/index.php?
title=Programmation_Python/Exemples_de_scripts&oldid=639490 »

La dernière modification de cette page a été faite le 3 mai 2020 à 18:44.

Les textes sont disponibles sous licence Creative Commons attribution partage à l’identique ; d’autres termes peuvent
s’appliquer.
Voyez les termes d’utilisation pour plus de détails.

Vous aimerez peut-être aussi