Vous êtes sur la page 1sur 47

Algorithmes En Python

INTRODUCTION
Un petit historique…

• En 1989, Guido Van Rossum commenca à travailler


sur Python qui n’était alors qu’un projet lui servant
d’occupation durant les vacances de Noël pendant
lesquelles son bureau était fermé.
• Le but de Guido était d’inventer un successeur au
langage ABC, un langage d’aprentissage peu
apprécié dans le milieu académique.
• En 2005, il a été engagé par Google pour ne
travailler que sur Python.En décembre 2012, il quitte
Google pour rejoindre Dropbox à partir du 1er janvier
2013
• Le nom Python donné au langage provient d’une
série anglaise appelée « Monty Python Flying
Circus »
Classement
Caractéristiques de python
Langage de Script
Tout comme Perl, Tcl et Rexx, Python fait partie des langages script
interpretés contairement à Java, au C/C++ qui sont des langages
compilés. Ce qui lui permet d’être plus rapide au develloppement, de
comporter moins de ligne (50% de moins). Par contre, Il est plus lent à
l’execution.

Affichage ligne
Ce que nous écrirons … par ligne
Ce que l’on utilisera à chaque fois
que l’on voudra exécuter le code
source : traduction/exécution ligne
par ligne.
Caractéristiques de python
Portable
Python est portable entre les differentes variantes de Unix ainsi que
sur les OS propiétaires comme Mac OS, BEOs, MS-DOS et les
differentes versions de Windows
Caractéristiques de python
LiBRE

Python est placé sous Général Public License. Il est facilement downloadable
sur www.python.org
Caractéristiques de python
Extensible
Au-delà de la multitude de librairies et de modules déjà existente, il
est possible d’en dévellopper pour ses propres besoins :
 Matplolib pour l'affichage des courbes

 Scipy pour les caculs scientfique

 Numpy pour les calculs matriciels

 TK pour les interfaces graphiques

 Etc .
Caractéristiques de python

La syntaxe de Python est très simple et,


combinée à de nombreux types de données
évolués (comme les listes,
dictionnaires,tuples...), ce qui conduit à des
programmes à la fois très compacts et très
lisibles. De plus, Python ne nécessite
aucune déclaration de variable. Les
variables sont créées lors de leur première
assignation.
 Il existe plusieurs logiciels de devellopements
d'application en python(IDLE
,pycharm,pythonxy,pydev,...)
 Dans ce cours on à adopté l'environement de
devellopement pyzo
 Pyzo peut etre utiliser avec et sans installation
 Pyzo est fonctionelle sur plusieurs systéme
d'exploitation
L'interface de pyzo présente
Console interactive pour taper des deux espace de travail :
commandes en direct.
.
Les résultats des programmes s’y affichent Une Console interactive
Un Éditeur de script

Éditeur pour
écrire des
programmes
Environemment de developpement
pyzo

EX1 :
utiliser la console interactif comme une simple calculatrice de bureau.
tester les commandes, comme :
• 5+3
• 2 - 9 # les espaces sont optionnels
• 7 + 3 * 4 # la hiérarchie des opérations mathématiques est-elle
respectée ?
• (7+3)*4
• 20 / 3

L'exécution se fait ligne par ligne. Afin d'éxécuter une instruction


il suffit d'appuiyer sur entrée en fin de ligne.
Environemment de developpement
pyzo

EX2:
utiliser l'éditeur de script afin d'exécuter les instructions suivantes :

• 5+3
• 2 - 9 # les espaces sont optionnels
• 7 + 3 * 4 # la hiérarchie des opérations mathématiques est-elle respectée
?
• (7+3)*4
• 20 / 3

L'exécution se fait ligne par ligne. Afin d'éxécuter une instruction


il faut enregistrer dans le code dans un fichier d'extension .py
puis cliquer sur le menu executer/demarrer le script
Les variables et les
éxpressions
Données et variables
Un programme python consiste à manipuler des données.

Ces données peuvent être très diverses mais dans la mémoire de l'ordinateur elles se
ramènent toujours et en définitive à une suite finie de nombres binaires.

