Python Slides
Python Slides
Introduc)on à l'algorithmique et
à la programma)on en Python
2017 1 / 159
Introduc)on à l'algo. et prog. en Python
Informa)ons générales
• Objec4fs :
– comprendre et u)liser des schémas algorithmique . . .
– . . . en u)lisant le langage Python (version 3)
• Ressources :
– Slides
– Un TP de découverte de Python et de l'environnement IDLE
– Python Tutor : un excellent ou)l permeJant d'executer un
programme pas-à-pas, en visualisant le contenu de chaque
variable. A u4liser sans modéra4on pour bien comprendre
ce qu'il se passe!
hJp://www.pythontutor.com (et choisir Python 3.6)
– Exercices : quizz et exercice de programma)on
– Projet final
2017 2 / 159
Introduc)on à l'algo. et prog. en Python
Sommaire (cliquable)
1. Variables, Affectations, Entrées/Sorties
2. Instruction If .... else
3. Booléens et chaînes de caractères
4. Boucles while
5. Fonctions (bases)
6. Fonctions (avancé)
7. Listes
8. Boucles For
9. Dictionnaires
10. Lecture/Écriture dans un fichier
THÈME 1:
VARIABLES, AFFECTATIONS,
ENTREES/SORTIES
2017 4 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
No)ons du thème:
• Introduc)on :
– algorithme, programme
– Interpréteur, compilateur
• Variables et expressions
• Entrées / Sor)es
2017 5 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
Compila)on et interpréta)on
• L’ordinateur permet d’automa4ser des tâches
• Mais il faut u)liser un programme
– syntaxe précise dans un langage donné lisible par l’humain
– doit être transformé en un texte lisible par la machine
(suite d’octets) → compilateur ou interpréteur
• compilateur : traduit une fois pour toute le code
source en exécutable
• interpréteur : traduit au fur et à mesure à chaque
lancement du programme interprété
2017 6 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
Algorithme vs Programme
• Problème complexe: travail en 2 temps
1. Résolu)on du problème
en s’autorisant syntaxe approxima)ve, fautes
d’orthographe, abrévia)ons (et en s’aidant avant avec des
schémas) => algorithme
2. Rédac)on de la solu)on finale
produire le programme qui permeJra de faire faire ce qui
est demandé à l’ordinateur
• No)on d’algorithme est plus générale :
cuisine, protocole expérimental, indica)ons rou)ères…
2017 7 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
Exercice
• Donner l’algorithme pour faire une omeleJe
(un seul œuf)
• Préciser
– les ingrédients nécessaires,
– les ustensiles nécessaires,
– les ac)ons à mener (dans l’ordre)
2017 8 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
Programmes en Python
• Deux modes d’exécu)on d’un code Python
– u)liser l’interpréteur Python, instruc)on par
instruc)on, un peu à la façon d’une calculatrice
2017 10 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Variables
• Conteneur d’informa)on
• Iden)fié par un nom = un iden4ficateur
• Ayant un « contenu »
2017 11 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Iden)ficateurs en Python
• Suite non vide de caractères
– commençant par un leJre ou le caractère _
– contenant seulement des leJres, des chiffres et/ou le caractère _
– Ne peut pas être un mot réservé de Python
• Exemples d’iden)ficateurs
– valides : toto, proch_val, max1, MA_VALEUR, r2d2, bb8, _mavar
– non valides : 2be, C-3PO, ma var
• Les iden)ficateurs sont sensibles à la casse : ma_var != Ma_Var
• Conven4ons pour les variables en Python :
– u)liser des minuscules
– pas d’accents
2017 12 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Affecta)on
• Pour mémoriser une valeur dans une variable,
on fait une affecta)on en u)lisant le signe =
• Exemples :
n = 33 ch = "bonjour"
a = 42 + 25 euro = 6.55957
• L’iden)ficateur (à gauche de =) reçoit la valeur (à
droite du =; l’expression doit d’abord être évaluée).
• La première affecta)on d’une variable est aussi
appelée ini4alisa4on
2017 13 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Exemple
2017 14 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Exemples :
>>> a = 6
>>> a
6
>>> b = 9
>>> a == b
False
2017 15 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
No)on de typage
• Les valeurs des variables sont de nature différente
– entier n = 33
– réel a = 42 + 25
– chaîne de caractères euro = 6.55957
ch = "bonjour"
2017 16 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Exemples
>>> a = 17
>>> type(a)
<class ’int’>
>>> a = ‘‘salut’’
>>> type(a)
<class ’str’>
>>> a = 3.14
>>> type(a)
<class ’float’>
>>> type(21==7*3)
<class ’bool’>
2017 17 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Expression
• C’est une formule qui peut être évaluée
• Exemples :
42 + 2 * 5.3
3*2.0 - 5
"bonjour"
20 / 3
• Expression : des opérandes et des opérateurs.
• Les opérateurs que l’on peut u)liser dépendent du type des
valeurs qu’on manipule
2017 18 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Quelques opérateurs
• arithmé4ques (sur des nombres) :
+, -, *, **, /, %, //
2017 19 / 159
Variables et expressions Introduc)on à l'algo. et prog. en Python
Exercice
Quelle est la réponse de l’interpréteur après chaque
expression ?
>>> 2 + 3
>>> 2*3
>>> 2**3
>>> 20/3
>>> 20//3
>>> 20%3
>>> 2 > 8
>>> (2 <= 8) and (8 < 15)
>>> 2 <= 8 < 15
>>> (x % 2 == 0) or (x >= 0)
2017 20 / 159
Entrées/Sor)es Introduc)on à l'algo. et prog. en Python
Entrées / Sor)es
• On a généralement besoin de pouvoir interagir
avec un programme :
• pour lui fournir les données à traiter,
par exemple au clavier : entrées
• pour pouvoir connaître le résultat d’exécu)on
ou pour que le programme puisse écrire ce
qu’il aJend de l’u)lisateur,
par exemple, texte écrit à l’écran : sor4es
2017 21 / 159
Entrées/Sor)es Introduc)on à l'algo. et prog. en Python
2017 22 / 159
Entrées/Sor)es Introduc)on à l'algo. et prog. en Python
Les entrées
>>> texte = input()
123
>>> texte + 1 # provoque une erreur
>>> val = int(texte)
>>> val + 1 # ok
124
>>> x = float(input("Entrez un nombre :"))
Entrez un nombre :
12.3
>>> x + 2
14.3
2017 23 / 159
Entrées/Sor)es Introduc)on à l'algo. et prog. en Python
• Possibilité d’insérer
– des sauts de ligne en u)lisant \n et
– des tabula4ons avec \t
2017 24 / 159
Entrées/Sor)es Introduc)on à l'algo. et prog. en Python
Exemples de sor)es
>>> a = 20
>>> b = 13
>>> print("La somme de", a, "et", b, "vaut",
a+b, ".")
La somme de 20 et 13 vaut 33.
>>> print(a,b,sep= ";")
20;13
>>> print("a=",a, "b=",b, sep="\n")
a=
20
b=
13
2017 25 / 159
Introduc)on à l'algo. et prog. en Python
THÈME 2:
INSTRUCTION CONDITIONNELLE
IF …. ELIF … ELSE
2017 26 / 159
Si... sinon Introduc)on à l'algo. et prog. en Python
Instruc)ons condi)onnelles : if
• Objectif : effectuer des actions seulement si
une certaine condition est vérifiée
• Syntaxe en Python :
if condition :
instructions à exécuter si vrai
La condition est une expression booléenne
• Attention à l’indentation !
– Indique dans quel bloc se trouve une instruction.
– obligatoire en Python.
2017 27 / 159
Si... sinon Introduc)on à l'algo. et prog. en Python
if condition :
instructions à exécuter si vrai
else :
instructions à exécuter si faux
2017 28 / 159
Si... sinon Introduc)on à l'algo. et prog. en Python
2017 29 / 159
Si... sinon Introduc)on à l'algo. et prog. en Python
2017 30 / 159
Si... sinon Introduc)on à l'algo. et prog. en Python
2017 31 / 159
Introduc)on à l'algo. et prog. en Python
THÈME 3:
BOOLÉENS ET
CHAINES DE CARACTERES
2017 32 / 159
Introduc)on à l'algo. et prog. en Python
No)ons du thème:
2017 33 / 159
Chaînes de caractères Introduc)on à l'algo. et prog. en Python
2017 35 / 159
Chaînes de caractères Introduc)on à l'algo. et prog. en Python
Exemples
>>> print("C’est toto")
C’est toto
>>> print('C'est toto')
SyntaxError : invalid syntax
>>> print("Il a dit "hello" !")
SyntaxError : invalid syntax
>>> print('Il a dit "hello" !')
Il a dit "hello"
>>> print("""C'est toto qui a dit "hello" !""")
C’est toto qui a dit "hello" !
>>> print("""C'est toto qui a dit "hello"""")
SyntaxError : …
!
2017 36 / 159
Chaînes de caractères Introduc)on à l'algo. et prog. en Python
Expressions booléennes
« ou » logique : or
• expr1 or expr2 vaut vrai si et seulement si au moins
une des deux expressions expr1 et expr2 est vraie.
2017 38 / 159
Expressions booléennes Introduc)on à l'algo. et prog. en Python
Expressions booléennes
« et » logique : and
• expr1 and expr2 vaut vrai si et seulement si les
deux expressions expr1 et expr2 sont vraies.
2017 39 / 159
Expressions booléennes Introduc)on à l'algo. et prog. en Python
Lois de De Morgan
not(expr1 or expr2) = not(expr 1) and not(expr2)
Exemple :
not( a > 2 or b <= 4 ) équivaut à
( a <= 2 ) and ( b > 4 )
!
not(expr1 and expr2) = not(expr 1) or not(expr2)
Exemple :
not( a > 2 and b <= 4 ) équivaut à
( a <= 2 ) or ( b > 4 )
!
2017 40 / 159
Introduc)on à l'algo. et prog. en Python
THÈME 4:
BOUCLES WHILE
2017 41 / 159
Introduc)on au while Introduc)on à l'algo. et prog. en Python
No)on du thème:
• Boucle while :
– Fonc)onnement et syntaxe
– Compteur de boucle
– Accumulateur et drapeau
– Boucles imbriquées
2017 42 / 159
Introduc)on au while Introduc)on à l'algo. et prog. en Python
Fonc)onnement et syntaxe
• But: répéter des instruc)ons jusqu'à ce qu'une
condi)on change.
• Syntaxe:
while condition:
instructions
suite_du_programme
• Les instructions seront répétées tant que
condition est vraie.
Lorsque que condition devient fausse, on exécute
suite_du_programme.
!
2017 43 / 159
Introduc)on au while Introduc)on à l'algo. et prog. en Python
Note: si b est non-nul dès le premier essai, on n’entre pas dans le while.
2017 44 / 159
Introduc)on au while Introduc)on à l'algo. et prog. en Python
Exemple 2:
while True :
print("Je boucle.")
print"("Fin")
2017 45 / 159
Compteur de boucle Introduc)on à l'algo. et prog. en Python
Compteur de boucle
• Sert à compter combien de fois l’on passe dans la
boucle (ou un nombre qui dépend de cela)
2017 46 / 159
Compteur de boucle Introduc)on à l'algo. et prog. en Python
2017 48 / 159
Compteur de boucle Introduc)on à l'algo. et prog. en Python
Variable "accumulateur"
• Pour stocker des informa)ons sur les valeurs parcourues,
par exemple la somme:
!
i=1
somme = 0 # initialement, la somme est égale à 0
while i <= 10 :
somme = somme + i
# chaque valeur de i est rajoutée à la somme
#(accumulation)
i = i + 1
# ne jamais oublier de mettre à jour le compteur
print("La somme des 10 premiers entiers est : ", somme)
2017 50 / 159
Accumulateur et drapeau Introduc)on à l'algo. et prog. en Python
Ini)alisa)on de « l’accumulateur »
2017 51 / 159
Accumulateur et drapeau Introduc)on à l'algo. et prog. en Python
Variable « drapeau »
• Un accumulateur booléen est appelé drapeau.
• Exemple: lire 10 en)ers et vérifier qu'ils sont tous impairs:
!
i=0
tous_impairs = True
while i < 10:
x = int(input(’Entrez un entier:’))
tous_impairs = tous_impairs and (x % 2 != 0)
i=i+1
if tous_impairs:
print(’Tous les nombres entrés sont impairs’)
else:
print(’Au moins un nombre entré n’était pas impair’)
!
2017 52 / 159
Accumulateur et drapeau Introduc)on à l'algo. et prog. en Python
2017 53 / 159
Break/con)nue Introduc)on à l'algo. et prog. en Python
Le mot-clé break
• Permet de sor4r immédiatement de la boucle while
i=1
while i<100:
if i % 2 == 0 :
print("*")
break
i=i+1
print("Incrementation de i")
print("Fin")
2017 54 / 159
Break/con)nue Introduc)on à l'algo. et prog. en Python
Le mot-clé continue!
• Permet de remonter immédiatement au début de la boucle
while en ignorant la suite des instruc)ons dans la boucle.
i=1
while i<100:
if i % 2 == 0 :
print("*")
continue
i=i+1
print("Incrementation de i")
print("Fin")
2017 55 / 159
Break/con)nue Introduc)on à l'algo. et prog. en Python
Break et con)nue
• Inconvénients:
– Code plus difficile à lire/analyser si plusieurs niveaux
d'imbrica)ons et/ou longues instruc)ons dans le
while
– N'a pas toujours d'équivalent dans les autres
langages de programma)on
è On essaiera tant que possible de se passer de
break et con)nue.
2017 56 / 159
Break/con)nue Introduc)on à l'algo. et prog. en Python
Au lieu de break
stop=False
while cond: while (not stop) and cond:
instructions instructions
if … : if … :
… …
break stop=True
other_instruct if not stop:
other_instruct
2017 57 / 159
Boucles imbriquées Introduc)on à l'algo. et prog. en Python
Boucles imbriquées
• Un instruc)on d’une boucle while peut être
une boucle while
Ex : résultat produit par ce programme ?
i = 1
while i <= 3 :
j = 1
while j <= 2 :
print(i, ", ", j)
j = j + 1
i = i + 1
!
2017 58 / 159
Boucles imbriquées Introduc)on à l'algo. et prog. en Python
Résultat :
1, 1
1, 2
2, 1
2, 2
3, 1
3, 2
2017 59 / 159
Boucles imbriquées Introduc)on à l'algo. et prog. en Python
Exemple d’applica)on
On veut écrire un programme qui affiche un « carré » de n x n
fois le caractère ‘*’. L’u)lisateur choisit le côté n du carré.
Exemple de résultat :
Entrez la valeur de n : 5
*****
*****
*****
*****
*****
2017 60 / 159
Boucles imbriquées Introduc)on à l'algo. et prog. en Python
Correc)on
n = int(input("Entrez la valeur de n : "))
num_lig = 0 # compteur de ligne
while num_lig < n :
2017 61 / 159
Introduc)on à l'algo. et prog. en Python
THÈME 5:
FONCTIONS (BASES)
2017 62 / 159
Introduc)on à l'algo. et prog. en Python
No)on du thème:
• Fonc)ons:
– Principe
– Syntaxe
– Portée des variables
2017 63 / 159
Principe Introduc)on à l'algo. et prog. en Python
Fonc)ons : pourquoi ?
Un exemple
import turtle
def carre(cote) :
# trace un carre de taille egale a cote
i = 1 # compteur du nb de cotes
while i <= 4 :
turtle.forward(cote)
turtle.right(90)
i=i+1
2017 65 / 159
Principe Introduc)on à l'algo. et prog. en Python
Un exemple
# programme principal
carre(100)
turtle.up()
turtle.forward(130)
turtle.down()
carre(50)
2017 66 / 159
Principe Introduc)on à l'algo. et prog. en Python
Principe
• Une suite d’instruc)ons encapsulées dans une « boîte »
• Qui prend zéro, un ou des arguments
• Qui retourne zéro, une ou plusieurs valeurs de retour
• Et qui con)ent éventuellement des "effets de bord" qui
modifient l'environnement (interac)ons entrées/sor)es,
turtle…)
Argument(s) Valeur(s) de
Fonc)on retour
Effets de bords
(Interac)ons Entrées/Sor)es, turtle…)
2017 67 / 159
Principe Introduc)on à l'algo. et prog. en Python
Exemple
Dans un exercice de géométrie, on doit souvent
calculer la distance entre deux points.
(!! − !! )! + (!! − !! )!
Abscisse A,
Ordonnée A,
Distance entre
Abscisse B, Distance A et B
Ordonnée B
Exemple de la distance
Fonc)on à définir au dessus de votre
programme principal:
Exemple de la distance
if __name__=="__main__": # prog. principal
print(distance(1, 2, 1, 5))
xA=2
yA=3
z=distance(xA, yA, 0, 0)
print("Distance de (0,0) à A :", z)
2017 70 / 159
Principe Introduc)on à l'algo. et prog. en Python
Python Tutor
2017 71 / 159
Syntaxe Introduc)on à l'algo. et prog. en Python
2017 72 / 159
Syntaxe Introduc)on à l'algo. et prog. en Python
Programme principal
À placer en-dessous de la définition des fonctions.
2017 73 / 159
Syntaxe Introduc)on à l'algo. et prog. en Python
z=distance(2, 3, 4, 5)
print(z)
carre(50) # pas de valeur de retour,
# mais des effets de bord (turtle)
def deplace_sans_tracer(distance):
up()
forward(distance)
down()
def demander_nom():
nom=input("Quel est ton nom?")
return nom
Exemple d'appels:
name=demander_nom() # pas d'argument
carre_standard() # pas d'argument ni valeur de retour
2017 76 / 159
Syntaxe Introduc)on à l'algo. et prog. en Python
Différence
Effets de bord vs. Valeur de retour
def addition(x,y):
return x+y
Effets de bords
Aucun
2017 77 / 159
Syntaxe Introduc)on à l'algo. et prog. en Python
Différence
Effets de bord vs. Valeur de retour
def addition_IO():
x=float(input("x ?"))
y=float(input("y ?"))
print(x+y)
Argument Valeur(s) de
Aucun
addi)on_IO retour
Aucun
Effets de bords
Deux inputs et un print
2017 78 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
Mise en situa)on
Trois équipes:
• Une équipe fonc)on moyenne
• Une équipe fonc)on ecart_plus_grand_que
• Une équipe programme principal
• Communica)on entre les équipes par
– Appel de fonc)on (avec les arguments)
– Valeur de retour
(modélisée par des papiers)
• Le tableau sert uniquement pour les print et input
2017 79 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
Fonc)ons u)lisées
def moyenne(x,y):
# renvoie la moyenne de x et y
resultat=(x+y)/2
return resultat
def ecart_plus_grand_que(x,y,seuil):
# calcule l'ecart entre x et y
# et renvoie True si l'ecart est plu grand que seuil, False
sinon
if x>y:
ecart=x-y
else:
ecart=y-x
# ecart contient la valeur absolue de x-y
# on aurait pu faire: ecart=abs(x-y)
if ecart>=seuil:
return True
else:
return False
2017 80 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 81 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 82 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 83 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
*1. Sauf si le mot-clé global est u)lisé, mais nous ne le ferons pas.
2. Il y aura des sub)lités lorsque nous verrons les listes.
2017 84 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 86 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 87 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
Correc)on de l'exemple
def decalage(s, n):
# renvoie la chaine s préfixee de n tirets
espaces="-" * n
resultat=espaces+s n est maintenant un argument
return resultat (donc une variable locale)
2017 88 / 159
Portée des variables Introduc)on à l'algo. et prog. en Python
2017 89 / 159
Introduc)on à l'algo. et prog. en Python
THÈME 6:
FONCTIONS (AVANCÉ)
2017 90 / 159
Introduc)on Introduc)on à l'algo. et prog. en Python
No)ons du thème :
• Fonc)ons:
– Plusieurs valeurs de retour
– Docstring
– Arguments op)onnels
• Le mot-clé None
2017 91 / 159
Plusieurs valeurs de retour Introduc)on à l'algo. et prog. en Python
# programme principal
q,r = division(22,5)
print("q=", q, "et r=", r)
2017 92 / 159
Plusieurs valeurs de retour Introduc)on à l'algo. et prog. en Python
2017 93 / 159
Docstring Introduc)on à l'algo. et prog. en Python
Docstring: Un exemple
def division(a,b) :
""" Renvoie le quotient et le reste
de la division de a par b """
quotient=a//b
reste= a%b
return quotient, reste
Dans l'interpréteur (ou dans un programme):
>>> help(division)
Help on function division in module __main__:
division(a, b)
Renvoie le quotient et le reste
de la division de a par b
2017 94 / 159
Docstring Introduc)on à l'algo. et prog. en Python
Docstring
Une docstring est une chaîne de caractères (encadrée par des
triple guillemets) placée au tout début d'une fonc4on, qui
permet de décrire la fonc)on.
def nom_fonction(argument1, argument2, …):
""" docstring
"""
instructions de la fonction
2017 96 / 159
Arguments op)onnels Introduc)on à l'algo. et prog. en Python
2017 98 / 159
Arguments op)onnels Introduc)on à l'algo. et prog. en Python
2017 99 / 159
Arguments op)onnels Introduc)on à l'algo. et prog. en Python
Help et Docstring
sur une fonc)on avec arguments op)onnels
>>> help(affiche_pizza)
Help on function affiche_pizza in module __main__:
affiche_pizza(saveur, taille='normale')
Affiche saveur, taille et prix de la pizza
Arguments nommés
Lors d'un appel de fonc)on, on peut préciser le nom de l'argument
concerné :
>>> affiche_pizza("4 fromages", afficheF=True)
Appel de fonc)on
Arguments non-nommés puis Arguments nommés
>>> affiche_pizza("4 fromages", afficheF=True)
Pizza 4 fromages , taille: normale
Prix 9 euros ( 59.04 francs).
Le mot-clé None
Il existe une valeur constante en Python qui s'appelle None. Cela
correspond à "rien", "aucune".
Lorsqu'une fonc)on n'a pas d'instruc)on return, elle renvoie la
valeur None.
def dit_bonjour():
print("Bonjour!")
print("Bienvenue")
# pas de return Affichage lorsque l'on lance le
module:
# prog. Principal Bonjour!
test=dit_bonjour() Bienvenue.
print("Test vaut", test) Test vaut None
Le mot-clé None
Le mot-clé None peut aussi servir à ini)aliser une variable lorsque
l'on ne sait pas encore précisément quelle valeur on souhaite lui
aJribuer.
reponse=None # on n'a pas encore de reponse
while reponse!="non":
x=float(input("Veuillez entrer un nombre:"))
print("Le carré de ce nombre est:", x*x)
reponse=input("Voulez-vous recommencer?")
print("Terminé")
THÈME 7:
LISTES
No)ons du thème:
• Listes:
– Structure de données
– Opérateurs sur les listes
– Effets de bord sur les listes
________________________
>> Multiple3[____]
21
>> Multiple3.____________________
>> Multiple3
# prog. principal
ma_liste=[2,5,8,12,17,25]
trouve=cherche(12,ma_liste)
print(trouve) # affiche True
trouve=cherche(6, ma_liste)
print(trouve) # affiche False
2017 117 / 159
Opérateurs sur les listes Introduc)on à l'algo. et prog. en Python
>> Multiple3.extend([24,27])
>> Multiple3
[3, 6, 9, 15, 21, 24, 27]
2017 118 / 159
Opérateurs sur les listes Introduc)on à l'algo. et prog. en Python
>> EhEh
>> EhEh.__________
>> EhEh
Copie de listes
• Pour copier une liste, on peut u)liser
– la fonc)on list()
– l’opéra)on générique copy.deepcopy() (import copy)
liste1=[1,2,3]
liste3=list(liste1)
liste3.append("bip")
Effets de bords:
Insère e_deb au début de l et e_fin à la fin de l
Exemple (suite)
import random
def ajoute_random(l):
""" Renvoie une liste obtenue a partir de l en
ajoutant un entier aleatoire entre 5 et 10"""
x=random.randint(5,10)
ma_liste=list(l)
ma_liste.append(x)
return ma_liste
2017 129 / 159
Effets de bord sur les listes Introduc)on à l'algo. et prog. en Python
Erreur classique
Erreur à ne pas commetre:
import random
def ajoute_random(l):
""" Renvoie une liste obtenue a partir de l en
ajoutant un entier aleatoire entre 5 et 10"""
x=random.randint(5,10)
ma_liste=l
ma_liste.append(x)
return ma_liste
2017 131 / 159
Effets de bord sur les listes Introduc)on à l'algo. et prog. en Python
THÈME 8:
BOUCLES FOR
No)ons du thème:
• Boucles For
– Sur les structures de données
– Avec range
Itéra)on
• Boucle while : la condi)on détermine le
nombre de fois que la boucle est exécutée
boucle condi4onnelle
• Si on connaît ce nombre à l’avance,
on peut u)liser le for…
boucle incondi4onnelle
La boucle for
• Permet de parcourir des structures :
Listes de nombres, d’objets, leJres d’un mots
for e in [1, 4, 5, 0, 9, 1] :
print(e)
for e in ["a", "e", "i", "o", "u", "y"]:
print(e)
for e in "python":
print(e) e prend successivement
les valeurs de la liste parcourrue
for i in range(1,6) :
1, 2, 3, 4, 5,
print (i,end=",")
• range(deb, fin, pas)
– Fonc)on qui prend des arguments en)ers
– génère une séquence d’en)ers entre [deb, fin[ avec le pas
choisi.
• Les paramètres deb et pas sont op4onnels
range(a) : séquence des en)ers dans [0, a[ , c'est-à-dire dans [0, a-1]
range(b,c) : séquence des valeurs [b, c[, c'est-à-dire dans [b, c-1]
range(e, f, g) : séquence des valeurs [e, f[ avec un pas de g
• for var in range(deb, fin, pas) :
instrucGons
A noter
• En cas d’incohérence, la boucle est ignorée et l'on passe
aux instruc)ons suivantes :
for k in range(200, 210, -2) : ignorée
print(k)
for k in range(110,100,-2) :
print(k)
Exercice
• Pour les cas suivants, indiquer les valeurs successives affichées
sur la console
THÈME 9:
DICTIONNAIRES
Dic)onnaire
• Tout comme une liste, un dic)onnaire permet
de sauvegarder en mémoire plusieurs valeurs
de types quelconques.
• Contrairement à une liste, les valeurs d’un
dic)onnaire ne sont pas stockées dans un
ordre par)culier.
Parcourir un dic)onnaire
• La boucle for peut être u)lisée pour parcourir toutes les clés
d’un dic)onnaire:
for key in D:
print(‘La clé’, key, ‘a pour valeur: ‘, D[key])
• Exemple:
dates_naissance=
{‘ingrid’:[12,6,1995],‘marc’:[27,8,1996],‘brice’:
[11,10,1995]}
for nom in dates_naissance :
date = dates_naissance[nom]
print(nom, ‘fetera son anniversaire le ‘,
date[0], ‘/’, date[1], ‘/2017’)
à Affiche:
ingrid fetera son anniversaire le 12 / 6 /2017
marc fetera son anniversaire le 27 / 8 /2017
brice fetera son anniversaire le 11 / 10 /2017
Copie de dic)onnaires
• Comme dans le cas des listes, l’affecta)on d’un dic)onnaire vers
une variable ne fait que référencer le même dic)onnaire, exemple:
>>> D = {1: 10, 2: 20, 3: 30}
>>> E = D
>>> E[5] = 50
>>> E
{1: 10, 2: 20, 3: 30, 5: 50}
>>> D
{1: 10, 2: 20, 3: 30, 5: 50}
• Pour créer une copie d’un dic)onnaire, on u)lise dict():
>>> F = dict(D)
>>> F[6] = 60
>>> F
{1: 10, 2: 20, 3: 30, 5: 50, 6: 60}
>>> D
{1: 10, 2: 20, 3: 30, 5: 50}
THÈME 10:
LECTURE/ECRITURE
DANS UN FICHIER
Fin de la manipula)on
• Une fois la lecture/écriture terminée, il faut
fermer le fichier en u)lisant la fonc)on close().
f = open(‘fichier.txt’)
for ligne in f:
print(‘une ligne lue :’, ligne)
f.close()
Exemple de lecture
• Soit le fichier « nombres.txt » ci-contre
qui con)ent des en)ers (un par ligne). nombres.txt
Exemple d’écriture
• On veut sauvegarder les 10 puis.txt
premières puissances de 2 dans un 1
fichier « puis.txt »: 2
4
fichier = open(‘puis.txt’, ‘w’) 8
for i in range(0,10): 16
# ne pas oublier de convertir en chaine 32
64
# de caractères et de sauter de ligne!
128
fichier.write(str(2 ** i) + ‘\n’) 256
fichier.close() 512