Cours de Python : Introduction et Concepts
Cours de Python : Introduction et Concepts
•Ce cours est basé sur le MOOC de Charles Severance accessible sur la
plateforme Coursera : https://www.coursera.org/course/pythonlearn
•Il est également dans votre intérêt de refaire à la maison les exercices des
Travaux Dirigés, dans un but d’apprentissage et d’auto-évaluation
Cours de Python en Licence
Pourquoi programmer ?
Les ordinateurs « veulent »
nous être utiles... What
Next ?
•C’est une expression de notre intelligence que nous donnons aux autres :
•Si nous produisons une bonne « user experience » un programme peut aussi
être considéré comme un objet créatif, voire artistique
Un programme
pour humains...
What
Next ?
http://www.youtube.com/watch?v=vlzwuFkn88U
Main gauche vers l’extérieur et en haut Un programme
Main droite vers l’extérieur et en haut
Retournez la main gauche
Retournez la main droite
pour humains...
Main gauche sur l'épaule droite What
Main droite sur l'épaule gauche Next ?
Main gauche derrière la tête
Nain droite derrière la tête
Main gauche sur la manche droite
Main droite sur la manche gauche
Main gauche sur fesse gauche
Main droite sur fesse droite
Se déhancher
Se déhancher
Sauter
http://www.youtube.com/watch?v=vlzwuFkn88U
Main gauche vers l’extérieur et en haut Un programme
Main droite vers l’extérieur et en haut
Retournez la main gauche
Retournez la main droite
pour humains...
Main gauche sur l'épaule droite BUGS ?
Main droite sur l'épaule gauche
Main gauche derrière la tête
Nain droite derrière la tête
Main gauche sur la manche droite
Main droite sur la manche gauche
Main gauche sur fesse gauche
Main droite sur fesse droite
Se déhancher
Se déhancher
Sauter
http://www.youtube.com/watch?v=vlzwuFkn88U
Main gauche vers l’extérieur et en haut Un programme
Main droite vers l’extérieur et en haut
Retournez la main gauche
Retournez la main droite
pour humains...
Main gauche sur l'épaule droite FIXED !
Main droite sur l'épaule gauche
Main gauche derrière la tête
Main droite derrière la tête
Main gauche sur la hanche droite
Main droite sur la hanche gauche
Main gauche sur fesse gauche
Main droite sur fesse droite
Se déhancher
Se déhancher
Sauter
http://www.youtube.com/watch?v=vlzwuFkn88U
Petit exercice :
Quel mot apparaît le plus souvent
dans le petit texte ci-dessous ?
Architecture matérielle
« L’informatique n’est pas plus la science des ordinateurs
que l’astronomie n’est celle des télescopes »
L’utilisation de cartes perforées fait que le métier Jacquard est parfois considéré
comme un ancêtre des ordinateurs.
Un micro-ordinateur est un ordinateur conçu autour d’un micro-processeur sur une base de circuit imprimé
comportant des circuits intégrés (puces de silicium) => optimisation + miniaturisation = faible coût
Qu’est-ce qu’un ordinateur ?
•Les ordinateurs peuvent prendre de multiples apparences…
•Mais leur architecture interne et leur fonctionnement reste les mêmes
•Ces machines sont conçues selon l’architecture dite de Von Neumann
Certains ordinateurs ne tiennent pas sur une table :
http://www.youtube.com/watch?v=y39D4529FM4
http://www.youtube.com/watch?v=9eMWG3fwiEU
D’où vient le terme « ordinateur » ?
Le langage Python
Python est un langage de
programmation
•Initialement développé par Guido van Rossum
•Nom donné en hommage aux Monty Python
•Multi-plateformes et multi-paradigmes :
•Programmation impérative, objet, fonctionnelle
•Bon compromis entre simplicité et puissance
•Outils de haut niveau + syntaxe relativement simple
•Typage dynamique fort + ramasse-miettes
•La gestion de la mémoire est automatisée
•Types de données structurés :
•Tuples, ensembles, listes, dictionnaires
•Système de gestion des exceptions
prompt$ python
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> �
What
Next ?
prompt$ python
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> x = 1
>>> print(x)
1 Il s’agit d’une utilisation en mode interactif :
>>> x = x + 1 vous tapez directement dans le terminal une ligne
>>> print(x) après l’autre et vous obtenez la réponse après
2
>>> exit() chaque « retour-chariot »
Tout usage illégal d’un mot réservé ou toute formulation qui ne respecte
pas la syntaxe de Python provoque une SyntaxError :
Mots réservés (vocabulaire)
•Vous ne pouvez pas utiliser ces mots réservés du langage en tant
que noms de variables / de fonctions (identificateurs) :
x = 2 Instruction d’affectation
x = x + 2 Affectation d’une expression
print(x) Affichage (sur l’écran)
•Python en mode interactif peut être pratique pour tester des expressions
ou des programmes de 3-4 lignes mais…
•La plupart des programmes sont beaucoup plus longs, c’est pourquoi nous
les écrivons dans un fichier afin que python exécute les instructions à partir
de ce fichier
•D’une certaine manière nous « donnons un script à Python »
•Par convention, nous ajoutons le suffixe « .py » à la fin de ces fichiers pour
indiquer qu’ils contiennent des instructions Python
Flux d’exécution
> Chapitre 4
Etapes Séquentielles
x=2
Programme : Affichage :
print(x)
x = 2
x=x+2 print(x) 2
x = x + 2
print(x) print(x) 4
print('OK') OK
print('OK')
> Chapitre 3
n=5
Etapes Répétées
non oui Programme : Affichage :
n>0?
n = 5 5
print(n)
while n > 0 : 4
print(n) 3
n=n-1
n = n – 1 2
1
print('FEU') FEU
print('FEU')
> Chapitre 5
Python 2 ou Python 3 ?
•Les langages informatiques évoluent (souvent dans le bon sens) :
Thes slides are Copyright 2010- Charles R. Severance () of the University of Michigan School of Information and and made available under a Creative
Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the attribution requirements of the license.
If you make a change, feel free to add your name and organization to the list of contributors on this page as you republish the materials.
Moralité : choisissez
intelligemment le nom
de vos variables !
Des variables qui « parlent »
• Depuis qu’il est donné le choix, à nous programmeurs, de choisir le
nom des variables, il y a quelques “bonnes pratiques” à respecter
• Nous nommons les variables de telle sorte que nous puissions nous
rappeler ce qu’elles stockent (identificateurs mnémoniques)
• Ceci peut dérouter les étudiants débutants parce que des variables
bien nommées “sonnent” souvent si bien que celles-ci leur semblent
être des mots-clés…
http://en.wikipedia.org/wiki/Mnemonic
Mots réservés (vocabulaire)
• Vous ne pouvez pas utiliser ces mots réservés du langage en
tant que noms de variables / de fonctions (identificateurs) :
x = 2 Instruction d’affectation
x = x + 2 Affectation d’une expression
print(x) Affichage (sur l’écran)
X = 3.9 * x * ( 1 - x )
0.6 0.6
x = 3.9 * x * ( 1 - x )
l e u r 0 . 6
La v a
xi s te p l u s x = 3.9 * x * ( 1 - x )
n’ e
Modulo
280 5 Quotient % Modulo
(reste) entier
Evaluation des expressions
• Quand nous utilisons plusieurs opérateurs ensemble, il faut
savoir dans quel ordre les opérateurs sont appliqués…
• Cet ordre est défini par des règles de priorité des opérateurs
x = 1 + 2 ** 3 // 4 * 5
Règles de priorité
Priorité la plus haute à la plus basse :
des chaînes
<class 'str'>
>>> print(sval + 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
• On peut utiliser int() ou float() TypeError: Can't convert 'int' object to
str implicitly
pour effectuer la conversion
d’une chaîne vers un entier ou >>> ival = int(sval)
>>> type(ival)
vers un float : <class 'int'>
>>> print(ival + 1)
124
• On obtient une erreur si la
chaîne contient autre-choses >>> sval= 'hello bob'
>>> ival = int(sval)
que des chiffres : Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int()
with base 10: 'hello bob'
Instructions d’E/S
name = input('Qui êtes-vous ?')
• La fonction input() bloque le print('Bienvenue', name)
déroulement du programme et
attend une saisie au clavier. Elle
retourne une chaîne de caractères
Thes slides are Copyright 2010- Charles R. Severance (www.dr-chuck.com) of the University of Michigan School of Information and open.umich.edu
and made available under a Creative Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the
attribution requirements of the license. If you make a change, feel free to add your name and organization to the list of contributors on this page as you
republish the materials.
Structures Conditionnelles
Expressions Booléennes
Gestion des Exceptions
x=5 Etapes Conditionnelles
oui
X < 10 ? Programme : Affichage :
non print('Smaller’) x = 5
if x < 10 :
oui print('Smaller') Smaller
X > 20 ? if x > 20 :
print('Bigger')
non print('Bigger’)
print('OK') OK
print('OK’)
Opérateurs de Comparaison
Opérateur
• Les expressions Booléennes Signification
binaire
permettent de contrôler le < Inférieur à
déroulement du programme
<= Inférieur ou égal à
• Les expressions Booléennes == Egal à
utilisent les opérateurs de Supérieur ou égal
>=
comparaison et retournent les à
valeurs vrai / faux (oui / non) Ne >
confondezPlus
pas grand
= que
et
lorsqu’elles sont évaluées != Différent de
==
• Les opérateurs de comparaison Opérateur unaire Signification
contrôlent les variables mais not négation
ne les modifient pas !!!
http://en.wikipedia.org/wiki/George_Boole
Opérateurs de Comparaison
x = 5 Affichage à l’écran :
if x == 5 :
print('Egal à 5') Egal à 5
if x > 4 :
print('Plus grand que 4') Plus grand que 4
if x >= 5 :
print('Plus grand ou égal à 5') Plus grand ou égal à 5
if x < 6 :
print('Inférieur à 6') Inférieur à 6
if x <= 5 :
print('Inférieur ou égal à 5') Inférieur ou égal à 5
if x != 6 :
print('Différent de 6') Différent de 6
Décisions “tout ou print('Avant test
rien” 5')
x = 5 oui
print('Avant test 5') Avant test 5 x == 5
if x == 5 :
print('Egal à 5') Egal à 5 non print('Egal à 5')
print('Toujours 5') Toujours 5
print('Encore 5') Encore 5
print('Toujours
print('Après test 5') Après test 5 5')
imbriquées non
print('Plus que un')
x = 42 oui
if x > 1 : x < 100
print('Plus que un')
if x < 100 : non print('Moins que
print('Moins que 100')
100')
print('Terminé')
print('Terminé')
Décisions
à deux voies x=4
instruction
ou
x = 4 instruction non
x>2 i
if x > 2 :
print('Bigger')
print('Smaller') print('Bigger')
else :
print('Smaller')
print('All done')
print('All done')
x = 4 x = 4
Décisions if x > 2 :
print('Bigger')
if x > 2 :
print('Bigger')
à deux voies else :
print('Smaller') print('Smaller')
print('All done') print('All done')
Po u rq u o i x=4 x=4
le « e l s e » non
x>2
ou
i
non
x>2
ou
i
x=4
Po u rq u o i x=4
ou
i
»
x>2
le « e l s e non
x>2
ou
i
non
est u t i l e ? print('Bigger')
print('Bigger')
print('Smaller') ou
not(x > i
2)
non
print('All done')
print('Smaller')
print('All done')
Décisions à
voies oui
multiples x<2 print('Small')
no
n
oui
if x < 2 : x < 10 print('Medium')
print('Small') no
elif x < 10 : n
print('Medium')
else : print('LARGE')
print('LARGE')
print('All done')
print('All done')
Décisions à x=0
voies oui
multiples x<2 print('Small')
no
n
X = 0 oui
if x < 2 : x < 10 print('Medium')
print('Small') no
elif x < 10 : n
print('Medium')
else : print('LARGE')
print('LARGE')
print('All done')
print('All done')
Décisions à x=5
voies oui
multiples x<2 print('Small')
no
n
X = 5 oui
if x < 2 : x < 10 print('Medium')
print('Small') no
elif x < 10 : n
print('Medium')
else : print('LARGE')
print('LARGE')
print('All done')
print('All done')
Décisions à x = 20
voies oui
multiples x<2 print('Small')
no
n
X = 20 oui
if x < 2 : x < 10 print('Medium')
print('Small') no
elif x < 10 : n
print('Medium')
else : print('LARGE')
print('LARGE')
print('All done')
print('All done')
Que pe n s er d e
ces
struc tu r e s ?
if x < 2 : if x < 2 :
print('Below 2') print('Below 2')
elif x >= 2 : elif x < 20 :
print('Two or more') print('Below 20')
else : elif x < 10 :
print('Something else') print('Below 10')
else :
print('Something else')
Que pe n s er d e
ces
struc tu r e s ?
if x < 2 : if x < 2 :
print('Below 2') print('Below 2')
elif x >= 2 : elif x < 20 :
print('Two or more') print('Below 20')
else : elif x < 10 :
print('Something else') print('Below 10')
else :
print('Something else')
Les lignes en rouge ne sont pas accessibles !
Pour vérifier une structure, construire son
« puzzle »
Chapitre 3 (suite)
Expressions booléennes
Les expressions booléennes
• Une expression booléenne est une expression dont les deux seules
valeurs possibles sont True et False
>>> print(3 > 4)
False
• Le type d’une expression booléenne est le type >>> print(3 < 4)
True
booléen noté <class 'bool'> en Python >>> type(3 < 4)
<class 'bool'>
>>> a = 3
• On peut mémoriser et manipuler les expressions >>> b = 4
booléennes à l’aide de variables >>> c = a > b
>>> print(c)
George Boole (1815-1864) est un logicien, mathématicien, philosophe False
britannique. Il est le créateur de la logique moderne, fondée sur une structure >>> type(c)
algébrique et sémantique, que l’on appelle aujourd’hui algèbre de Boole. <class 'bool'>
Les opérateurs booléens
• Les opérateurs booléens permettent de combiner des expressions
booléennes afin de construire des expressions de + en +
complexes mais dont les valeurs sont toujours True ou False
• On représente souvent les opérateurs booléens par leur table de
vérité :
A not A A B A and B A B A or B
False True False False False False False False
True False False True False False True True
True False False True False True
True True True True True True
Les opérateurs booléens
• Comme pour les expressions numériques, il est conseillé de
combiner opérateurs et parenthèses lorsque les expressions se
complexifient :
valide = ((a > b) and (b > c)) or (a == 0)
an_cour = 2015
an_nais = input('Année:')
print('Vous avez %i ans' % age)
try:
age = an_cour - int(an_nais)
print('Vous avez %i ans' % age)
print('Erreur')
except:
print('Erreur: pas une année')
print('Terminé') print('Terminé')
Remerciements / Contributions
Thes slides are Copyright 2010- Charles R. Severance (www.dr-chuck.com) of the University of Michigan School of Information and open.umich.edu
and made available under a Creative Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the
attribution requirements of the license. If you make a change, feel free to add your name and organization to the list of contributors on this page as you
republish the materials.
Fonctions prédéfinies et
définies par l’utilisateur
Les fonctions en Informatique
sin(x) f(x) = x * sin(x)
Effets de bord
• Dans la boite, il y a du code informatique mais ce n’est pas
nécessaire de le connaître, il faut juste savoir comment l’utiliser
Quelques fonctions Python
>>> print(float(3))
entier
ou flottant flottant 3.0
float()
ou chaîne >>> print(float('3'))
3.0
>>> print(sin(pi/2))
entier flottant
ou flottant
sin() 1.0
>>> print(random())
0.737897260521
>>> print(random())
random() flottant
0.972452891561
Fonctions avec effets de bord
>>> print('texte: ')
chaîne texte:
ou rien print()
>>> print()
https://docs.python.org/3/library/functions.html
Les librairies de Python
• En Python, la plupart des fonctions sont « rangées » par familles :
Fonctions définies
par l’utilisateur
Définir vos propres fonctions ?
• Si une même portion de code est dupliquée à plusieurs endroits
• Si vous avez conçu et implémenté un algorithme réutilisable
def print_lyrics():
print("I'm a lumberjack, and I'm okay.")
print('I sleep all night and I work all day.')
Définir une fonction
ne signifie pas l’exécuter :
print('Hello') Hello
def print_lyrics(): Yo
print("I'm a lumberjack, and I'm okay.")
print('I sleep all night and I work all day.')
print('Yo')
print('Hello') Hello
print_lyrics()
print('Yo') I'm a lumberjack, and…
I sleep all night and…
Yo
Argument vs. paramètre
• Un argument est une valeur que nous transmettons à la fonction
comme entrée (donnée) au moment de l’appel de la fonction
def mois(n):
if (n < 1) or (n > 12):
raise Exception('month number out of range’)
if n == 1:
return('janvier')
if n == 2:
return('février')
...
>>> print(facto(3))
Traceback (most recent call last):
File "/Users/lehuen/Desktop/test.py", line 4, in <module>
print(facto(3))
...
RuntimeError: maximum recursion depth exceeded
>>> print(facto(3))
6
Thes slides are Copyright 2010- Charles R. Severance (www.dr-chuck.com) of the University of Michigan School of Information and open.umich.edu
and made available under a Creative Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the
attribution requirements of the license. If you make a change, feel free to add your name and organization to the list of contributors on this page as you
republish the materials.
Structures Itératives
Les types liste et chaîne
n=5 Répétition d’opérations
non oui Programme : Affichage :
n>0?
n = 5
print(n) while n > 0 : 5
4
n=n-1 print(n) 3
n = n – 1 2
1
print('FEU') FEU
print('FEU')
print('FEU')
print('FEU')
n=5 Une boucle infinie
non oui
n>0?
n = 5
print('Laver') while n > 0 :
print('Laver')
print('Rincer') print('Rincer')
print('Sécher')
Le type liste
Le type Liste
• La liste est un type structuré = une structure de données
print('FEU')
lst = [5,4,3,2,1]
Variable d’itération d’une boucle for
print('FEU')
Pour i allant de 1 à 1000 ?
• La façon la plus naturelle pour réaliser une telle itération est
d’utiliser une boucle while avec une variable d’itération…
• Mais il est également possible d’utiliser une boucle for sur une
liste de 1000 entiers => comment initialiser cette liste ?
i = 1 for i in range(1,1001):
while i < 1001: print(i)
print(i)
i = i + 1 Borne Borne
inférieure supérieure
inclue exclue
Boucle while ou boucle for ?
• Lorsque nous connaissons à l’avance le nombre d’éléments
sur lesquels on itère => boucle for
• Ce qu’on peut faire avec une boucle for, on peut le faire avec
une boucle while mais le résultat est un peu plus « verbeux »
Chapitre 5 (suite)
Le type chaîne
Qu’est-ce qu’une chaîne ?
• C’est un type de données non modifiables qui permet de
représenter des séquences de caractères Unicode
> Une donnée non modifiable ne peut plus être modifiée une fois créée
> Toute transformation d’une chaîne produit une nouvelle valeur distincte
inclus exclus
Opérations sur les chaînes
• Exemples de méthodes de test de l’état d’une chaîne :
>>> ch.isupper()
>>> ch.isalpha()
>>> ch.startwith('Py')
>>> ch.endswith('thon')
>>> ch.find('thon')
>>> ch.replace('thon','tule')
>>> ch.split()
>>> '-'.join(['Python','3.5'])
for c in ch:
print(c)
Fin du cours de Python
du premier semestre…