16
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.

Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

Page 2: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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)

Page 3: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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¶

Page 4: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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

Page 5: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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

Page 6: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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…

Page 7: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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))

Page 8: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

:

:

:

Page 9: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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

Page 10: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

Page 11: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

Page 12: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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

Page 13: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

Page 14: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.

Page 15: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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

Page 16: Programmation en Python Cours 2/8cours:cours2-infosci... · L a u r e n t P o i n t a l D é p a r t e m e n t M e s u r e s P h y s i q u e s C o u r s d ’ I n f o r m a t i q

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.