100% ont trouvé ce document utile (1 vote)
507 vues9 pages

Programmation Python Exemples de Scripts

Ce document présente des exemples de programmes écrits en Python avec des explications sur différents sujets comme les structures de données, la programmation réseau, les bases de données, le traitement de données.

Transféré par

hart
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
507 vues9 pages

Programmation Python Exemples de Scripts

Ce document présente des exemples de programmes écrits en Python avec des explications sur différents sujets comme les structures de données, la programmation réseau, les bases de données, le traitement de données.

Transféré par

hart
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 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'] = "[email protected]"
leMessage['To'] = "[email protected]"

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


leServeurSMTP.connect()
leServeurSMTP.sendmail('[email protected]',
'[email protected]',
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