Upload
trinhkhuong
View
230
Download
0
Embed Size (px)
Citation preview
Programmation Python
Remy CHOLLET*Cleo BARAS
Lorraine GOEURIOTJerome MARTIN
Mails : [email protected]
IUT Departement Reseaux & Telecommunications, 1ere annee
Version 2016
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 1 / 77
Chapitre 1
Introduction
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 2 / 77
L’informatique en R&T Les modules d’informatique
L’informatique en R&T
Sem. Modules IntituleS1 M1105 Linux utilisateur
M1103 Architecture des equipements informatiquesM1106 Initiation au developpement WebM1207 Programmation 1
S2 M2105 Web dynamiqueM2104 SGBDM2207 Programmation 2M2109 Gestion de projets informatiques
S3 M3206 POOS4 M4206C Programmation sur mobiles
M4207 DSP
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 3 / 77
L’informatique en R&T Planning
M1207 - Programmation 1
ModalitesCours/TD : 1h + 7 × 2hTP : 2h + 6 × 2hEvaluation (semaine 3) : DS papier 1h30 ; DS machine 1h30
Planning des seancesSemaine CM/TD TP45 Introduction, variable, expression46 Bases du langage47 Structures alternatives TD machine : prise en main de l’IDE48 Structures alternatives suite TP1 : Types, test49 Structure repetitive TP2 : Boucles simples50 Structure repetitive suite TP3 : Boucles imbriquees1 Fonctions TP4 : Fonctions2 Fonctions suite TP5 : Fonctions suite3 TP6 : Fonctions avancees
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 4 / 77
Definition L’informatique
Informatique
Definition (Informatique (data processing), algorithme)
L’informatique est la science du traitement automatique (software) del’information (data), dont decoule des programmes qui implementent desalgorithmes a l’aide d’un langage de programmation.
DonneesProgramme(software) Resultats
Ordinateur
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 5 / 77
Definition L’informatique
Algorithme
Definition (Algorithme)
Un algorithme est la mise en œuvre d’une succession finie d’actionselementaires (instructions) pour resoudre un probleme ou obtenir unefonctionnalite.
Exemple (Des algorithmes)
Recette de cuisine, notice de montagePrise d’un medicament contre la toux : ”En cas de toux, prendre, saufavis contraire du medecin, un comprime toutes les 4 heures, jusqu’adisparition des symptomes. Pour les enfants, un comprime toutes les 8heures suffit.”Resolution de ax2 + bx + c = 0 : par dichotomie, solution exacte ...
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 6 / 77
Definition L’informatique
Un exemple d’algorithme
Exemple (Prise d’un medicament contre la toux)
”En cas de toux, prendre, sauf avis contraire du medecin, uncomprime toutes les 4 heures, jusqu’a disparition des symptomes.Pour les enfants, un comprime toutes les 8 heures suffit.”
SI toux ET PAS d’avis contraire du medecinALORS| SI enfant ALORS| | delai d’attente VAUT 8 heures| SINON| | delai d’attente VAUT 4 heures| FIN DE SI| TANT QUE PAS disparition des symptomesFAIRE| | prendre un comprime| | attendre pendant le delai d’attente| FIN DE TANT QUEFIN DE SI
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 7 / 77
Definition Les langages de programmation
Langage de programmation
Definition (Langage de programmation)
C’est un ensemble de caracteres, symboles, mots-cles et reglesd’assemblage (equivalents au vocabulaire et a la grammaire d’une langue),utilise pour donner des instructions a l’ordinateur.
Evolution des langages1 Langage machine de plus bas niveau2 Langage assembleur (mnemonique, macros, variables)3 Langage structure :
paradigmes de programmation : procedural, oriente objet, fonctionnel...compile : C, C#, C++, ObjectiveC, Pascal, Javainterprete : Tcl/Tk, Perl, Python, Ruby, JavaScript, Matlab
4 Langage naturel SQL, Windev, 4D (BDD)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 8 / 77
Definition Les langages de programmation
Language compile vs interprete
2 approches1 Compilation : traduction d’un code source vers un code cible executable
code executable directement par l’OSBytecode executable par machine virtuelle (cf. Java au S3)
2 Interpretation : langage converti en bytecode au fur et a mesure del’execution
lire et analyser une instruction (ou une expression)si l’instruction est syntaxiquement correcte, l’executer (ou evaluerl’expression)passer a l’instruction suivante
Pour Python889
tout le code source est verifie syntaxiquementun bytecode est produit automatiquement pour execution dansl’interpreteur Python (via une machine virtuelle)est vu comme un langage interprete
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 9 / 77
Definition Les langages de programmation
Python : pourqui, pourquoi
Python?
Cree par Guido van Rossum en 19901er objectif : un nouveau shellusages industrialises, forte progression ces dernieres anneesOpen source, large communaute, bonne portabiliteplutot haut niveau, plutot pragmatiqueCaracteristiques :
l’indentation comme syntaxetout est objetbibliotheques tres diverses (systeme, calcul, imagerie, SGBD, Web etc...)
Pourquoi Python?
Bon langage pour la pedagogieTres bon langage pour l’administrationAspects modernes (iterateurs, comprehension, introspection...)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 10 / 77
Definition Les langages de programmation
Bonnes pratiques
Qualites d’un logiciel
FiabiliteRobustesseLisibilite du code
PortabiliteMaintenabilitePerformance
Concretement :Nommage pertinentStructurer sous forme de ”boites noires” : modules et les fonctions etaussi classesDocumenter l’interface des boıtes noires, commenterTests unitairesLimiter les dependances, chercher la simplicite et la clarte
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 11 / 77
Chapitre 2
Variables et expression
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 12 / 77
Variables Qu’est ce qu’une variable?
Variables
Definition (Variable)
Une variable designe un espace memoire dont on peut modifier le contenuavec un acces simple et lisible. Elle :
1 est designee par un identificateur (ou nom)2 memorise une valeur, evoluant avec le flot d’instructions mais unique a
un instant donne3 presente un type, precisant la nature de la valeur qu’elle memorise
� Demo
Remarque : Une variable possede egalement :une duree de vie, qui debute a la declaration de la variable et s’achevelorsque l’espace memoire occupe par la variable est libereune portee, zone du programme dans laquelle la variable est accessible
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 13 / 77
Variables Qu’est ce qu’une variable?
Complements sur les variables889
Choix de l’identificateurL’identificateur est un nom :Í utilisant des lettres (sensibles a la casse), des chiffres ou _ë interdisant les caracteres accentues et speciaux (comme $, #, etc) ; les
mots-cles de Python ; les noms commencant par un nombre.
Mots-cles Python interdits :
and del from not whileas elif global or with
assert else if pass yieldbreak except import printclass exec in raisecontinue finally is returndef for lambda try
L’usage (nommage lowerCamelCase) veut que les noms de variablessoient en minuscule et n’utilisent une majuscule que pour la 1ere lettrede chaque mot, comme dans tableDesMatieres.
Allocation memoire
Python offre un systeme de gestion automatique de la memoire, disposantd’un ramasse-miette (garbage collector ) qui efface automatiquement toutesles donnees non referencees par des variables.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 14 / 77
Variables Type d’une variable
Type d’une variable
Definition (Type d’une variable)
Le type est la nature de la valeur memorisee par la variable. Il est defini a lacreation de la variable et est dynamique, c’est a dire determine lors del’execution du programme a.
a. contrairement a d’autres languages comme Java ou le type est statique c’est a diredeclare dans le code par le programmeur
Quelques types (simples) de variables en Python
Nom Type Exemple Remarquebooleen bool (boolean) False ; Trueentier int (integer) -2 ; 10 exprime en base 10 (par defaut),
-0b10 ; 0b1010 en binaire avec prefixe 0b,-0x2 ; 0xA en hexa avec prefixe 0x (ou 0X),-0o2 ; 0o12 en octal avec prefixe 0o (ou 0O)
flottant float 1.34 ; -0.6 avec le separateur .chaıne de caracteres str (string) "Spam" en la delimitant par ’ ou " ou """
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 15 / 77
Variables Type d’une variable
Type d’une variable
Fonctions autour du type
I Connaıtre le type d’une variable x : type(x)I Verifier si une variable x est du type t : isinstance(x, t)
Types numeriques (attention aux problemes de precision !)888
Entiers (signe) : int de precision limitee (entre ≈ [-sys.maxint,sys.maxint]), long de precision illimitee au delaDecimaux : float de precision limitee (entre [sys.float_info.minsys.float_info.max])Complexe : complex base sur les float. Par exemple : c=1+3j avecc.real la partie reelle flottante et c.imag la partie imaginaire
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 16 / 77
Variables Affectation d’une variable
Declaration et affectation d’une variable
Definition (Declaration/affectation)
En Python, une valeur est declaree et affectee en meme temps a :la declaration consiste a choisir l’identificateur de la variablel’affectation lui associe une valeur, dont le type determine celui de lavaleur. Elle utilise le symbole = et se fait dans le sens droite vers gauche.
a. on parle de declaration implicite, contrairement a Java qui impose de declarer unevariable et son type avant de lui donner une valeur
Attention au sens d’une affectation
Í x = 3 affecte a la variable x la valeur 3.ë Ecrire 3 = x n’a pas de sens !
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 17 / 77
Variables Affectation d’une variable
Exemples de declaration et affectation
Exemple (Des affectations)
I x = 2 declare la variable x, lui donne la valeur entiere 2 et lui confere letype int
I y = 3.14 declare la variable y, lui donne la valeur flottante 3.14 et luiconfere le type float
I chaine = "Eggs" declare la variable chaine, lui donne pour valeur lachaine de caracteres "Eggs" et lui confere le type str
I chaine = "3.14" re-declare la variable chaine, lui donne cette fois pourvaleur la chaine de caracteres "3.14" et le type str
Remarque : Python a un typage fort mais :les types numeriques peuvent etre melanges dans les expressions
888 lorsqu’on travaille sur les booleens, toute valeur (ou objet) egale a0 (ou vide ou None) est consideree comme False ; tout le reste est vuecomme True.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 18 / 77
Variables Conversion de type
Transtypage (casting)
Fonctions de conversion de type
Les fonctions suivantes convertissent (si cela est possible) la valeur passeeen parametre dans le type du meme nom :
Fonction Traitementint(valeur) troncature de la valeur a l’entier le plus proche de zerofloat(valeur) conversion de la valeur en flottantstr(valeur) conversion de la valeur numerique en chainebool(valeur) False si valeur vaut 0 ou True
Exemple (Conversion de type)
a = int(3.0) ou a = int("3") sont equivalents a a = 3 avec a detype int
chaine = str(3.2) est equivalent a chaine="3.2" de type str
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 19 / 77
Variables Conversion de type
Conversion de type
Remarque888 : Les fonctions de transtypage servent aussi a obtenir desvaleurs par defaut :
i=int() donne i=0
f=float() donne f=0.0
s=str() donne s=""
b=bool() donne b=False
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 20 / 77
Expression Definitions
Expression
Definition (Expression, operateurs)
Une expression est une suite de symboles qui sera interpretee commeun calcul ayant pour resultat une valeur d’un certain type.Elle utilise des operateurs (+, *, ...) et des operandes (valeurs,variables, expressions).La valeur de l’expression, si elle doit etre reutilisee dans la suite duprogramme, devra etre stockee dans (affectee a) une variable.
Exemple (Des expressions)
recuperation de la valeur de la variable x : xexpression arithmetique : 4/3 ou (x+2)%5
expression booleenne : x==5 (x est-il egal a 5?)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 21 / 77
Expression Operateurs
Operateurs
Principaux operateurs des expressions
Symb. Signification Symb. Signification+ addition pour int, float ;
concatenation pour str* multiplication pour int, float ;
repetition pour str- soustraction pour int, float / division euclidienne pour int
; division decimale pour float(propre a Python 2 pas vrai en3)
% modulo (ou reste de la divisionentiere) pour int
** exposant, par exemple 3**2
vaut 9or union logique pour les boolean and intersection logique pour les
boolean
not negation logique pour lesboolean
// 888 division euclidiennequels que soient les operandes
� Demo
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 22 / 77
Expression Priorite des operateurs
Priorite des operateurs dans les expressions
Priorite des operateurs, par ordre croissant, avec groupement de gauche adroite si priorites egales
Priorite Operateur DescriptionBasse or ou logique
and et logiquenot non logique<, <=, >, >=, <>, !=, == comparaison| ou bit a bitˆ et bit a bit& et bit a bit<<, >> decalage bit a bit+, - addition et soustraction*, /, //, % Multiplication, division, reste+x, -x, ˜x signe positif, signe negatif, non bit a bit** exposant
Haute (expression) expression delimitee par des parentheses
Remarque : en cas de doute 1, utilisez des parentheses
1. Liste detaillee sur https://docs.python.org/2/reference/expressions.html#operator-precedence
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 23 / 77
Instructions
Instructions
Definition (Instructions)
Une instruction est un ordre a executer par le programme; c’est une etapequi dicte a la machine ce qu’elle doit effectuer avant de passer a l’instructionsuivante. Par exemple :
affecter une valeur a une variableafficher une information a l’ecranrecuperer une saisie clavier faite par l’utilisateur
Executer une instruction implique d’evaluer des expressions.
Definition (Programme)
Un programme est une suite d’instructions, qui s’executent les unes apres lesautres - autrement dit sequentiellement.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 24 / 77
Instructions Instructions d’affectation
Instructions d’affectation
Exemple (Des instructions d’affectation)
1 toto = 32 titi = toto + 13 titi += toto
Variables
toto
titi
Valeurs/donnees
31
4
7
%
Ligne 1 : declare la variable toto et lui affecte la valeur 3Ligne 2 : incrementation : evalue l’expression toto + 1 et affecte leresultat (ici 4) a la variable (declaree par la meme occasion) titiLigne 3 : affectation composee : est equivalente atiti = titi + toto. Evalue l’expression titi + toto et modifie lavaleur de titi en lui affectant le resultat (ici 4+3, soit 7)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 25 / 77
Instructions Instructions d’entrees/Sorties
Instruction de sorties : ecriture sur l’ecran
Ecriture vers l’ecran
L’instruction qui demande au programme l’affichage (l’ecriture) de donnees dedifferentes natures sur la console (l’ecran) est :print expression[, expression]
Exemple (Affichage de chaınes de caracteres dans un interpreteur python)
>>>msg1 = "Bonjour">>>msg2 = "Au revoir">>>print msg1Bonjour>>>print msg2Au revoir>>>print msg1, msg2Bonjour Au revoir>>>print msg1 + msg2BonjourAu revoir
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 26 / 77
Instructions Instructions d’entrees/Sorties
Instruction de sorties : ecriture sur l’ecran
Exemple (Affichage de valeurs de variables)
>>>EUR = 1>>>CAD = 1.4>>>print EUR, "euro vaut", CAD, "dollar canadien"1 euro vaut 1.4 dollar canadien
Pour faire une impression sans retour a la ligne on termine l’instruction parla virgule (sans effets en mode interactif)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 27 / 77
Instructions Instructions d’entrees/Sorties
Formatage de chaıne
Formatage de chaıne et specification de conversion
Le formatage permet de creer des chaınes de caracteres incorporant desdonnees (de divers types) avec la syntaxe :
"ceci est une chaine formatee %format" % valeur|variable
La valeur (ou variable) placee apres l’operateur de conversion % sera insereedans la chaıne a l’emplacement balise par le specificateur de conversion.
Specif. Format Specif. Format%d Entier %nd Entier sur n caracteres
min%0nd Entier sur n caracteres min et des 0 non significatifs%f Flottant avec 6 decimales %.mf Flottant avec m decimales%nf Flottant dans un champ
de n caracteres (’.’ in-clus)
%n.mf Flottant dans un champde n caracteres avec mdecimales
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 28 / 77
Instructions Instructions d’entrees/Sorties
Exemples
Exemple (Fomatage d’une chaıne avec un entier)
>>>val = 10>>>"%d" % val’10’>>>print "La valeur est : %d" % valLa valeur est : 10>>>"%04d" % (val+5)’0015’
Exemple (Formatage d’une chaıne avec un flottant)
>>>"%f" % 1.’1.000000’>>>"%.3f" % 123.’123.000’>>>print "La valeur est : %010.3f" % 123.567La valeur est : 000123.567
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 29 / 77
Instructions Instructions d’entrees/Sorties
Exemples889
Exemple (Affichage de chaınes plus complexes)
>>> choux = 2>>> carottes = 6>>> print "%d choux" % choux , "et %d carottes" % carottes2 choux et 6 carottes>>> print "%d choux" % choux + " et %d carottes" % carottes2 choux et 6 carottes>>> print "%d choux et %d carottes" % (choux, carottes)2 choux et 6 carottes
>>> TC = 23.5 # temperature en degres Celcius>>> print "%5.1f C" % TC +" vaut %5.1f F" % (TC*9./5+32)23.5 C vaut 74.3 F>>> print "%5.1f C vaut %5.1f F" % (TC, TC*9./5+32)23.5 C vaut 74.3 F
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 30 / 77
Instructions Instructions d’entrees/Sorties
Autres formatages de chaıne
Autres specifications de conversion888
Specif. Format Specif. Format%b Entier en binaire (Python
> 3.0)%o Entier en Octal
%x Entier en Hexadecimal %X Entier en Hexadecimalavec lettres capitales
%s Une chaıne (a incluredans une chaıne)
%ns Une chaıne sur n ca-racteres minimum
Exemple (Quelques exemples)
>>>"Un octal : %o, " % 10 + "Un hexa : %X" % 0o12’Un octal : 12, Un hexa : A’>>> chaine = "toto">>> "%s" % chaine # Renvoie une chaine de caractere’toto’>>> "%6s" % chaine # Renvoie une chaine de caractere’ toto’
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 31 / 77
Instructions Instructions d’entrees/Sorties
Instructions d’entree : lecture a partir du clavier I
Lecture de caracteres saisis au clavierL’instruction chaine = raw_input("tapez une chaine") :
1 affiche a l’ecran le message tapez une chaine
2 capture les caracteres saisis au clavier jusqu’a l’appui sur Enter
3 les renvoient dans la variable chaine
Le type de chaine est obligatoirement str.
Exemple (Saisie d’une chaine de caracteres)
>>>var = raw_input("Saisir une chaine : ")Saisir une chaine : toto>>>print var, type(var)’toto’ <type ’str’>
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 32 / 77
Instructions Instructions d’entrees/Sorties
Instructions d’entree : lecture a partir du clavier II
Lecture des nombres saisis au clavierL’instruction nbre = input("Tapez un nombre") :
1 affiche a l’ecran le message Tapez un nombre
2 capture le nombre saisi au clavier jusqu’a l’appui sur Enter
3 le renvoie dans la variable nbre
Le type de nbre est adapte automatiquement par Python a la valeur saisie.
Exemple (Saisies de nombres)
Un entier :
>>>nbre= input("Une valeur: ")Une valeur: 12>>>print nbre, type(nbre)12 <type ’int’>
Un flottant :
>>>var= input("Une autre: ")Une autre: -3.5>>>print var, type(var)-3.5 <type ’float’>
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 33 / 77
Instructions Instructions d’entrees/Sorties
Instructions d’entree : lecture a partir du clavier III
Remarque888 : l’instruction raw_input peut etre utilisee pour saisir desnombres en lui associant un transtyptage (int(), float(), ...) qui convertitles caracteres renvoyes par raw_input dans le type attendu :
Pour la saisie d’un entier, input( "Saisir un entier") est equivalenta int(raw_input( "Saisir un entier"))
Pour la saisie d’un float, input( "Saisir un flottant") est equivalenta float(raw_input( "Saisir un flottant"))
Pour une saisie quelconque, input( "Saisir une donnee") estequivalent a eval(raw_input( "Saisir une donnee"))
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 34 / 77
Chapitre 3
Structures alternatives
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 35 / 77
Structure conditionnelle elementaire : Si Principe et syntaxe
Conditionnelle Si
Structure conditionnelle ”Si”
1 if condition_booleenne :2 instruction3 ...4 instruction5 suite_du_programme
s’execute uniquement si la conditionest vraie puis continue
ne s’execute pas sila condition est fausseet poursuit directementavec la suite
teste la condition_booleenne en evaluant si elle est True ou False.Si elle est True alors le bloc d’instructions qui suit est execute ;Sinon le bloc d’instructions n’est pas execute.
Dans tous les cas, le programme se poursuit avec suite_du_programme.
Bloc d’instruction
C’est l’indentation (tabulation avec la touche −−→−−→ ) qui definit les blocsd’instructions en Python
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 36 / 77
Structure conditionnelle elementaire : Si Exemple
Exemple
Exemple (Si)
Le programme :
1 var = input("Saisir une valeur : ")2 if var < 0 :3 var = -var4 print "Sa valeur absolue est", var5 print "fin"
donne a l’execution :Cas 1 :
1 Saisir une variable : 52 Sa valeur absolue est 53 fin
Cas 2 :
1 Saisir une variable : -22 Sa valeur absolue est 23 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 37 / 77
Structure alternative elementaire : Si sinon Principe et syntaxe
Alternative ”Si ... sinon”
Structure alternative ”Si ... sinon”
1 if condition_booleenne :2 instruction3 instruction4 else :5 instruction6 instruction7 suite_du_programme
a executer uniquement sila condition est True
a executer uniquement sila condition est False
teste la condition_booleenne en evaluant si elle est True ou False.Si elle est True alors le bloc d’instructions qui suit est execute ;Sinon le bloc d’instruction n’est pas execute.Le programme continue ensuite son deroulement.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 38 / 77
Structure alternative elementaire : Si sinon Exemple
Alternative Si ... sinon
Exemple (Si alors)
Le programme :
1 var = input("Saisir une variable : ")2 if var > 4 :3 print "oui : ", var, " est superieur a 4"4 else :5 print "non : ", var, " est inferieur ou egal a 4"6 print "fin"
donne a l’execution :Cas 1 :
1 Saisir une variable : 52 oui : 5 est superieur a 43 fin
Cas 2 :
1 Saisir une variable : 32 non : 3 est inferieur ou
egal a 43 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 39 / 77
Conditions booleennes Definition
Conditions booleennes
Condition booleenne
Cette condition designe une expression ayant pour valeur True ou False.
Elles mettent en jeu :1 des operateurs de comparaison qui comparent deux donnees du
meme type (int, float, string) et renvoie un booleen2 des operateurs booleens entre conditions booleennes, souvent resultat
d’une comparaison entre deux valeurs
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 40 / 77
Conditions booleennes Operateurs de comparaison
Operateurs de comparaison
Operateurs de comparaison
Op. Signification Op. Signification== egal (en terme de
contenu)!= different
> strictement superieur < strictement inferieur>= superieur ou egal <= inferieur ou egalX<Y<Z Y est compris entre X et Z is egal (meme objet)
Exemple (Des conditions booleennes)
La variable spam est-elle egale a 0? s’ecrit spam == 0. Lorsque spam
vaut 0, la condition renvoie True ; lorsque spam veut 3, elle renvoie False
La variable spam est-elle differente de "eggs" s’ecrit spam \= ”eggs”.La variable spam est-elle comprise entre -1 et 2.3? s’ecrit-1 < spam < 2.3
La moyenne des notes m1 et m2 est-elle superieure a 10? s’ecrit(m1+m2)/2 > 10
La note m1 est-elle divisible par 3 ? s’ecrit m1%3 == 0
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 41 / 77
Conditions booleennes Operateurs booleens
Operateurs booleens
Operateurs booleens
Op. Signification Op. Signification Op. Significationand et logique or ou logique not negation
Rappel : Table de verite des operateursand True False
True True False
False False False
or True False
True True True
False True False
not True False
False True
Remarque : Attention aux priorites ! Dans le doute, abuser des parenthesesqui ameliorent souvent la lisibilite !
Exemple (Des resultats de tests booleens)
True and False est egal a False
True or False est egal a True
(True and True)or False est egal a True
True and not(False) est egal a True
Exemple (Des conditions booleennes)
La variable jour est-elle egale a ”lundi” et la variable annee est-ellesuperieure a 2000? s’ecrit (jour == "lundi")and (annee > 2000)
Le jour est-il dans le WE? s’ecrit(jour == "samedi")or (jour == "dimanche")
La variable spam est-elle differente de 0? peut s’ecrire spam != 0 maisaussi (spam > 0)or (spam < 0)
La variable spam est-elle comprise entre 0.5 inclu et 1.5? peut s’ecrire(spam >= 0.5)and (spam < 1.5) ou de maniere equivalente0.5 <= spam < 1.5 ou encore 1.5 > spam >= 0.5
Remarque : L’evaluation de la condition booleenne s’arrete des que leresultat est sur : par exemple, dans l’expression X and Y, si X est evalue aFalse, alors l’expression est False et Y n’est pas evalue. Sinon, l’expressionest evaluee a la valeur booleenne de Y.
Exemple (Application)
Faire l’exercice 4 du TD sur les annees bissextiles
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 42 / 77
Structure alternative multiple : si ... ou si ... sinon Principe et syntaxe
Alternative Si ... ou si ... sinon
Structure alternative Si ... ou si ... sinon
1 if condition_booleenne_1 :2 instruction3 instruction4 elif condition_booleenne_2 :5 instruction6 instruction7 else :8 instruction9 instruction
10 suite_du_programme
s’execute si la condition 1 est True
s’execute si la condition 1 est Falseet la condition 2 est True
s’execute si les conditions 1 et 2sont False
Remarques :Le bloc elif peut apparaıtre autant de fois que l’on souhaite tester deconditions alternativesLe bloc else est optionnel
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 43 / 77
Structure alternative multiple : si ... ou si ... sinon Exemple
Alternative Si ... ou si ... sinon
Exemple
1 nombre = input("Entrez un nombre : ")2 if nombre<0 :3 print nombre, ’est negatif’4 elif nombre > 0 :5 print nombre, ’est positif’6 elif nombre == 0 :7 print nombre, ’est nul’8 else :9 print nombre, "n’est pas un nombre"
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 44 / 77
Structure alternative multiple : si ... ou si ... sinon Bilan
Une meme programme, differentes structuresalternatives
Exemple (Algo)
Une UE contient 2 modules : M1 et M2.L’UE est valide si les notes aux deux modules sont superieures a 10Il y a rattrapage si un seul des modules a une note superieure a 10Si les deux notes sont inferieures a 10, l’UE n’est pas validee
Ici, les variables m1 et m2 representent la note obtenue a chaque module
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 45 / 77
Structure alternative multiple : si ... ou si ... sinon Bilan
Une meme programme, differentes structuresalternativesLes trois implementations suivantes sont equivalentes :
1 Avec 2 structuressi sinonimbriquees :
1 if (m1>=10 and2 m2>=10) :3 print "valide"4 else :5 if (m1>=10 or m2
>=10) :6 print "
rattrapage"7 else : # (m1<10
and m2<10)8 print "refuse"
2 Avec une structuresi ou si sinon :
1 if (m1>=10 and m2>=10) :
2 print "valide"3 elif (m1>=10 or m2
>=10) :4 print "rattrapage
"5 else : # donc (m1
<10 and m2<10)6 print "refuse"
3 Avec desconditionssimples :
1 if (m1>=10) :2 if (m2>=10) :3 print "valide"4 else :5 print "
rattrapage"6 else : # donc m1<107 if (m2>=10) :8 print "
rattrapage"9 else :
10 print "refuse"CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 46 / 77
Chapitre 4
Structures repetitives
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 47 / 77
Principes des structures repetitives
Structure repetitive
Definition (Structure repetitive)
Une structure repetitive est un bloc d’instructions parcouru un certainnombre de fois (de 0 a une infinite).
Boucle while
Les boucles while/tant que repetent une serie d’instructions tant qu’unecondition est verifiee ; la condition est une expression booleenne quis’ecrit de la meme facon que dans les structures alternatives.
Boucle for
En pratique, le nombre de repetitions est tres souvent connu par leprogrammeur (parcours des elements d’une liste, repetition d’une memeaction, ...) ; on leur prefere une syntaxe plus simple appelee boucle for.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 48 / 77
Boucle for Le compteur d’iteration
Boucle for
Definition (Boucle for)
Pour repeter un bloc d’instructions N fois, une boucle for utilise uncompteur d’iteration :
for compteur in range( N ) :instruction # Debut du bloc a repeter...instruction # Fin du bloc
suite_du_programme
Une iteration est une execution (ou une repetition) du bloc d’instructionsLe compteur s’initialise a 0 ; apres chaque iteration, il augmente de 1.Lorsqu’il atteint N, le bloc d’instructions a ete execute N fois - il n’est plusexecute et le programme passe aux instructions qui suivent le bloc
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 49 / 77
Boucle for Repetition
Une repetition simple
Exemple (Boucle iterant le meme affichage 3 fois)
Le programme suivant :
1 for i in range(3) :2 print "*",3 print "fin"
itere 3 fois l’affichage de * etdonne :
* * * fin
� Demo
Ligne i Affichage Commentaire1 0 Initialisation du compteur a 02 0 * Fin de la 1ere iter. de boucle1 1 *2 1 * * Fin de la 2eme iter. de boucle1 2 * *2 2 * * * Fin de la 3eme iter. de boucle1 3 * * * Le compteur atteint le nbre d’iter. voulu3 3 * * * fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 50 / 77
Boucle for Repetition en utiisant le compteur de boucle
Une repetition utilisant le compteur de boucle
Le compteur de boucle, une variable comme une autre ...
Le compteur peut etre utilise dans les instructions de la boucle pour fairevarier leurs resultats d’une iteration a une autre
Exemple (Affichage des nombres de 2 jusqu’a 6 (exclu))
1 for i in range( 4 ) :2 print i+2, # affichage3 print "fin"
donne � Demo :
2 3 4 5 fin
Ligne i i+2 Affichage Commentaire1 0 Initialisation du compteur a 02 0 2 2 Fin de la 1ere iter. de boucle1 1 2
2 1 3 2 3 Fin de la 2eme iter. de boucle1 2 2 3
2 2 4 2 3 4 Fin de la 3eme iter. de boucle1 3 2 3
2 3 5 2 3 4 5 Fin de la 4eme iter. de boucle1 4 2 3 4 5 Le compteur a atteint le nbre d’iter. voulu3 4 2 3 4 5 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 51 / 77
Boucle for Repetition en utiisant le compteur de boucle
Une repetition modifiant le compteur de boucle
ë Attention : le compteur de boucle ne doit en general pas etre modifie parles instructions de la boucle
Les valeurs du compteur sont pre-calculees au 1ere passage dans la bouclepour aller de 0 a N. Quelque soient les modifications faites sur le compteurdans le bloc d’instruction, chaque nouvelle iteration donne au compteur laprochaine valeur pre-calculee.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 52 / 77
Boucle for Repetition en utiisant le compteur de boucle
Exemple
Exemple (Une boucle a ne pas faire)
Le programme :
1 for i in range( 2 ) :2 print i, # affichage3 i = 0 # raz du compteur4 print "fin"
donne� Demo :
0 1 fin
Ligne i Affichage1 0 Initialisation du compteur a 02 0 0
3 0 0 Fin de la 1ere iter. de boucle1 1 0
2 1 0 1
3 0 0 1 Fin de la 2eme iter. de boucle1 2 0 1 Le compteur atteint le nbre d’iter. voulu3 3 0 1 2 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 53 / 77
Boucle for Valeur initiale du compteur
Boucle for avec valeur initiale differente de 0
Definition (Boucle for avec valeur initiale non nulle)
1 for compteur in range(val_ini, val_fin_exclue) :2 instructions
Le nombre d’iterations est alors de val_fin_exclue - val_ini ; la boucles’arrete lorsque le compteur atteint la valeur val_fin_exclue.
Exemple (Affichage des nombres de 2 jusqu’a 5 (exclu))
1 for i in range(2, 5) :2 print i, # affichage3 print "fin"
donne � Demo :
2 3 4 fin
Ligne i Affichage Commentaire1 2 Initialisation du compteur a 22 2 2 Fin de la 1ere iter. de boucle1 3 2
2 3 2 3 Fin de la 2eme iter. de boucle1 4 2 3
2 4 2 3 4 Fin de la 3eme iter. de boucle1 5 2 3 4 Le compteur a atteint sa valeur finale3 5 2 3 4 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 54 / 77
Boucle for Increment du compteur
Boucle for avec increment different de 1
Definition (Boucle for avec un increment du compteur different de 1)
1 for compteur in range(val_ini, val_fin_exclue, increment) :2 instructions
initialise le compteur a la val_ini et a chaque iteration augmente la valeur ducompteur de increment jusqu’a ce qu’il egale ou depasse val_fin_exclue
Exemple (Affichage des nombres pairs de 2 jusqu’a 8 (exclu))
article
1 for i in range(2, 8, 2) :2 print i, # affichage3 print "fin"
donne � Demo :
2 4 6 fin
Ligne i Affichage Commentaire1 2 Initialisation du compteur a 22 2 2 Fin de la 1ere iter. de boucle1 4 2
2 4 2 4 Fin de la 2eme iter. de boucle1 6 2 4
2 6 2 4 6 Fin de la 3eme iter. de boucle1 8 2 4 6 Le compteur atteint sa valeur max.3 8 2 4 6 fin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 55 / 77
Boucle while La condition de boucle
Boucle while
Definition (Boucle while)
Une boucle while repete un bloc d’instructions tant qu’une conditionbooleenne est verifiee :
1 initialisation_condition2 while condition [== True] :3 instruction4 ...5 modification_condition6 suite_du_programme
Y 3 etapes fondamentales :1 Initialisation de la condition2 Test de la condition a chaque
iteration de la boucle3 Modification du contexte (de la
condition) a chaque iteration
Des que la condition n’est plus vraie, le programme se poursuit avecles instructions qui suivent le bloc repetitif
Ces boucles sont particulierement utiles lorsque le nombre d’iterations n’estpas connu a l’avance comme par exemple lorsqu’elles dependent d’une actionde l’utilisateur ou du resultat d’un calcul fait par les instructions de boucle.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 56 / 77
Boucle while Repetition dependant d’une saisie utilisateur
Verification d’une saisie clavier
Exemple (Verification d’une saisie clavier)
Les programmes suivants imposent a un utilisateur une saisie clavier valant’O’ ou ’N’ a.Ils utilisent pour condition de boucle la variable rep, donnant le resultat de lasaisie utilisateur, comparee aux valeurs attendues.Deux types d’initialisation peuvent etre envisagees :
1 rep = input("Tapez O/N ") qui realise une premiere saisie avant test2 rep = "" qui affecte une valeur garantissant l’entree dans la boucle.
a. Rappel : Python est sensible a la casse ; ’O’ n’est donc pas le meme caractereque ’o’
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 57 / 77
Boucle while Repetition dependant d’une saisie utilisateur
Verification d’une saisie clavierVariante 1 :
1 rep = input("Tapez O/N ") # Initialisation2 while not( rep == "O" or rep == "N" ) : # Condition de boucle3 rep = input("Non, tapez O/N ") # Modif. de la variable4 print "fin"
Variante 2 :
1 rep = "" # Autre initialisation2 while not( rep == "O" or rep == "N" ) : # Meme condition3 rep = input("Tapez O/N ? ") # Modif. de la variable4 print "fin"
donnent a l’execution pour les meme saisies de l’utilisateur :pour la variante 1 (2 passagesdans la boucle) :
Tapez O/N iNon, tapez O/N pNon, tapez O/N ? Ofin
pour la variante 2 (3 passagesdans la boucle) :
Tapez O/N iTapez O/N pTapez O/N ? Ofin
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 58 / 77
Equivalence boucles for/while
Equivalence for/while
L’art du compteur d’iteration
Lorsque le nombre d’iterations est connu et qu’on peut le denombrer avec uncompteur d’iteration allant d’une valeur ini a une valeur fin ens’incrementant a chaque iteration de inc, les structures repetitives peuventfinalement s’ecrire indifferemment avec une boucle for ou une boucle while :
1 for compteur in range(ini,fin, inc) :
2 instruction3 ...4 suite_du_programme
1 compteur = ini2 while compteur < fin :3 instruction4 ...5 compteur += inc6 suite_du_programme
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 59 / 77
Equivalence boucles for/while
Nombres impairs avec for et while
Exemple (Boucle d’affichage des nombres impairs de 0 a 20)
Avec une boucle for :
1 for i in range(1, 20, 2) :2 print i,3 print "fin"
Avec une boucle while :
1 i=12 while i < 20 :3 if i % 2 != 0:4 print i,5 i = i+16 print "fin"
Ils donnent tous les deux a l’execution :
1 3 5 7 9 11 13 15 17 19 fin
avec 10 iterations pour la boucle for et 20 iterations pour la boucle while
Y Les instructions d’une boucle peuvent contenir des structures alternatives,voire d’autres boucles...
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 60 / 77
Boucle avec variable d’accumulation Principes
La variable d’accumulation
Principe de la variable d’accumulation
Les boucles s’utilisent couramment avec une variable d’accumulation,dont la valeur s’actualise a chaque iteration dans le bloc d’instruction dela boucle.L’actualisation peut etre : l’ajout a la variable d’une valeur, la multiplicationde la variable par une valeur, ...Le choix du type de boucle (for ou while) depend de l’application viseetoujours dans l’idee qu’elle conduit (ou non) a un nombre d’iterationsconnu
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 61 / 77
Boucle avec variable d’accumulation Principes
Exemple 1 : une variable d’accumulation additive
Exemple (Solde d’un compte bancaire apres un nombre fixe de mois)
Application : afficher le solde d’un compte bancaire initialement egal a 0,sur lequel est verse un montant fixe de 50 euros tous les mois, apres 4ans de fonctionnement.Variable d’accumulation : le soldeBoucle : for car le nombre de mois (ici 4*12) est connu
1 solde = 0 # Initialisation2 for mois in range(1, 4*12) :3 solde = solde + 504 print "solde final :", solde
donne a l’execution � Demo :
solde final : 2350
Y Il n’y a pas trace des valeurs intermediaires du solde (cf. listes en Prog2)
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 62 / 77
Boucle avec variable d’accumulation Principes
Exemple 2 : une variable d’accumulation additive
Exemple (Quand pourrais-je avoir un iPhone?)
Application : partant d’un livret de 50 euros, sur lequel est vire 200 euroschaque annee et avec 0.75% d’interet, combien d’annee faut-il a sontitulaire pour acheter un iPhone?Variable d’accumulation : le solde avec ajout des interets et du versementa chaque iterationLa boucle : while avec un compteur d’annees
1 solde = 502 annee = 03 while (solde < 700) :4 solde = solde*(1 + 0.75/100) +
2005 annee = annee + 16 print "Nbre d’annees :", annee7 print "Solde :", solde
donne a l’execution � Demo :
Nbre d’annees :4Solde : 860.5620439082031
Le nombre d’annees estd’ailleurs le nombre d’iterationsde la boucle while.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 63 / 77
Boucle avec variable d’accumulation Principes
Exemple 3 : avec variable d’accumulation additive
Exemple (Calcul de la somme de tous les entiers de 1 jusqu’a 1000 (inclus))
1 somme = 0 # Initialisation2 for i in range(1, 1000+1) :3 somme = somme + i4 print "somme finale :", somme
donne :
somme finale : 500500
Conclusion : structure des programmes avec une variable d’accumulation
Un programme utilisant une variable d’accumulation doit toujours :1 initialiser la variable d’accumulation,2 programmer une structure repetitive qui actualise la valeur de la variable
d’accumulation.La valeur finale de la variable est obtenue en sortie de boucle.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 64 / 77
Boucle avec variable d’accumulation Principes
Exemple avec variable d’accumulation multiplicative
Exemple (Calcul iteratif d’une puissance)
Le programme suivant calcule24 dans res en utilisant le faitque 24 = 2× 2× 2× 2 ; resetant modifiee paraccumulation de multiplication,sa valeur initiale sera donc 1.
1 res = 12 i = 13 while i <= 4 :4 res = res * 25 i = i + 16 print "2ˆ4 vaut", res
� Demo
Ligne i i<=4? res calcul commentaire1-2 1 13 1 True 1 1er iteration
4-5 2 True 2 1*23 2 True 2 1*2 2eme iteration
4-5 3 True 4 1*2*23 3 True 4 1*2*2 3eme iteration
4-5 4 True 8 1*2*2*23 4 True 8 1*2*2*2 4eme iteration
4-5 5 True 16 1*2*2*2*23 5 False 16 1*2*2*2*26 5 False 16 1*2*2*2*2
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 65 / 77
Boucle avec variable d’accumulation Boucles imbriquees
Boucles imbriquees
Exemple (Trace d’un triangle d’etoiles)
1 for i in range(2, 4) :2 for j in range(1, i) :3 print "*",4 print
donne :
** *
� Demo
Ligne i j Aff. Commentaire1 2 i initialise a 22 2 1 j initialise a 13 2 1 * Fin de la 1ere iter. de la boucle sur j2 2 2 * j atteint sa valeur max.4 2 2 \n Fin de la 1ere iter. de la boucle sur i1 3 22 3 1 j initialise a 13 3 1 * Fin de la 1ere iter. de la boucle sur j2 3 2 *3 3 2 * * Fin de la 2eme iter. de la boucle sur j3 3 3 * * j atteint sa valeur maximale4 3 3 \n Fin de la 2eme iter. de la boucle sur i1 4 3 i atteint sa valeur max.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 66 / 77
Chapitre 5
Fonctions
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 67 / 77
Fonctions Definition
Fonction
Definition (Fonction)
Une fonction est un bloc/une suite d’instructions autonome qui decrit un calculou une tache dans le but de structurer le programme en taches simples ou dereutiliser du code dans differentes configurations. Elle :
1 possede un nom pour etre appelee plusieurs fois,2 des parametres d’entree a servant a faire varier les calculs ; ses
parametres sont identifies par un nom et un ordre,3 renvoie une unique valeur (dependante ou non des parametres) servant
de resultat a la fonction.Elle se decrit par une signature de la formenom_de_fonction(param1, param2, ..., paramN)
a. Python gere des parametres optionnels (hors du cadre de ce cours)
Exemple (Des fonctions)
cos(x) est la fonction dont le nom est cos ; elle a un parametre x etretourne la valeur de cos(x).max(a,b) est la fonction dont le nom est max ; elle a deux parametres a etb et retourne la valeur la plus grande parmi a et b.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 68 / 77
Fonctions Appel d’une fonction
Appel d’une fonction
Definition (Appel d’une fonction)
I L’utilisation (appel) d’une fonction se sert du nom de la fonction suivi(dans les parentheses)d’arguments.
I Chaque argument communique une valeur a chaque parametre de lafonction, dans le meme ordre que celui de la declaration des parametres.
I Son appel execute toutes les instructions de la fonction avec les valeursfournies aux parametres par les arguments et se finit en renvoyant unevaleur.
Exemple (Appel de fonction)
cos(0) evalue la fonction cos(x) lorsque x prend la valeur 0 et renvoie 1max(2,10) est la fonction max(a,b) lorsque a vaut 2 et b vaut 10 etrenvoie 10.res = max(10, -1) evalue max(a,b) lorsque a vaut 10 et b vaut −1,renvoie 10 et stocke cette valeur dans res. Au final, res vaut 10.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 69 / 77
Fonctions Appel d’une fonction
Remarques
Remarques :1 L’appel de la fonction peut etre integre dans une expression ; l’expression
est remplacee par la valeur que retourne la fonction.
1 res = max( max(10, 1), 2)
est equivalent a :
1 temp = max(10, 1)2 res = max( temp, 2)
2 Bien distinguer le renvoi d’une valeur par une fonction et l’affichage(console) d’une valeur
>>> res = somme( 1, -1) # Stocke dans res le resultat desomme mais ne l’affiche pas
>>> print somme( 2, 4) # Affiche sur la console le resultat de somme mais ne le stocke nulle part
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 70 / 77
Fonctions Syntaxe de declaration d’une fonction
Declaration d’une fonction
Elements pour la declaration d’une fonction1 Nom de la fonction : identificateur explicite2 Parametres : liste de parametres d’entree-sortie de l’algorithme3 Preconditions (optionnel) : des expressions booleennes qui precisent les
conditions d’application de l’algorithme (888)4 Description (optionnel mais d’usage obligatoire) : une documentation de
l’algorithme5 Code : sequence d’instruction necessaire a la resolution du probleme6 Retour (ou renvoi) : la valeur renvoyee
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 71 / 77
Fonctions Syntaxe de declaration d’une fonction
Syntaxe de declaration
Syntaxe de declaration
1 def nom(param1, param2, ..., paramN ) :2 ["[""] commentaires [""]"] # documentation3 [assert type(param) is ...] # pre-conditions4
5 instruction # code6 instruction7 ...8 return [valeur] # renvoie de la valeur de retour
Remarques :l’indentation definit le bloc d’instructions de la fonctionl’execution de return stoppe le flux d’instructions dans une fonction etforce la sortie de la fonctionsi return n’est suivi d’aucune valeur ou qu’il n’y a pas de return, alorsla fonction renvoie None
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 72 / 77
Fonctions Exemples
Exemple d’une fonction a un parametre
Exemple (Declaration de la fonction factorielle)
1 def factorielle ( n ) :2 """ # Documentation3 Nom de la fonction : factorielle4 Parametre : n5 Resultat : retourne n!6 """7 res = 1 # Code8 i = 19 while i < n :
10 res *= i11 i += 112 return res # Valeur de retour
donne avec differents appels :
>>> factorielle( 3 )6>>> n = factorielle( 4 )>>> print n24
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 73 / 77
Fonctions Exemples
Exemple d’une fonction a deux parametres
Exemple (La fonction somme)
1 def somme( a, b ) :2 "retourne la somme a+b, fonctionne avec beaucoup de types"3 total = a + b4 return total
Voici les resultats lors de differents appels :
>>> print somme(10, 2)12>>> res = somme(3, 4)>>> print res-16>>> print somme( ’a’, ’b’ )ab>>> print somme( somme(1, 3), somme(4, 10) )18
Remarque FFF : cette fonction est un exemple de polymorphismepuisqu’elle peut etre utilisee avec n’importe quel type d’objets tant quel’addition + est definie.
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 74 / 77
Fonctions Exemples
Exemple d’une fonction a plusieurs return
Exemple (Differents return)
1 def unVraiMax( p1, p2 ) :2 ’retourne le strictement plus grand des deux ou bien None’3 if p1 > p2 :4 return p15 elif p2 > p1 :6 return p27 else : # p1 == p28 return
Voici les resultats lors de differents appels :
>>> print unVraiMax(1, 2)2>>> print unVraiMax(2, 1)2>>> print unVraiMax(1, 1)None
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 75 / 77
Fonctions Ou declarer une fonction?
Ou declarer une fonction?
Python etant un langageinterprete, il est imperatif, dans unscript, de definir une fonction avantde l’utiliser.
Exemple (Script1.py)
1 # ************************2 def ligne(nbEtoile):3 chaine = ’*’*nbEtoile4 return chaine5
6 # ************************7 # Programme principal8 i = 09 while i<5 :
10 print ligne(i)11 i=i+1
Exemple (Script2.py)
1 # ************************2 def ligne(nbEtoile) :3 chaine = ’*’*nbEtoile4 return chaine5
6 def triangle(nbLigne) :7 i = 08 res = ""9 while i<nbLigne :
10 res += ligne(i) + ’\n’11 i=i+112 return res13
14 # ************************15 # Programme principal16 tr = triangle(5)17 print tr
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 76 / 77
Fonctions Portee des variables dans une fonction
Portee des variables
Portee des variables
Les variables declarees dans une fonction n’ont qu’une portee locale, c’est adire qu’elles n’existent que dans le bloc d’instructions de la fonction et qu’ellesn’existent plus (donc perdent leur valeur) au retour de la fonction.
Exemple (Une fonction)
1 def fonction( a, b )2 somme = a + b3 diff = a - b4 return somme
donne a l’appel :
>>> fonction( 2, 1)3>>> diffTraceback (most recent call last): ...NameError: name ’diff’ is not defined>>> sommeTraceback (most recent call last): ...NameError: name ’somme’ is not defined
CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 77 / 77