Mémoire
@
Taille 1110000000011
Une variable apparaît dans un programme
@ 1110001110011 python sous un nom de variable, mais pour
Prix_Unitaire 1110001110000 l'ordinateur il s'agit d'une référence désignant
@
Quantité 0000001110011 une adresse mémoire, c'est-à-dire un
0000000000011 emplacement précis dans la mémoire vive.
Noms de variables et mots réservés
Quelques règles pour les noms de variables sous Python :
Un nom de variable est une séquence de lettres (a à z , A à Z) et de chiffres (0 à 9), qui
doit toujours commencer par une lettre.

Seules les lettres ordinaires sont autorisées. Les lettres accentuées, les cédilles, les
espaces, les caractères spéciaux tels que $, #, @, etc. sont interdits, à l'exception du
caractère _ (souligné).

 La casse est significative (les caractères majuscules et minuscules sont distingués).


Attention : Joseph, joseph, JOSEPH sont donc des variables différentes. Soyez attentifs
!

Prenez l'habitude d'écrire l'essentiel des noms de variables en caractères minuscules (y


compris la première lettre). Il s'agit d'une simple convention, mais elle est largement
respectée. N'utilisez les majuscules qu'à l'intérieur même du nom, pour en augmenter
éventuellement la lisibilité, comme dans TableDesMatieres.
Noms de variables et mots réservés

En plus de ces règles, il faut encore ajouter que vous ne pouvez pas utiliser comme
noms de variables les 29 « mots réservés » au langage ci-dessous :

and assert break class continue def


del elif else except exec finally
for from global if import in
is lambda not or pass print
raise return try while yield
Affectation (ou assignation)
Nous savons désormais comment choisir judicieusement un nom de variable. Voyons à
présent comment nous pouvons en définir et affecter une valeur.
En Python comme dans de nombreux autres langages, l'opération d'affectation est
représentée par le signe égal :

n = 7 # donner à n la valeur 7

msg = "Quoi de neuf ?" # affecter la valeur "Quoi de neuf ?" à msg

pi = 3.14159 # assigner sa valeur à la variable pi

Mémoire
@
n
7 en binaire
@
msg « quoi de neuf »
en binaire…
@
Pi 3,14159 en binaire
Affectations multiples
• Sous Python, on peut assigner une valeur à plusieurs variables simultanément.
Exemple :
>>>x = y = 7
>>> x
7
>>>y
7

• On peut aussi effectuer des affectations parallèles à l'aide d'un seul opérateur :

>>> a, b = 4, 8.33
>>> a
4
>>> b
8.33

• Dans cet exemple, les variables a et b prennent simultanément les nouvelles valeurs 4 et
8,33.
Afficher la valeur d'une variable
Pour afficher la valeur à l'écran, il existe deux possibilités :

1. La première consiste à entrer au clavier le nom de la variable, puis <Enter>.

>>>n
7
>>>msg #affiche les guillemets, donc le type.
"Quoi de neuf ? "
>>>pi
3.14159

1. A l'intérieur d'un programme, vous utiliserez toujours l'instruction print :

>>>print( msg) #pas de guillemets.


Quoi de neuf ?

Pas de Typage explicite des variables sous python


Exercices
Décrivez le plus clairement et le plus complètement possible ce qui se passe à chacune
des trois lignes de l'exemple ci-dessous :

>>> largeur = 20
>>> hauteur = 5 * 9.3
>>> largeur * hauteur
930

Assignez les valeurs respectives 3, 5, 7 à trois variables a, b, c.


Effectuez l'opération a - b/c.
Opérateurs et expressions
On manipule les valeurs et les variables qui les référencent, en les combinant
avec des opérateurs pour former des expressions.

Exemple :
>>>a, b = 7.3, 12
>>>y = 3*a + b/5

Exercice
Décrivez ce qui se passe à l’exécution des lignes suivantes :

>>> r , pi = 12, 3.14159


>>> s = pi * r**2
>>> s
>>> type(r), type(pi), type(s)

