+ All Categories
Home > Documents > Module M1207 Programmation Python -...

Module M1207 Programmation Python -...

Date post: 13-Sep-2018
Category:
Upload: trinhtuyen
View: 214 times
Download: 1 times
Share this document with a friend
28
Module M1207 Programmation Python emy CHOLLET*, [email protected] Cl´ eo BARAS, [email protected] Lorraine GOEURIOT, [email protected] erˆ ome MARTIN, [email protected] Version 2016 Table des mati` eres Chapitre 1 Introduction 3 1 L’informatique en R&T 3 1.1 Les modules d’informatique ................................... 3 1.2 Planning .............................................. 3 2 efinition 4 2.1 L’informatique ........................................... 4 2.2 Les langages de programmation ................................ 4 Chapitre 2 Variables et expression 6 3 Variables 6 3.1 Qu’est ce qu’une variable ? ................................... 6 3.2 Type d’une variable ........................................ 6 3.3 Affectation d’une variable .................................... 7 3.4 Conversion de type ........................................ 7 4 Expression 8 4.1 efinitions ............................................. 8 4.2 Op´ erateurs ............................................ 8 4.3 Priorit´ e des op ´ erateurs ...................................... 8 5 Instructions 9 5.1 Instructions d’affectation ..................................... 9 5.2 Instructions d’entr ´ ees/Sorties .................................. 9 1
Transcript

Module M1207

Programmation PythonRemy CHOLLET*, [email protected] BARAS, [email protected] GOEURIOT, [email protected] MARTIN, [email protected]

Version 2016

Table des matieres

Chapitre 1 Introduction 3

1 L’informatique en R&T 31.1 Les modules d’informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Definition 42.1 L’informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Les langages de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Chapitre 2 Variables et expression 6

3 Variables 63.1 Qu’est ce qu’une variable? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Type d’une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3 Affectation d’une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.4 Conversion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Expression 84.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2 Operateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.3 Priorite des operateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5 Instructions 95.1 Instructions d’affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.2 Instructions d’entrees/Sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1

Chapitre 3 Structures alternatives 13

6 Structure conditionnelle elementaire : Si 136.1 Principe et syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7 Structure alternative elementaire : Si sinon 137.1 Principe et syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

8 Conditions booleennes 148.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148.2 Operateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148.3 Operateurs booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

9 Structure alternative multiple : si ... ou si ... sinon 159.1 Principe et syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Chapitre 4 Structures repetitives 17

10 Principes des structures repetitives 17

11 Boucle for 1711.1 Le compteur d’iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1711.2 Repetition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1711.3 Repetition en utiisant le compteur de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . 1811.4 Valeur initiale du compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1911.5 Increment du compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

12 Boucle while 2012.1 La condition de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2012.2 Repetition dependant d’une saisie utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . 20

13 Equivalence boucles for/while 21

14 Boucle avec variable d’accumulation 2214.1 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2214.2 Boucles imbriquees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Chapitre 5 Fonctions 25

15 Fonctions 2515.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515.2 Appel d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515.3 Syntaxe de declaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615.5 Ou declarer une fonction? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2715.6 Portee des variables dans une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Tr. 1

2

Chapitre 1 — Introduction

Tr. 2

1 L’informatique en R&T

1.1 Les modules d’informatique

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 DSPTr. 3

1.2 Planning

Modalites— Cours/TD : 1h + 7 × 2h— TP : 2h + 6 × 2h— Evaluation (semaine 3) : DS papier 1h30 ; DS machine 1h30

Planning des seances

Semaine CM/TD TP46 Introduction, variable, expression47 Bases du langage48 Structures alternatives TD machine : prise en main de l’IDE49 Structures alternatives suite TP1 : Types, test50 Structure repetitive TP2 : Boucles simples51 Structure repetitive suite TP3 : Boucles imbriquees1 Fonctions TP4 : Fonctions2 Fonctions suite TP5 : Fonctions suite3 TP6 : Fonctions avancees

Tr. 4

3

2 Definition

2.1 L’informatique

Definition 1 (Informatique (data processing), algorithme). L’informatique est la science du traitementautomatique (software) de l’information (data), dont decoule des programmes qui implementent desalgorithmes a l’aide d’un langage de programmation.

DonneesProgramme(software) Resultats

Ordinateur

Tr. 5

Definition 2 (Algorithme). Un algorithme est la mise en œuvre d’une succession finie d’actionselementaires (instructions) pour resoudre un probleme ou obtenir une fonctionnalite.

Exemple 3 (Des algorithmes).— Recette de cuisine, notice de montage— Prise d’un medicament contre la toux : ”En cas de toux, prendre, sauf avis contraire du medecin,

un comprime toutes les 4 heures, jusqu’a disparition des symptomes. Pour les enfants, uncomprime toutes les 8 heures suffit.”

— Resolution de ax2 + bx+ c = 0 : par dichotomie, solution exacte ...Tr. 6

Exemple 4 (Prise d’un medicament contre la toux).

”En cas de toux, prendre, sauf avis contraire du medecin, un comprime toutes les 4heures, jusqu’a disparition des symptomes. Pour les enfants, un comprime toutes les 8heures suffit.”

SI toux ET PAS d’avis contraire du medecin ALORS| SI enfant ALORS| | delai d’attente VAUT 8 heures| SINON| | delai d’attente VAUT 4 heures| FIN DE SI| TANT QUE PAS disparition des symptomes FAIRE| | prendre un comprime| | attendre pendant le delai d’attente| FIN DE TANT QUEFIN DE SITr. 7

2.2 Les langages de programmation

Definition 5 (Langage de programmation). C’est un ensemble de caracteres, symboles, mots-cles etregles d’assemblage (equivalents au vocabulaire et a la grammaire d’une langue), utilise pour donnerdes instructions a l’ordinateur.

Evolution des langages

1. Langage machine de plus bas niveau

2. Langage assembleur (mnemonique, macros, variables)

3. Langage structure :— paradigmes de programmation : procedural, oriente objet, fonctionnel...— compile : C, C#, C++, ObjectiveC, Pascal, Java— interprete : Tcl/Tk, Perl, Python, Ruby, JavaScript, Matlab

4. Langage naturel SQL, Windev, 4D (BDD)Tr. 8

2 approches

4

1. Compilation : traduction d’un code source vers un code cible executable— code executable directement par l’OS— Bytecode executable par machine virtuelle (cf. Java au S3)

2. Interpretation : langage converti en bytecode au fur et a mesure de l’execution— lire et analyser une instruction (ou une expression)— si l’instruction est syntaxiquement correcte, l’executer (ou evaluer l’expression)— passer a l’instruction suivante

Pour Python889— tout le code source est verifie syntaxiquement— un bytecode est produit automatiquement pour execution dans l’interpreteur Python (via une

machine virtuelle)— est vu comme un langage interprete

Tr. 9

Python?— Cree par Guido van Rossum en 1990— 1er objectif : un nouveau shell— usages industrialises, forte progression ces dernieres annees— Open source, large communaute, bonne portabilite— plutot haut niveau, plutot pragmatique— Caracteristiques :

— l’indentation comme syntaxe— tout est objet— bibliotheques tres diverses (systeme, calcul, imagerie, SGBD, Web etc...)

Pourquoi Python?— Bon langage pour la pedagogie— Tres bon langage pour l’administration— Aspects modernes (iterateurs, comprehension, introspection...)

Tr. 10

Qualites d’un logiciel

— Fiabilite— Robustesse— Lisibilite du code

— Portabilite— Maintenabilite— Performance

Concretement :— Nommage pertinent— Structurer sous forme de ”boites noires” : modules et les fonctions et aussi classes— Documenter l’interface des boıtes noires, commenter— Tests unitaires— Limiter les dependances, chercher la simplicite et la clarte

Tr. 11

5

Chapitre 2 — Variables et expression

Tr. 12

3 Variables

3.1 Qu’est ce qu’une variable?

Definition 6 (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 donne

3. presente un type, precisant la nature de la valeur qu’elle memorise

Remarque : Une variable possede egalement :— une duree de vie, qui debute a la declaration de la variable et s’acheve lorsque l’espace

memoire occupe par la variable est libere— une portee, zone du programme dans laquelle la variable est accessibleTr. 13

Choix de l’identificateur— L’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 dePython ; 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 variables soient en minuscule etn’utilisent une majuscule que pour la 1ere lettre de chaque mot, comme danstableDesMatieres.

Allocation memoirePython offre un systeme de gestion automatique de la memoire, disposant d’un ramasse-miette(garbage collector ) qui efface automatiquement toutes les donnees non referencees par des variables.

Tr. 14

3.2 Type d’une variable

Definition 7 (Type d’une variable). Le type est la nature de la valeur memorisee par la variable. Il estdefini a la creation de la variable et est dynamique, c’est a dire determine lors de l’execution duprogramme 1.

Quelques types (simples) de variables en PythonCf. tableau 1.

Tr. 15

Fonctions autour du typeI Connaıtre le type d’une variable x : type(x)I Verifier si une variable x est du type t : isinstance(x, t)

1. contrairement a d’autres languages comme Java ou le type est statique c’est a dire declare dans le code par le programmeur

6

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

TABLE 1 – Quelques types de variables

Types numeriques (attention aux problemes de precision !)888— Entiers (signe) : int de precision limitee (entre ≈ [-sys.maxint, sys.maxint]), long de

precision illimitee au dela— Decimaux : float de precision limitee (entre [sys.float\_info.min sys.float\_info.max])— Complexe : complex base sur les float. Par exemple : c=1+3j avec c.real la partie reelle

flottante et c.imag la partie imaginaireTr. 16

3.3 Affectation d’une variable

Definition 8 (Declaration/affectation). En Python, une valeur est declaree et affectee en memetemps 2 :

— la declaration consiste a choisir l’identificateur de la variable— l’affectation lui associe une valeur, dont le type determine celui de la valeur. Elle utilise le

symbole = et se fait dans le sens droite vers gauche.

Attention au sens d’une affectation

Í x = 3 affecte a la variable x la valeur 3.ë Ecrire 3 = x n’a pas de sens !

Tr. 17

Exemple 9 (Des affectations).I x = 2 declare la variable x, lui donne la valeur entiere 2 et lui confere le type intI y = 3.14 declare la variable y, lui donne la valeur flottante 3.14 et lui confere le type floatI chaine = "Eggs" declare la variable chaine, lui donne pour valeur la chaine de caracteres

"Eggs" et lui confere le type strI chaine = "3.14" re-declare la variable chaine, lui donne cette fois pour valeur 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 a 0 (ou vide ou None)

est consideree comme False ; tout le reste est vue comme True. Tr. 18

3.4 Conversion de type

Fonctions de conversion de typeLes fonctions suivantes convertissent (si cela est possible) la valeur passee en parametre dans le typedu meme nom : cf. tableau 2.

Exemple 10 (Conversion de type).— a = int(3.0) ou a = int("3") sont equivalents a a = 3 avec a de type int— chaine = str(3.2) est equivalent a chaine="3.2" de type str

Tr. 19

Remarque888 : Les fonctions de transtypage servent aussi a obtenir des valeurs par defaut :

2. on parle de declaration implicite, contrairement a Java qui impose de declarer une variable et son type avant de lui donnerune valeur

7

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

TABLE 2 – Les fonctions de conversion de type

— i=int() donne i=0

— f=float() donne f=0.0

— s=str() donne s=""

— b=bool() donne b=FalseTr. 20

4 Expression

4.1 Definitions

Definition 11 (Expression, operateurs).— Une expression est une suite de symboles qui sera interpretee comme un 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 du programme, devra etre

stockee dans (affectee a) une variable.

Exemple 12 (Des expressions).— recuperation de la valeur de la variable x : x— expression arithmetique : 4/3 ou (x+2)\%5

— expression booleenne : x==5 (x est-il egal a 5?)Tr. 21

4.2 Operateurs

Principaux operateurs des expressionsCf. tableau 3.

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

TABLE 3 – Operateurs des expressions

Tr. 22

4.3 Priorite des operateurs

Priorite des operateurs, par ordre croissant, avec groupement de gauche a droite si prioritesegales

8

Cf. tableau 4.

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

TABLE 4 – Les priorites des operateurs

Remarque : en cas de doute 3, utilisez des parentheses Tr. 23

5 Instructions

Definition 13 (Instructions). Une instruction est un ordre a executer par le programme; c’est uneetape qui dicte a la machine ce qu’elle doit effectuer avant de passer a l’instruction suivante. Parexemple :

— affecter une valeur a une variable— afficher une information a l’ecran— recuperer une saisie clavier faite par l’utilisateur

Executer une instruction implique d’evaluer des expressions.

Definition 14 (Programme). Un programme est une suite d’instructions, qui s’executent les unes apresles autres - autrement dit sequentiellement.

Tr. 24

5.1 Instructions d’affectation

Exemple 15 (Des instructions d’affectation). Voici un programme (script) de 3 instructions :

1 toto = 32 titi = toto + 13 titi += toto

Les instructions d’affectation et leurs effets sur l’espace des variables et des valeurs sont representeesfigure 1.

— Ligne 1 : declare la variable toto et lui affecte la valeur 3— Ligne 2 : incrementation : evalue l’expression toto + 1 et affecte le resultat (ici 4) a la

variable (declaree par la meme occasion) titi— Ligne 3 : affectation composee : est equivalente a titi = titi + toto. Evalue l’expression

titi + toto et modifie la valeur de titi en lui affectant le resultat (ici 4+3, soit 7)Tr. 25

5.2 Instructions d’entrees/Sorties

5.2.1 Ecriture sur l’ecran

Ecriture vers l’ecran3. Liste detaillee sur https://docs.python.org/2/reference/expressions.html#operator-precedence

9

Variables

toto

titi

Valeurs/donnees

31

4

7

%

FIGURE 1 – L’affectation dans l’espace des variables et des valeurs

L’instruction qui demande au programme l’affichage (l’ecriture) de donnees de differentes natures surla console (l’ecran) est : print expression[, expression]

Exemple 16 (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

Tr. 26

Exemple 17 (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 par la virgule (sans effets enmode interactif)Tr. 27

5.2.2 Formatage de chaine

Formatage de chaıne et specification de conversionLe formatage permet de creer des chaınes de caracteres incorporant des donnees (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 inseree dans la chaıne al’emplacement balise par le specificateur de conversion. Cf. tableau 5.

Tr. 28

Exemple 18 (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 19 (Formatage d’une chaıne avec un flottant).

10

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

TABLE 5 – Les formats d’affichage

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

TABLE 6 – Quelques specifications de format

>>>"%f" % 1.’1.000000’>>>"%.3f" % 123.’123.000’>>>print "La valeur est : %010.3f" % 123.567La valeur est : 000123.567

Tr. 29

Exemple 20 (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

Tr. 30

Autres specifications de conversion888Cf. tableau 6.

Exemple 21 (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’

Tr. 31

11

5.2.3 Lecture d’une saisie clavier

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 22 (Saisie d’une chaine de caracteres).

>>>var = raw_input("Saisir une chaine : ")Saisir une chaine : toto>>>print var, type(var)’toto’ <type ’str’>

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 23 (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’>

Remarque888 : l’instruction raw_input peut etre utilisee pour saisir des nombres en lui associantun transtyptage (int(), float(), ...) qui convertit les caracteres renvoyes par raw_input dans letype attendu :

— Pour la saisie d’un entier, input( "Saisir un entier") est equivalent aint(raw_input( "Saisir un entier"))

— Pour la saisie d’un float, input( "Saisir un flottant") est equivalent afloat(raw_input( "Saisir un flottant"))

— Pour une saisie quelconque, input( "Saisir une donnee") est equivalent aeval(raw_input( "Saisir une donnee"))Tr. 32

12

Chapitre 3 — Structures alternatives

Tr. 33

6 Structure conditionnelle elementaire : Si

6.1 Principe et syntaxe

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

La structure precedente 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’instructionC’est l’indentation (tabulation avec la touche −−→−−→ ) qui definit les blocs d’instructions en Python

Tr. 34

6.2 Exemple

Exemple 24 (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

Tr. 35

7 Structure alternative elementaire : Si sinon

7.1 Principe et syntaxe

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

La structure alternative precedente teste la condition_booleenne en evaluant si elle est True ouFalse.

— Si elle est True alors le bloc d’instructions qui suit est execute ;

13

— Sinon le bloc d’instruction n’est pas execute.— Le programme continue ensuite son deroulement.

Tr. 36

7.2 Exemple

Exemple 25 (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

Tr. 37

8 Conditions booleennes

8.1 Definition

Condition booleenneCette 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 booleen

2. des operateurs booleens entre conditions booleennes, souvent resultat d’une comparaisonentre deux valeurs

Tr. 38

8.2 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 26 (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 == 0Tr. 39

14

8.3 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 parentheses qui ameliorent souvent lalisibilite !

Exemple 27 (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 28 (Des conditions booleennes).— La variable jour est-elle egale a ”lundi” et la variable annee est-elle superieure 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 mais aussi(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 equivalente 0.5 <= spam < 1.5 ou encore1.5 > spam >= 0.5

Remarque : L’evaluation de la condition booleenne s’arrete des que le resultat est sur : par exemple,dans l’expression X and Y, si X est evalue a False, alors l’expression est False et Y n’est pas evalue.Sinon, l’expression est evaluee a la valeur booleenne de Y.

Exemple 29 (Application). Faire l’exercice 4 du TD sur les annees bissextilesTr. 40

9 Structure alternative multiple : si ... ou si ... sinon

9.1 Principe et syntaxe

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 de conditions alternatives— Le bloc else est optionnel Tr. 41

15

9.2 Exemple

Exemple 30.

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"

Tr. 42

9.3 Bilan

Exemple 31 (Algo). Une UE contient 2 modules : M1 et M2.— L’UE est valide si les notes aux deux modules sont superieures a 10— Il y a rattrapage si un seul des modules a une note superieure a 10— Si 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 moduleTr. 43

Les trois implementations suivantes sont equivalentes :

1. Avec 2 structures si sinon imbriquees :

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 structure si 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 des conditions simples :

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"Tr. 44

16

Chapitre 4 — Structures repetitives

Tr. 45

10 Principes des structures repetitives

Definition 32 (Structure repetitive). Une structure repetitive est un bloc d’instructions parcouru uncertain nombre de fois (de 0 a une infinite).

Boucle whileLes boucles while/tant que repetent une serie d’instructions tant qu’une condition est verifiee ; lacondition est une expression booleenne qui s’ecrit de la meme facon que dans les structuresalternatives.

Boucle forEn pratique, le nombre de repetitions est tres souvent connu par le programmeur (parcours deselements d’une liste, repetition d’une meme action, ...) ; on leur prefere une syntaxe plus simpleappelee boucle for.

Tr. 46

11 Boucle for

11.1 Le compteur d’iteration

Definition 33 (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’instructions— Le 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 plus execute et le

programme passe aux instructions qui suivent le blocRemarque : les compteurs sont couramment appeles i, j ou k... pour des raisons historiques liees aulangage Fortran.

Tr. 47

11.2 Repetition

Exemple 34 (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 * et donne :

* * * fin

Le trace du programme est donne table 7.Remarque : ce programme est equivalent a print "*"*3 + "fin".

Tr. 48

17

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

TABLE 7 – Trace de la boucle affichant * * * fin

11.3 Repetition en utiisant 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 faire varier leurs resultats d’uneiteration a une autre

Exemple 35 (Affichage des nombres de 2 jusqu’a 6 (exclu)). Le programme suivant :

1 for i in range( 4 ) :2 print i+2, # affichage3 print "fin"

affiche les nombres de 2 a 5 et donne :

2 3 4 5 fin

Le trace du programme est donne table 8.

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

TABLE 8 – Trace de la boucle affichant 2 3 4 5 fin

Tr. 49

ë Attention : le compteur de boucle ne doit en general pas etre modifie par les instructions dela boucleLes valeurs du compteur sont pre-calculees au 1ere passage dans la boucle pour aller de 0 a N.Quelque soient les modifications faites sur le compteur dans le bloc d’instruction, chaque nouvelleiteration donne au compteur la prochaine valeur pre-calculee.

Tr. 50

Exemple 36 (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 :

0 1 fin

Le trace du programme est donne table 9.Tr. 51

18

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

TABLE 9 – Trace de la boucle affichant 0 1 fin

11.4 Valeur initiale du compteur

Definition 37 (Boucle for avec valeur initiale non nulle). La syntaxe d’une boucle for repetant un blocd’instructions sur la base d’un compteur allant d’une valeur initiale a une valeur finale (exclue) est :

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 boucle s’arrete lorsque lecompteur atteint la valeur val_fin_exclue.

Exemple 38 (Affichage des nombres de 2 jusqu’a 5 (exclu)). Le programme pour afficher les nombresde 2 a 4 :

1 for i in range(2, 5) :2 print i, # affichage3 print "fin"

donne en 3 iterations :

2 3 4 fin

Le trace du programme est donne table 10.

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

TABLE 10 – Trace de la boucle affichant 2 3 4 fin

Tr. 52

11.5 Increment du compteur

Definition 39 (Boucle for avec un increment du compteur different de 1). La syntaxe suivante :

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 du compteur de increment

jusqu’a ce qu’il egale ou depasse val_fin_exclue

Exemple 40 (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"

19

donne :

2 4 6 fin

Le trace du programme est donne table 11.

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

TABLE 11 – Trace de la boucle affichant * ** *** fin

Tr. 53

12 Boucle while

12.1 La condition de boucle

Definition 41 (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 la constituent :

1. Initialisation de la condition

2. Test de la condition a chaque iteration de la boucle

3. Modification du contexte (de la condition) a chaque iteration

— Des que la condition n’est plus vraie, le programme se poursuit avec les instructions quisuivent le bloc repetitif

— Pour ne pas se repeter sans fin, le bloc d’instructions doit obligatoirement reaffecter la conditionbooleenne.

Ces boucles sont particulierement utiles lorsque le nombre d’iterations n’est pas connu a l’avancecomme par exemple lorsqu’elles dependent d’une action de l’utilisateur ou du resultat d’un calcul faitpar les instructions de boucle.Tr. 54

12.2 Repetition dependant d’une saisie utilisateur

Exemple 42 (Verification d’une saisie clavier). Les programmes suivants imposent a un utilisateur unesaisie clavier valant ’O’ ou ’N’ 4.Ils utilisent pour condition de boucle la variable rep, donnant le resultat de la saisie utilisateur,comparee aux valeurs attendues.Deux types d’initialisation peuvent etre envisagees :

1. rep = input("Tapez O/N ") qui realise une premiere saisie avant test

2. rep = "" qui affecte une valeur garantissant l’entree dans la boucle.Tr. 55

Variante 1 :4. Rappel : Python est sensible a la casse ; ’O’ n’est donc pas le meme caractere que ’o’

20

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 passages dans laboucle) :

Tapez O/N iNon, tapez O/N pNon, tapez O/N ? Ofin

pour la variante 2 (3 passages dans laboucle) :

Tapez O/N iTapez O/N pTapez O/N ? Ofin

Tr. 56

13 Equivalence boucles for/while

L’art du compteur d’iterationLorsque le nombre d’iterations est connu et qu’on peut le denombrer avec un compteur d’iterationallant d’une valeur ini a une valeur fin en s’incrementant a chaque iteration de inc, les structuresrepetitives peuvent finalement 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

Tr. 57

Exemple 43 (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... Tr. 58

21

14 Boucle avec variable d’accumulation

14.1 Principes

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 de la boucle.— L’actualisation peut etre : l’ajout a la variable d’une valeur, la multiplication de la variable par une

valeur, ...— Le choix du type de boucle (for ou while) depend de l’application visee toujours dans l’idee

qu’elle conduit (ou non) a un nombre d’iterations connuTr. 59

Exemple 44 (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 4 ans de fonctionnement.— Variable d’accumulation : le solde— Boucle : 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 :

solde final : 2350

Y Il n’y a pas trace des valeurs intermediaires du solde (cf. listes en Prog2)Tr. 60

Exemple 45 (Quand pourrais-je avoir un iPhone?).— Application : partant d’un livret de 50 euros, sur lequel est vire 200 euros chaque annee et avec

0.75% d’interet, combien d’annee faut-il a son titulaire pour acheter un iPhone?— Variable d’accumulation : le solde avec ajout des interets et du versement a chaque iteration— La 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 :

Nbre d’annees :4Solde : 860.5620439082031

Le nombre d’annees est d’ailleurs le nombre d’iterations de la boucle while.Tr. 61

Exemple 46 (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’accumulationUn programme utilisant une variable d’accumulation doit toujours :

1. initialiser la variable d’accumulation,

22

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.Tr. 62

Exemple 47 (Calcul iteratif d’une puissance). Le programme suivant calcule 24 dans res en utilisant lefait que 24 = 2× 2× 2× 2 ; res etant modifiee par accumulation de multiplication, sa valeur initiale seradonc 1.

1 res = 12 i = 13 while i <= 4 :4 res = res * 25 i = i + 16 print "2ˆ4 vaut", res

Le trace des variables est donne table 12.

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

TABLE 12 – Trace de la boucle calculant 2ˆ4

Tr. 63

14.2 Boucles imbriquees

Exemple 48 (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 :

** *

Le trace des variables est donne table 13.Tr. 64

23

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.

TABLE 13 – Trace d’une boucle imbriquee

24

Chapitre 5 — Fonctions

Tr. 65

15 Fonctions

15.1 Definition

Definition 49 (Fonction). Une fonction est un bloc/une suite d’instructions autonome qui decrit uncalcul ou une tache dans le but de structurer le programme en taches simples ou de reutiliser du codedans differentes configurations. Elle :

1. possede un nom pour etre appelee plusieurs fois,

2. des parametres d’entree 5 servant a faire varier les calculs ; ses parametres sont identifies par unnom 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 forme nom_de_fonction(param1, param2, ..., paramN)

Exemple 50 (Des fonctions).— cos(x) est la fonction dont le nom est cos ; elle a un parametre x et retourne la valeur de cos(x).— max(a,b) est la fonction dont le nom est max ; elle a deux parametres a et b et retourne la valeur

la plus grande parmi a et b.Tr. 66

15.2 Appel d’une fonction

Definition 51 (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 la fonction, dans le meme

ordre que celui de la declaration des parametres.I Son appel execute toutes les instructions de la fonction avec les valeurs fournies aux

parametres par les arguments et se finit en renvoyant une valeur.

Exemple 52 (Appel de fonction).— cos(0) evalue la fonction cos(x) lorsque x prend la valeur 0 et renvoie 1— max(2,10) est la fonction max(a,b) lorsque a vaut 2 et b vaut 10 et renvoie 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.Tr. 67

Remarques :

1. L’appel de la fonction peut etre integre dans une expression ; l’expression est remplacee par lavaleur 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 de somme mais ne l’affiche pas

>>> print somme( 2, 4) # Affiche sur la console le resultat de somme mais nele stocke nulle part

Tr. 68

5. Python gere des parametres optionnels (hors du cadre de ce cours)

25

15.3 Syntaxe de declaration d’une fonction

Elements pour la declaration d’une fonction

1. Nom de la fonction : identificateur explicite

2. Parametres : liste de parametres d’entree-sortie de l’algorithme

3. Preconditions (optionnel) : des expressions booleennes qui precisent les conditions d’applicationde l’algorithme (888)

4. Description (optionnel mais d’usage obligatoire) : une documentation de l’algorithme

5. Code : sequence d’instruction necessaire a la resolution du probleme

6. Retour (ou renvoi) : la valeur renvoyee

Tr. 69

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 fonction— l’execution de return stoppe le flux d’instructions dans une fonction et force la sortie de la

fonction— si return n’est suivi d’aucune valeur ou qu’il n’y a pas de return, alors la fonction renvoie NoneTr. 70

15.4 Exemples

15.4.1 Fonction a un parametre

Exemple 53 (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

Tr. 71

26

15.4.2 Fonction a deux parametres

Exemple 54 (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 polymorphisme puisqu’elle peut etre utiliseeavec n’importe quel type d’objets tant que l’addition + est definie. Tr. 72

15.4.3 Fonction a plusieurs valeurs de retour

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

Tr. 73

15.5 Ou declarer une fonction?

Python etant un langage interprete, il est imperatif, dans un script, de definir une fonction avant del’utiliser.

Exemple 56 (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

27

Exemple 57 (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

Tr. 74

15.6 Portee des variables dans une fonction

Portee des variablesLes variables declarees dans une fonction n’ont qu’une portee locale, c’est a dire qu’elles n’existentque dans le bloc d’instructions de la fonction et qu’elles n’existent plus (donc perdent leur valeur) auretour de la fonction.

Exemple 58 (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

Tr. 75

28


Recommended