Cours programmation - Marc Jachym Licence professionnelle – Métrologie dimensionnelle et qualité IUT de St enis! Uni"ersité #aris
%$Cours de Programmation avec le langage Python Niveau débutant en programmation
Table des matières m atières #artie II– Les éléments de &ase du langage #ython'''''''''''''''''''''''''''''''''''''''''''''''' #ython'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''( '''''''''''''''''''''''''( II'$' #ourquoi #ython ) *uelques notions essentielles sur le langage #ython'''''''''''''''''''''''''''''''''''''''' #ython'''''''''''''''''''''''''''''''''''''''' ( II'(' #remiers éléments de programmation en #ython'''''''''''''''''''''''''''''''''''''''''''''''' #ython'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''% '''''''''''''''''''''''''''''% II'('$ Les "aria&les'''''''''''''''''''''''''''''' "aria&les''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''' ''% II'('( Le type des "aria&les'''''''''''''''''''''''''''''' "aria&les''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''+ '''''''''''''''+ II'('% Les chaines de caract,res''''''''''''''''''''''''''''''''''''''''''''''''''' caract,res'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''' II'('. Le formatage des chaines de caract,res'''''''''''''''''''''''''''''''''''''''''''''' caract,res''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''' / II'('+ Les 0ntrées 1 Sorties''''''''''''''''''''''''''''''''''''''' Sorties'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''$$ ''''''''''''''''''''''''''''$$ II'('2 Les opérateurs''''''''''''''''''''''''''''' opérateurs'''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''' ''''''''$% $% II'('3 Les "aleurs &ooléennes et les tests''''''''''''''''''''''''''''''''''''''''''''''''''' tests'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''' ''''''''''''''''' $+ II'('3'$ La structure if''''''''''''''''''''''''''''''''''''''''''''''' if'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''' $2 II'(' Les structures de contr4le ou &oucles'''''''''''''''''''''''''''' &oucles''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''' '''$ II'(''$ La &oucle 5hile'''''''''''''''''''''''''''''''''''''''''' 5hile''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''$ '''''''''''''''''''''''''''''$ II'(''( La &oucle for''''''''''''''''' f or'''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''' $/ II'(''% Les instructions &rea6 et continue''''''''''''''''''''''''''''''' continue'''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''($ ''''''''''''($ II'('/ Un premier cas de collection d7éléments 8 les listes''''''''''''''''''''''''''''''''''' listes'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''($ ''''''''''''''''''''''''''''''($ II'('$9 Les sous-programmes ou fonctions'''''''''''''''''''''''''''''''''' fonctions''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''(. ''''''''(. II'('$9'$ #résentation'''''''''''''''''''''''''''''' #résentation''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''(. ''''''''''''''''''''''(. II'('$9'( éfinition d7une fonction'''''''''''''''''''''''''''''''''''''''''''''' fonction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''' '''''''''''' (2 II'('$9'% Utilisation d7une fonction'''''''''''''''''''''''''''''''''''''' fonction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''' '''''''''''''''' ( II'('$9'. :etour sur le passage d7argument ; une fonction''''''''''''''''''''''''''''''''''''''' fonction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''( '''''''''''''''''''''''''( II'('$$ La gestion des erreurs d7e<écution! les e
$ 1 (%
Partie II– Les éléments de base du langage Python
II.1. Pourquoi Python ? uelques notions essentielles sur le langage Python #ython est un langage de programmation généraliste! facile ; apprendre et rapide ; mettre en =u"re' #ython est généraliste car! selon les multiples réalisations qu7il a ; son actif! il peut >tre utilisé dans tous les domaines 8 écriture d7applications pour le ?e& ?e& @ser"eur d7application Aope! frame5or6 Bango! programmes de d e calculs mathématiques @&i&lith,que Sci#y! interfaces graphiques @il e
#ython est facile ; apprendre car de nom&reuses opérations dé"olues au programmeur dans les langages classiques comme le langage C! par e
me! #ython g,re dynamiquement les "aria&les et li&,re le programmeur des déclarations de type' e plus #ython impose d7écrire les &locs d7instructions de mani,re indentée! ce qui fa"orise grandement la lecture des programmes' 0nfin! en tant que langage interprété @"oir dans la partie I de ce cours! #ython est rapide ; mettre en =u"re' Il suffit de lancer la console #ython pour a"oir sous la min de quoi tester directement des commandes et des structures de données' Cela est un gain de temps pour le programmeur par rapport au cycle compilation1édition de liens du langage C'
( 1 (%
Ceci étant dit! et s7il est "rai que #ython peut >tre utilisé dans de nom&reu< domaines! cela ne signifie par que #ython est le &on choi< dans tous les cas H #ython est sou"ent considéré comme un langage de scripts! c7est ; dire destiné ; l7écriture de petits programmes utilitaires ser"ant dans des conte
II.". Premiers éléments de programmation en Python II.".1 Les variables :appelons qu7une "aria&le représente un stoc6age en mémoire "i"e de l7ordinateur @mémoire "i"e 8 l; ou s7e<écutent les programmes! par opposition ; mémoire de masse! comme par eme des pointeurs comme en langage C' Tout % 1 (%
acc,s ; la mémoire est réalisé par l7intermédiaire de "aria&les qui ont une signification précise pour le programmeur' Les noms des "aria&les o&éissent ; des r,gles 8 Un nom doit dé&uter par une lettre ou par le caract,re de soulignement $ puis il doit >tre sui"i par un nom&re quelconque de lettres! chiffres ou de caract,res de soulignement' Pn remarquera donc que le soulignement est le seul caract,re e
Intéressant % Pn en profitera pour décou"rir dans la documentation officielle de #ython! la partie The Python langage reference. La partie (! Lexical analysis, utilise la notation appelée BNF grammar pour présenter de mani,re compl,te et normalisée la synta
La création d&une variable se fait lors de sa premi,re utilisation qui est touBours une initialisation réalisée grOce ; l7 opérateur d&a''ectation (
)* % a. Cette affectation créé une "aria&le nommée a et lui affecte la "aleur enti,re .' Pn peut d,s lors utiliser cette "aria&le' #our afficher son contenu 8 print a #our la placer dans une autre "aria&le 8 &a #our l7utiliser dans une e*pression 8 c $9 K (Va
+q importante % Le signe utilisé dans les e
mémoire représenté par la "aria&le placée ; gauche du signe le contenu représenté par l7e
II."." Le type des variables C7est une notion tr,s importante en programmation' 0n effet! au< valeurs contenues en mémoire sont associés des types' Ces types permettent ; la machine de sa"oir ce qu7elle peut faire a"ec les "aleurs et comment les manipuler' #ar e
Les variables Python sont créées lors de leur premi,re a''ectation- sans déclaration préalable' Les "aria&les #ython ne sont donc pas associées ; des types! mais les "aleurs qu7elles contiennent! elles! le sont H C7est au programmeur de sa"oir le type de la "aleur contenue dans une "aria&le ; un moment donné pour ne pas faire d7opération incompati&le' + 1 (%
#ar e
Qous "enons déB; de parler de deu< types etre adressés indi"iduellement' Un autre type simple est le type flottant qui représente un nom&re réel' Les nom&res réels peu"ent >tre représentés de différentes mani,res 8 '$.$2 ' '9%$.$2e( @notation a"ec mantisse et e
II.". Les chaines de caract,res Les chaines de caract,res sont des "aleurs composées de plusieurs caract,res' Il n7y a pas en #ython de type 7caract,re indi"iduel7 comme en langage C par e
7WonBour7 [WonBour[ 7Une chaine a"ec un retour ; la ligne_n7 Les chaines sont un e
II.". Le 'ormatage des chaines de caract,res Qous pou"ons! pour laffichage dinformations ; lécran par e
Qous de"rons alors utiliser des fonctions de con"ersion de type' 0mes dans la chaine fait appel ; lopérateur ' insi d signifie que lon "a placer dans la chaine une "aleur de type décimal' Qotre e
Les derni,res "ersions de #ython ont introduit une méthode que l7on peut préférer ; l7opérateur pour le formatage des chaines de caract,res' Il s7agit de la fonction format qui fait désormais partie des o&Bets de type chaine de caract,res' ^oici sur un e
1 (%
II.".2 Les )ntrées 3 4orties Un programme doit a"oir des moyens de communiquer a"ec le
/ 1 (%
_h<< permet de spécifier un caract,re SCII @codé sur &its en fournissant sa "aleur hetre utilisée qua"ec les chaines de caract,res unicode' Une chaine unicode sécrit a"ec le préfi
II.".7 Les opérateurs Les opérateurs permettent de manipuler les "aria&les en mémoire pour o&tenir des résultats' Le premier opérateur est l&a''ectation représenté par le signe (' Cet opérateur fondamental! qu7il ne faut pas confondre a"ec le test d7égalité mathématique que nous "errons ultérieurement! a déB; été présenté'
a3 8pérateurs arithmétiques % K
addition
V 1
soustraction multiplication di"ision
K -
a &K+ affecte dans a la "aleur représentée par &K+ c c – f soustrait de c la "aleur de f a +1( la di"ision ici est une di"ision enti,re car les deu< opérandes le sont' Le résulatat est donc la "aleur enti,re (
a +'9 1 ( di"ision décimale car un des opérateur est décimal' Le résultat sera ('+ opérateur modulo 8 reste a + ( a est affecté a"ec le reste de la de la di"ision enti,re di"ision de + par (! ce qui donne la "aleur $ aBout d7une quantité ; a K . on aBoute . ; la "aleur @supposée une "aria&le numérique contenue dans la "aria&le a retrait d7une quantité ; a - . on aBoute . ; la "aleur @supposée une "aria&le numérique contenue dans la "aria&le a
b3 8pérateurs logiques
$9 1 (%
Les opérateurs logiques permettent de com&iner des valeurs booléennes! cest ; dire des éléments dont la "aleur est interprétée comme vrai ou 'au*! pour o&tenir des etre Python "hell du Python I#L$ @raccourci cla"ier par Z$' Cela nous en"ois sur le site 8 http811docs'python'org1('31 Les opérateurs logiques sont décrits dans la partie The Python "tandard Library! au paragraphe +'% ans les e
c3 8pérateurs sur les chaines de caract,res Se reporter au ta&leau dopérations du paragraphe +'2 de The Python "tandard Library dans la documentation #ython présentée précédemment' Pn regardera aussi les méthodes applica&les au< ob!ets string dans le paragraphe +'2'$ de la documentation #ython' FString operations and methods 8 http811docs'python'org1('31li&rary1stdtypes'htmlsequence-types-str-unicode-list-tuple-&ytearray-&uffer-
II.".9 Les valeurs booléennes et les tests Pn appel "aleur &ooléenne une "aleur qui représente une é"aluation logique et qui représente donc lune des deu< possi&ilités sui"antes 8 "rai ou fau<' Les "aleurs &ooléennes sont le résultat de lé"aluation d e*pressions logiques et elles ser"ent ; faire des choi< dans un programme @effectuer telle action quand telle condition est réalisée' ^oici quelques e
aY+ a \ $9 a\& a & @égalité logique entre a et & 0me "aleur de "érité que la précédente Toutes ces e
II.".9.1 La structure i' Les etre utilisées dans des instructions conditionnelles introduite par le mot réser"é i' ' ^oici la structure dun &loc if 8 if e
Si le
$( 1 (%
:emarque 8 ans la structure if! lalternati"e else est facultati"e' ans ce cas! si leme décalage que le if lui-m>me'
Il y a un autre mot réser"é eli' ! qui permet des instructions de tests successifs! ce quon appelle aussi lalternati"e multiple 0tre placé dans une "aria&le' Une telle "aria&le prend alors une valeur booléenne' #ar e
Le langage #ython fournit les deu< "aleurs ;rue et tre interprétée comme une "aleur &ooléenne de la mani,re sui"ante 8 si une variable contient la valeur = ou une chaine >de caract,res vide- elle est interprétée comme 'ausse- toute variable qui ne contient pas = ou toute chaine non vide est interprétée comme vrai'
II.".@ Les structures de contrAle ou boucles II."[email protected] La boucle 6hile Qous "enons de "oir comment tester une e
Il est aussi possi&le de<écuter un m>me &loc dinstructions tant quune condition est "érifiée grOce ; la structure 6hile dont "oici la synta
II.".@." La boucle 'or Il y a aussi en langage #ython une structure 'or permettant de parcourir un nom&re fini d7éléments' La structure générale de la &oucle for est la sui"ante 8
'or element in ta&leau 8 &loc instructions
$. 1 (%
ans le &loc d7instructions! le programme dispose de la "aria&le représentant l&élément courant pris dans le tableau. Ci-dessus cette "aria&le a été nommée element! mais tout autre nom correct de "aria&le con"ient' Le &loc d7instructions sera e<écuté autant de fois qu7il y a de "aleur dans le ta&leau! chaque "aleur étant placée tour ; tour dans la "aria&le élément' Les mots 'or et in sont les deu< mots réser"és utilisés dans cette structure' 0val1- val" de la &i&lioth,que standard de #ython' Cette fonction ren"oie la collection des "aleurs comprises entre "al$ @inclus et "al( @e
Cela est équi"alent ; la &oucle sui"ante for i in F+!2!3!!/!$9G 8 print i
Pu encore! il est possi&le d7utiliser une liste préala&lement placée dans une "aria&le 8 maListe F+!2!3!!/!$9G for i in maListe 8 print i
II.".@. Les instructions break et continue Les mots réser"és brea# et continue sont utilisés pour modifier le cours normal du déroulement d7une &oucle for ou d7une &oucle 5hile'
$+ 1 (%
Il arri"e en effet que dans certaines situations @détectées par un test if ; l7intérieur d7une &oucle! on décide soir de sortir de la &oucle @grOce ; l7instruction brea#! soit de sauter le reste des instructions de la &oucle pour commencer directement l7itération sui"ante de la &oucle @grOce ; l7instruction continue' F&rea6 et continue 8 http811docs'python'org1('31tutorial1controlflo5'html&rea6-and-continue-statements-and-else-clauses-on-loopsG
II.".B n premier cas de collection d&éléments % les listes Qous "enons d7introduire les listes dans l7eme type' #ar e
Le programmeur doit touBours a"oir une idée tr,s précise des limites d7un ta&leau et de la correspondance des indices sans quoi il s7e
)n langage Python! les listes fonctionnent un peu comme les ta&leau< du langage C mais a"ec quelques différences nota&les @qui facilitent grandement la "ie du programmeurH 8
$2 1 (%
comme pour toute autre "aria&le en #ython! on créé une liste sans déclaration préala&le! sans préciser le type des éléments contenus dans la liste' maListe F$!(!%!.!+!2!3!!/G créé 7e<-nihilo7 une liste de / "aleurs enti,res on peut aussi créé une liste "ide au départ 8 maListe FG
ou encore 8 maListe list@ La taille d7une liste n7est pas figée apr,s sa premi,re création' Pn pourra touBours aBouter des éléments' C7est l7interpréteur #ython qui se charge tout seul de la gestion de la mémoire nécessaire pour contenir et gérer la liste' maListe'appendF//G aBoute la "aleur // comme nou"el élément ; la fin de la liste print maListe affiche F$!(!%!.!+!2!3!!/!//G Contrairement au< langages traditionnels comme le C! il est tout ; fait possi&le de placer dans une m>me liste des éléments de type @tr,s différents' #ar eme liste peut contenir non seulement des nom&res entiers et des nom&res flottants mais on peut aussi y aBouter des chaines de caract,res' monutreListe F+(! [&onBour[! [$[! (G Un éléments commun ; C et #ython est la notation D crochets pour adresser des éléments indi"iduels des listes' #ar e
#ar e
+appel % nous a"ons "u au paragraphe précédent II'(' qu7il e
II.".1= Les sousEprogrammes ou 'onctions II.".1=.1 Présentation ,s qu7un programme atteint une certaine taille! il est nécessaire de le découper et de le séparer en plusieurs parties correspondant chacune ; un traitement plus spécifique' Cette découpe fonctionnelle facilite la lecture et la maintenance des programmes et permet de réutiliser certaines portions de traitement sans qu7il soit &esoin de les réécrire plusieurs fois' #ar e
len@ et upper@
la premi,re est une fonction autonome qui admet un argument donné entre parenth,ses' C7est la fonction len@' Pn écrit touBours une fonction en indiquant un Beu de parenth,se qui sym&olise le passage d7argument! m>me pour les fonctions qui n7en prennent aucun @liste d7arguments "ide'
La fonction len@ prend une chaine de caract,re comme argument et elle effectue le calcul du nom&re de caract,res contenus dans cette chaine' 0lle ren"oie ensuite la "aleur calculée dans une "aria&le du programme 8 "aleur retournée
fonction appelée
taille len @myString affectation
argument
L7autre fonction rencontrée dans cet eme Ici la chaine s7 applique la fonction upper@! ce qui a pour effet de ren"oyer dans une "aria&le du programme @ici la "aria&le myUpperString une copie de la chaine oN tous les caract,res ont été con"ertis en maBuscule'
$/ 1 (%
II.".1=."
Fé'inition d&une 'onction
Pn utilise le mot réser"é de' pour créer un sous-programme @appelé aussi fonction et on indique entre parenth,ses les arguments a"ec lesquels ce sous-programme de"ra tra"ailler' Les arguments sont les "aleurs sur lesquelles on "eut effectuer certains traitements'
La forme générale de définition d7une fonction est la sui"ante 8
de' QomeLaZonction @arg$! arg(! % instruction$ instruction ( ''' return "aleur
Le mot réser"é return permet ; la fonction le ren"oie d7une "aleur au programme appelant' L7utilisation est facultati"e car il est possi&le d7écrire des sous-programme réalisant des traitement mais ne retournant pas de "aleur'
0
II.".1=. tilisation d&une 'onction #our in"oquer une fonction depuis un programme appelant @la fonction est alors le programme appelé on écrit son nom sui"i par la liste des "aleurs qui "ont correspondre au< arguments déclarés lors de la définition de la fonction' Les "aleurs sont écrites entre parenth,ses' (9 1 (%
0
II.".1=. +etour sur le passage d&argument D une 'onction Il y a deu< mani,res de passer des arguments ; une fonction 8 par valeur ou par ré'érence' La question qui se pose est la sui"ante 8 les modifications faites sur les arguments ; l7intérieur de la fonction sont ils répercutés ou non ; l7 eme apr,s le retour dans le programme appelant' FLes fonctions dans la doc #ython 8 http811docs'python'org1('31tutorial1controlflo5'htmldefining-functionsG
II.".11 La gestion des erreurs d&e*écution- les e*ceptions +appel %*uand l7interpréteur #ython rencontre une instruction qu7il n7est pas en mesure d7e<écuter @erreur de syntat du programme a"ec affichage d7un message d7erreur' #ar etre con"ertis en un nom&re flottant! nous aurons une e
($ 1 (%
YYY "al float@ra5Rinput@[saisir un flottant 8 [ saisir un flottant 8 +'+'( Trace&ac6 @most recent call last8 Zile [\pyshell$Y[! line $! in \moduleY "al float@ra5Rinput@[saisir un flottant 8 [ ^alue0rror8 in"alid literal for float@8 +'+'(
Pr il y a moyen pour le programmeur de contr4ler les instructions pou"ant générer des e
)*emples% $1 :eprenons l7e
(1 ^oici un autre e
+emarque % Les e
#ython' Il est également possi&le pour le programmeur de déclencher e
Pour en savoir plus % F0rrors and 0
0t pour conna`tre la liste des e
(% 1 (%