Quelle est, à votre avis, l'utilité de la fonction type() ?


Opérateurs de comparaiso
La condition évaluée après l'instruction «if» peut contenir les opérateurs de
comparaison suivants :

• x == y # x est égal à y (deux signes « égale » et non d'un seul)


• x != y # x est différent de y
• x>y # x est plus grand que y
• x<y # x est plus petit que y
• x >= y # x est plus grand que, ou égal à y
• x <= y # x est plus petit que, ou égal à y

Même symbolisme qu’en C++ et en Java


LES STRUCTURES DE CONTROLES
Quelques règles de syntaxe Pytho
• Les limites des instructions et des blocs sont définies par la mise en page
Avec Python, vous devez utiliser les sauts à la ligne et l'indentation. Python vous
force donc à écrire du code lisible, et à prendre de bonnes habitudes que vous
conserverez lorsque vous utiliserez d'autres langages.

• Instruction composée = En-tête , double point , bloc d'instructions indenté

Les blocs d'instructions sont


toujours associés à une
ligne d'en-tête contenant
une instruction bien
spécifique (if, elif, else,
while, def, ...) se terminant
par un double point
Le test if
L’instruction IF peut comporter plusieurs tests conditionnels ’elif’ et se termine
par un bloc optionnel ‘else’. Le bloc qui sera executé, sera le premier ou la
condition sera vrai sinon se sera le bloc else sans condition qui sera
executé.
Le if s’écrit de la forme suivante:

if <test1>:
... <instructions>
elif <test2>:
...<instructions>
else:
... <instructions>

!!! ATTENTION à l’indentation !!!!


Instructions imbriquées
Il est parfaitement possible d'imbriquer les unes dans les autres plusieurs instructions
composées, de manière à réaliser des structures de décision complexes.

Exemple :

if embranchement == "vertébrés": # 1
if classe == "mammifères": # 2
if ordre == "carnivores": # 3
if famille == "félins": # 4
"c'est peut-être un chat" # 5
"c'est en tous cas un mammifère" # 6
elif classe == 'oiseaux': # 7
"c'est peut-être un canari" # 8
"la classification des animaux est complexe" # 9

• Ce programme n'imprime la phrase « c'est peut-être un chat » que dans le cas où les quatres premières conditions
testées sont vraies.

• Pour que la phrase « c'est peut-être un canari » soit affichée, il faut que la variable embranchement contienne «
vertébrés », et que la variable classe contienne « oiseaux ».
La Boucle While
Comme dans beaucoup d’autres langages, la boucle while éxecute un bloc tant que
la condition d’arrêt est vérifiée. La particularité de ce while est qu’il peut y avoir un
else optionnel dont le bloc sera éxecuté lorsqu’on sort de la boucle
while <test> :
<instructions>

else :
<instructions>

Un exemple…
X=0
While x<6:
print ("Dans le boucle while x vaut : " , x)
x=x+1
else:
print ("Dans le else x vaut :",x)
Utilisation du break, continue, pass
Ces trois instructions permettent à l’utilisateur d’avoir un plus grand contôle de la
boucle.
 Comme en C, l’instruction break permet de sortir de la boucle instantannément et
de passer à la suite. Elle annule le passage dans la boucle else.
 L’istruction « continue » saute au début de la boucle la plus imbriquée.
 « pass » ne fait rien du tout mais, comme on ne peut avoir une expression qui
 n’est suivie de rien, « pass » peut être utilisé pour combler ce vide.

Exemple :
y=0
While y<6:
if y==4:
break
else:
print « Dans la boucle while, y vaut : », y
y=y+1
else:
print « dans le else y vaut : », y
La Boucle For
La boucle for fonctionne sur les chaînes, les listes, les tuples et d’autes objets issus
de classes.

Elle commence par une ligne d’en-tête qui spécifie une cible d’affectation, ainsi
qu’un objet qui sera itéré :

for <cible> in <objet>:


<instructions>
else :
<instructions>

