Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Cours d’Informatique Scientifique
Programmation en Python
Cours 2/8
Laurent Pointal
laurent.pointal @ limsi.fr
@ laposte.net
Source des illustrations: OpenClipArt.org et créations personnelles.
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
2
16
v1.3
Opérations sur les données
En Python: donnée objetApplication de méthodes spécifiques de traitement pour chaque type d'objet:
objet.methode(paramètres…)Exemples:
"nom".upper()"Joe:Student:14.2".split(":")(100).bit_length()
Généralement on utilise les méthodes via des variables:s = "nom"s.upper()
Utilisation de fonctions génériques:fonction(paramètres…)
Exemples:len("chaîne")max(1,45,2,8,29)min(8.3,9.1,7.3,11.67)
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
3
16
v1.3
Opération de formatage de chaînes
Méthode format() des chaînes, utilisation de {…}
Exemples"Monsieur {} {}".format("Joe","Student")
➔ 'Monsieur Joe Student'"Bornes: [{}, {}]".format(2.5,200.251)
➔ 'Bornes: [2.5, 200.251]'"{prenom} {nom}".format(nom="Student",prenom="Joe")
➔ 'Joe Student'"{1} {0} {0}".format(4,9)
➔ '9 4 4'"{!r} {!s}".format("txt","txt")
➔ "'txt' txt""{0:.6f} {0:.6g}".format(2332.433e12)
➔ '2332433000000000.000000 2.33243e+15'"{0} {0:b} {0:o} {0:x}".format(100)
➔ '100 1100100 144 64'
Détails, cf TP et doc Python:chap 7.1.2 - String Formatingchap 7.1.3.1. Format Specification Mini-Language¶
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
4
16
v1.3
Types de données conteneurs
● Séquences ordonnées (accès par index n° d'ordre)
● chaîne figée (str) - séquences de caractères
● liste (list) - séquence pour toutes données, modifiable: éléments échangeables, ordre modifiable…
[19,"John","Student"] [] [(2,4),(9,1),(18,2)]
● séquence figée (tuple) - séquence pour toutes données, non modifiable
(12.3,78.1) ("un",) ()
Extraction avec [] comme déjà vu avec les chaînes.
● Séquences non ordonnées (opérations ensemblistes)
● ensemble (set)
{1,6,"douze"}
● ensemble figé (frozenset)
● Associations clé/valeur (accès par clé, non ordonné)
● dictionnaire (dict) - “map” ou tableau associatif clé ➔ valeur
{"k":"v",1:"un","2":2} {}
Accès aux éléments avec [clé]. …tests dans l'interpréteur
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
5
16
v1.3
Programmer de la calculatrice au script Python, le flux d'instructions
Exécution en séquence des instructions.
On parle du “flux” des instructions qui alimentent le processeur.
# Fichier: calcul_sphere.py# Outils importésfrom math import sqrt,pi# Dimensions en x/y/z de l'ellipsoïde.dx = 3.45dy = 5.4dz = 1.76# Calcul du volume sphérique englobant:r = sqrt(dx**2+dy**2+dz**2)s = 4/3*pi*r**3# Calcul du volume de l'ellipsoïde.e = 4/3*pi*dx*dy*dz# Rapport entre les deux:rvs = e / s
.
.1.234.56.7.8
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
6
16
v1.3
Fonctions d’entrées / sorties
Attention: en mode “Calculette” la saisie et l’affichage sont fait automatiquement. Pas dans les scripts (fichiers .py) !
# monscript.pys = input("Qui es-tu ? ")su = s.upper()print ("Bonjour",su)n = int(input("Né en ? "))print ("Tu as",2010-n,"ans.")
Entrées texte au clavier:input(indication) ➔ chaîne
Sorties texte à l’écran:print(données)
Qui es-tu ? Joe StudentBonjour JOE STUDENTNé en ? 1991Tu as 19 ans.
Utilisation du transtypage pour entrer des int, float…
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
7
16
v1.3
Programmer avec input/print
# Fichier: calcul_sphere2.py# Outils importésfrom math import sqrt,pi# Dimensions en x/y/z de l'ellipsoïde.dx = float(input("dx = "))dy = float(input("dy = "))dz = float(input("dz = "))# Calcul du volume sphérique englobant:r = sqrt(dx**2+dy**2+dz**2)s = 4/3*pi*r**3# Calcul du volume de l'ellipsoïde.e = 4/3*pi*dx*dy*dz# Rapport entre les deux:es = e / s# Affichage du résultatprint("ellipsoïde:{:g} sphère:{:g} rapport:{:g}" .format(e,s,es))
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
8
16
v1.3
Blocs d’instructions composées
Regroupement d’un ensemble d’instructions:Syntaxe:
ligne d’en-tête : instruction 1 instruction 2 instruction 3
Source du bloc d'instructions, terminé par un caractère :
Instructions du bloc, indentées par rapport à la ligne d’en-tête(généralement 4 espaces)
● Le retour au niveau d'indentation de la ligne d’en-tête indique qu’on est sorti du bloc d'instructions.
● Les blocs peuvent être imbriqués. à plusieurs niveaux
● Avec l’indentation, le découpage est visuel.
:
:
:
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
9
16
v1.3
Ruptures de flux
Changements dans l’ordre d’exécution des instructions.● Choix d’un bloc d’instructions à exécuter ou d’un autre suivant une condition:
● Répétition d’un bloc d’instructions sur une série de données:
● Répétition d’un bloc d’instructions tant qu’une condition est vérifiée:
● Sortie / saut dans la répétition d’un bloc:
if / elif / else
for in / else
while / else
break / continue● Traitement des erreurs ou exceptions d’exécution:
try / except / finally / raise● Contextes d'exécution protégés:
with
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
10
16
v1.3
Instruction if
Exécution alternative entre des blocs d’instructions.
if condition1 :
elif condition2 :
optionnel
Les condition sont des expressions logiques booléennes: True ou False.
else :
optionnelrépétable
Bloc exécuté si condition1 est vrai.
Bloc exécuté si condition1 est faux et condition2 est vrai.
Bloc exécuté si aucune condition n'est vraie.
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
11
16
v1.3
Instruction for
Parcours d’une séquence de données avec une variable.
for variable in itérable :
optionnel
else :
Bloc exécuté avec variable valant tour à tour chacune des valeurs de itérable.
Bloc exécuté si la sortie de la boucle for se fait normalement à la fin du traitement des valeurs.
On parle de “boucle for”, de “parcours de séquences”…
Les objets itérables fournissent des valeurs au fur et à mesure qu’on leur demande.
Permet d'effectuer le bloc de traitements for pour chacun des éléments de l'itérable. Chaque passage dans le bloc de traitements for est appelé une itération.
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
12
16
v1.3
Les itérables
Les objets itérables fournissent des valeurs au fur et à mesure qu’on leur demande. ● Les conteneurs qui fournissent les valeurs qu'ils contiennent
● str, list, tuple,… ➔ ordre fixé● dict,… ➔ ordre variable (fournit les clés)● set,… ➔ ordre variable
● Les vues sur les dictionnaires● d.values(), d.keys(), d.items()
(permettent en plus certaines opérations ensemblistes)● Les générateurs, fonctions (avec instruction yield) ou expressions (avec
syntaxe for parenthésé) qui calculent des valeurs au fur et à mesure.● range(debut,fin,pas)
● Les autres objets itérables, adaptés à des besoins particuliers● objets fichiers textes, fournissent les lignes à chaque itération
Les conteneurs peuvent être construits à partir d’itérables adaptés.
Fonctions standard génériques travaillant avec des itérables: all any enumerate filter iter map min max next reversed sorted sum zip
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
13
16
v1.3
Instruction while
Exécution tant que une condition est vérifiée.
while condition :
optionnel
else :
Bloc exécuté tant que la condition est vraie.
Bloc exécuté si la sortie de la boucle while se fait normalement lorsque la condition devient fausse.
Chaque passage dans le bloc de traitements est appelé une itération.
On parle de “boucle while”, de “boucle sous condition”…
Attention à s’assurer que la condition puisse à un moment devenir fausse.Sinon c’est une boucle sans fin.
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
14
16
v1.3
Instructions break / continue
●Sortie immédiate du bloc d’instructions de la boucle for ou while en cours.
●Pas de passage par le bloc d’instructions else associé.
break
●Passage à l’itération suivante de la boucle for ou while en cours.
continue
for ou while :
break
else :
for ou while :
continue
else :
Ruptures brusques du flux normal des instructions.
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
15
16
v1.3
Traitements d’exceptions (erreurs)
try :
except (exceptions) as e :
optionnel
finally :
raise exception
répétable avec différents types d’exceptions
Détection d’une situation d’erreur pendant l'exécution
du bloc ‘try’: levée d'exception
Une instruction raise seule, exécutée dans le bloc except, transmet l’exception au traitement des erreurs le plus récent.
Quelques classes d'erreurs: Exception ValueError NameError IndexError KeyError AttributeError IOError TypeError ZeroDivisionError…
else :
Bloc ‘try’ exécuté dans les cas normaux.
Bloc exécuté si une erreur de type exception est détectée.
Bloc exécuté si le bloc ‘try’ se termine sans exception.
Bloc exécuté dans tous les cas.
optionnel
Lau
ren
t P
oin
tal
Dép
art
em
en
t M
esu
res P
hysiq
ues
Cou
rs d
’In
form
ati
qu
e S
cie
nti
fiq
ue
2/8
16
16
v1.3
Contextes d’exécution protégée
Fournis par certains objets pour assurer une bonne gestion des ressources.
with contexte() as variable :
Bloc exécuté dans le cadre du contexte.
Réalise le try / finally d’une façon automatique.
with open("donnees.txt") as f : for line in f : print("{:04d} {}",len(line),line)
Exemple: ouverture d’un fichier avec fermeture automatique.