Ici encore, le else est mis en fin de boucle pour la même raison que dans la boucle
while vue précédemment.
Le for de Python fonctionne différemment que celui du C, il affecte les objets de
l’élément séquence à la cible un par un.
Le Range
L’instruction range permet de créer une liste croissante d’entiers successifs
compris dans une certaine borne dépendant du nombre de paramètres de
l’instruction :
• 1 paramètre : entiers compris entre 0 et le paramètre
• 2 paramètres : entier compris entre param1 et param2
• 3 paramètres : entier compris entre parm1 et param2 et de pas param3

Ex :
for i in range(10,20,2):
print (i)

Ce qui donne: 10
12
14
16
18
LES FONCTIONS
Fonctions prédéfinies
La fonction intégrée input() provoque une interruption dans le
programme courant.
L'utilisateur est invité à entrer des caractères au clavier et à terminer
avec <Enter>
On peut l’invoquer en laissant les parenthèses vides. On peut
aussi y placer en argument un message explicatif destiné à
l'utilisateur.

prenom = input('Entrez votre prénom (entre guillemets) : ‘)


print ('Bonjour,', prenom)
Fonctions prédéfinies
La fonction input() renvoie renvoie toujours une chaîne de caractères.
Un bon script doit toujours vérifier si le type ainsi entré correspond bien à ce
que l'on attend pour la suite du programme.
Il est souvent préférable de Convertir ensuite cette chaîne en nombre à l'aide
de int() ou de float().

>>> a = input('Entrez une donnée : ')


Entrez une donnée : 52.37
>>> type(a)
<type 'str'>
>>> b = float(a) # conversion en valeur numérique
>>> type(b)
<type 'float'>
Définir une fonction
Outre les fonctions de bases de Python, il est possible d’en définir de nouvelles grâce à
l’instruction « def ». Il faudra bien sur à nouveau veiller à l’indentation car en python, il n’y
pas de délimiteur pour définir les scopes.
format :

def nomDeLaFonction(liste de paramètres):


...
bloc d'instructions

return (<valeur>)

Lorsqu’on quitte la fonction valeur va directement être assignée à la fonction


appelante. Elle peut être de tous type puisque il n’y a pas de déclaration de type sous
python.
Fonction simple sans paramètres
>>> def table7():
... n = 1
... while n <11 :
…...print (n * 7)
…...n = n+1

Pour utiliser la fonction que nous venons de définir, il suffit de l'appeler par son nom. Ainsi :

>>> table7()

Provoque l'affichage de :

7 14 21 28 35 42 49 56 63 70
Fonction avec paramètres
La fonction table() telle que définie ci-dessous utilise le paramètre base pour calculer les
dix premiers termes de la table de multiplication de base.

>>> def table(base):


n=1
while n <11 :
print (n * base)
n = n +1

Pour tester cette nouvelle fonction, il nous suffit de l'appeler avec un argument.
>>> table(13)
13 26 39 52 65 78 91 104 117 130
>>> table(9)
9 18 27 36 45 54 63 72 81 90
Fonction avec plusieurs paramètres
La fonction table() est certainement intéressante, mais elle n'affiche toujours que les dix
premiers termes de la table de multiplication, alors que nous pourrions souhaiter qu'elle en
affiche d'autres. Nous allons l'améliorer en lui ajoutant des paramètres supplémentaires, dans
une nouvelle version que nous appellerons cette fois tableMulti() :

>>> def tableMulti(base, debut, fin):


print ('Fragment de la table de multiplication par', base, ':‘)
n = debut
while n <= fin :
print( n, 'x', base, '=', n * base)
n = n +1

Cette nouvelle fonction utilise donc trois paramètres : la base de la table comme dans
l'exemple précédent, l'indice du premier terme à afficher, l'indice du dernier terme à afficher.
Essayons cette fonction en entrant par exemple :
>>> tableMulti(8, 13, 17)
Fragment de la table de multiplication par 8 :
13 x 8 = 104
14 x 8 = 112
15 x 8 = 120
16 x 8 = 128
17 x 8 = 136
Les formes Lambda

Avec le mot-clé « lambda », de petites fonctions


anonymes peuvent être crées. Elles sont limitées
syntaxiquement à une expression unique.

Ex : f=lambda x,y,z: x+y+z


f(2,3,4)
ce qui donne : 9
Les chaines de caractéres
Definition
Une donnée de type string est une suite quelconque de caractères délimitée soit par des
apostrophes (simple quotes), soit par des guillemets (double quotes).

Exemple:
>>> phrase1 = 'les oeufs durs.'
>>> phrase2 = '"Oui", répondit-il,'
>>> phrase3 = "j'aime bien"
>>> print phrase2, phrase3, phrase1
"Oui", répondit-il, j'aime bien les oeufs durs.

Les 3 variables phrase1, phrase2, phrase3 sont donc des variables de type string

Remarques :
• La séquence \n dans une chaîne provoque un saut à la ligne.
• La séquence \' permet d'insérer une apostrophe dans une chaîne délimitée par des
apostrophes
Accès aux caractères individuels d'une chaîne

Chaînes de caractères <=> Données composites


Dans le cas d'une chaîne de caractères, ses entités plus simples sont
évidemment les caractères eux-mêmes.

Python est pourvu de mécanismes qui permettent d'accéder séparément à chacun


des caractères d'une chaîne

Exemple :
>>> ch = "Stéphanie"
>>> print( ch[0], ch[3])
Sp
Opérations élémentaires sur les chaînes
De nombreuses fonctions intégrées à Python, permettent d'effectuer divers traitements
sur les chaînes de caractères.
• concaténation
a = 'Petit poisson'
b = ' deviendra grand'
c=a+b
print(c)
petit poisson deviendra grand

• len()
>>> print (len(c))
29

• Conversion en nombre d’une chaîne de caractères qui représente un nombre

>>> ch = '8647'
>>> print (ch + 45)
==> *** erreur *** on ne peut pas additionner une chaîne et un nombre
>>> n = int(ch)
>>> print( n + 65)# OK : on peut additionner 2 nombres
8712
Les Listes
Definition
• Sous Python, on peut définir une liste comme une collection d'éléments séparés par
des virgules, l'ensemble étant enfermé dans des crochets.

Exemple :
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi','vendredi']
>>> print(jour)
['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']

• Comme les chaînes de caractères, les listes sont des séquences, c'est-à-dire
des collections ordonnées d'objets. On peut accéder à chacun d'entre eux
individuellement si l'on connaît son index dans la liste

Exemple :
>>> jour = ['lundi', 'mardi', 'mercredi', 1800, 20.357, 'jeudi', 'vendredi']
>>> print( jour[2])
mercredi
>>> print( jour[4])
20.357
Fonctions intégrées
• On peut donc remplacer certains éléments d'une liste par d'autres, comme ci-
dessous :
>>> jour[3] = 'Juillet'
>>> print(jour)
['lundi', 'mardi', 'mercredi', 'Juillet', 20.357, 'jeudi', 'vendredi']

• La fonction intégrée len() , que nous avons déjà rencontrée à propos des chaînes,
s'applique aussi aux listes. Elle renvoie le nombre d'éléments présents dans la liste :
>>> len(jour)
7
• Une autre fonction intégrée permet de supprimer d'une liste un élément
quelconque (à partir de son index). Il s'agit de la fonction del() :
>>> del(jour[4])
>>> print (jour)
['lundi', 'mardi', 'mercredi', 'juillet', 'jeudi', 'vendredi']
Fonctions intégrées
• Il est également tout à fait possible d'ajouter un élément à une liste, mais pour ce faire, il
faut considérer que la liste est un objet

>>> jour.append('samedi')
>>> print( jour)
['lundi', 'mardi', 'mercredi', 'juillet', 'jeudi', 'vendredi', 'samedi']
>>>

• Par exemple analyser le petit script ci-dessous et commenter son fonctionnement :

jour = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi']
a, b = 0, 0
while a<25:
a=a+1
b=a%7
print( a, jour[b])

Vous aimerez peut-être aussi