programmation python - université grenoble-alpes -...

97
Programmation Python emy CHOLLET* Cl´ eo BARAS Lorraine GOEURIOT erˆ ome MARTIN Mails : [email protected] IUT D ´ epartement R ´ eseaux & T ´ el´ ecommunications, 1 ` ere ann ´ ee Version 17/18 CBGM (IUT-RT) Prog 1 Version 2017 1 / 97

Upload: doanduong

Post on 12-Sep-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Programmation Python

Remy CHOLLET*Cleo BARAS

Lorraine GOEURIOTJerome MARTIN

Mails : [email protected]

IUT Departement Reseaux & Telecommunications, 1ere annee

Version 17/18

CBGM (IUT-RT) Prog 1 Version 2017 1 / 97

Page 2: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chapitre 1

Introduction

CBGM (IUT-RT) Prog 1 Version 2017 2 / 97

Page 3: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

L’informatique en R&T Les modules d’informatique

L’informatique en R&T

Sem. Modules IntituleS1 M1105 Unix

M1103 Architecture des equipements informatiquesM1106 Initiation au developpement WebM1207 Programmation 1

S2 M2104 SGBDM2105 Web dynamiqueM2109 Gestion de projets informatiquesM2207 Programmation 2

S3 M3206 POOS4 M4206C Programmation sur mobiles

M4207 Autres applications informatiques

CBGM (IUT-RT) Prog 1 Version 2017 3 / 97

Page 4: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 TP46 Introduction, variable, expression46 Prise en main de l’IDE47 Bases de la programmation48 Structures alternatives Structures alternatives49 Structures repetitives Structures alternatives50 Structures repetitives imbriquees Structures repetitives51 Fonctions Structures repetitives imbriquees2 Fonctions Fonctions2 Revision DS Fonctions3 DS le 17/01/18 Examen sur machine le 15/01/18

CBGM (IUT-RT) Prog 1 Version 2017 4 / 97

Page 5: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

L’informatique en R&T Outils a disposition

Outils a disposition

Poly, slides, sujets de TD et de TP sur Chamilo :http://chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/index.phpIDE PyCharm Community Edition de JetBrains

CBGM (IUT-RT) Prog 1 Version 2017 5 / 97

Page 6: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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

CBGM (IUT-RT) Prog 1 Version 2017 6 / 97

Page 7: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 touxResolution de ax2 + bx + c = 0Tri de donneesCryptographieRecherche d’un plus court cheminetc.

CBGM (IUT-RT) Prog 1 Version 2017 7 / 97

Page 8: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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

CBGM (IUT-RT) Prog 1 Version 2017 8 / 97

Page 9: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Les langages de programmation

Langage de programmation

Definition (Langage de programmation)

Ensemble de caracteres, symboles, mots-cles et regles d’assemblage(equivalents au vocabulaire et a la grammaire d’une langue), utilise pourdonner des instructions a l’ordinateur.

Evolution des langages1 Langage machine de plus bas niveau puis assembleur (mnemonique,

macros, variables)2 Langage structure :

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

3 Langage naturel SQL, Windev, 4D (BDD)

� wikipedia

CBGM (IUT-RT) Prog 1 Version 2017 9 / 97

Page 10: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 ”a la volee” soitlecture et analyse d’une instruction (ou une expression)si correcte, l’executer (ou evaluer l’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)le code peut aussi etre interprete en mode interactif

CBGM (IUT-RT) Prog 1 Version 2017 10 / 97

Page 11: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Le langage Python

Python?

Cree par Guido van Rossum en 19901er objectif : un nouveau shellgrande communaute, usages industrialisesen progression ces dernieres annees (voir tiobe-index)Open source, large communaute, bonne portabiliteplutot haut niveau, plutot pragmatiqueCaracteristiques :

l’indentation comme syntaxetout est objet

CBGM (IUT-RT) Prog 1 Version 2017 11 / 97

Page 12: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Le langage Python

Pourquoi Python?

Tres bonne expressiviteBon langage pour la pedagogieAspects modernes (iterateurs, comprehension, introspection...)Tres bon langage pour l’administration systemebibliotheques tres diverses (systeme, calcul, imagerie, SGBD, Web etc...)

CBGM (IUT-RT) Prog 1 Version 2017 12 / 97

Page 13: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Le langage Python

Some Spam?

Some Spam?

� https://youtu.be/nZG6lQPQKlI

CBGM (IUT-RT) Prog 1 Version 2017 13 / 97

Page 14: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Temoignage

Temoignage

Si un etudiant est comme moi, en difficulte, dans les matiere type� programmation �, il ne faut pas desesperer.

Nous pouvons comparer la progression d’un langageinformatique a l’apprentissage d’une langue etrangere. Les coursm’ont permis de comprendre les concepts generaux. Mais c’est lefait de pratiquer tous les jours qui m’a reellement permis deprogresser.

– Nathan R. 2016

CBGM (IUT-RT) Prog 1 Version 2017 14 / 97

Page 15: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Definition Pour aller plus loin ...

Bonnes pratiques

Qualites d’un logiciel

FiabiliteRobustesseLisibilite du code

PortabiliteMaintenabilitePerformance

Concretement, il faut :Utiliser des nommages pertinents dans le codeStructurer le code par des modules, des fonctions et aussi des classesDocumenter le code, le commenterTester unitairement le codeLimiter les dependances, chercher la simplicite et la clarte

CBGM (IUT-RT) Prog 1 Version 2017 15 / 97

Page 16: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chapitre 2

Variables et expression

CBGM (IUT-RT) Prog 1 Version 2017 16 / 97

Page 17: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Variables Qu’est ce qu’une variable?

Variables

Definition (Variable)

Une variable designe un objet informatique dans une zone memoire. Elle :1 est designee par un identificateur, appele aussi nom, et lie a une

reference2 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

Remarques : Une variable possede egalement :une duree de vie et une porteedes proprietes en tant qu’objet informatique decrit (dans les langages deprogrammation oriente objet comme Python) par une classe

CBGM (IUT-RT) Prog 1 Version 2017 17 / 97

Page 18: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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.)ë interdisant les noms commencant par un nombreë interdisant les mots-cles de Python

Mots-cles Python interdits :

and del from not while

as elif global or with

assert else if pass yield

break except import print

class exec in raise

continue finally is return

def for lambda try

CBGM (IUT-RT) Prog 1 Version 2017 18 / 97

Page 19: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Variables Type d’une variable

Type d’une variable

Definition (Type d’une variable)

Le type est la nature (la classe) de la valeur memorisee par la variable. Ilest :

defini a la creation de la variable ;dynamique, c’est-a-dire qu’il peut evoluer lors de l’execution duprogramme.

Quelques types (simples) de variables en Python

Nom Type (class) 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 "

CBGM (IUT-RT) Prog 1 Version 2017 19 / 97

Page 20: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Variables Type d’une variable

Type d’une variable

Fonctions autour du type

Connaıtre le type d’une variable x : type(x)

type( 0 ) indique <class ’int’>

type( 0. ) indique <class ’float’>

type( ’Spam’ ) indique <class ’str’>

Types numeriques (attention aux problemes de precision !)889

Entiers signes : int de precision illimitee (tant que la memoire estdisponible)Decimaux : float de precision limitee (∈ [sys.float_info.minsys.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 imaginaire

CBGM (IUT-RT) Prog 1 Version 2017 20 / 97

Page 21: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Variables Affectation d’une variable

Declaration et affectation d’une variable

Variables du contexte de nommage et memoire

Les variables permettent d’acceder a des objets informatiques (une valeurd’un certain type). Python s’appuie donc sur deux ensembles differents : lecontexte (ou espace) de nommage et la memoire (vive). Ces deuxensembles sont liberes a la fin de l’execution d’un programme.

Declaration et affectation d’une variable : x=2

1 cree une zone memoire pour rangerl’objet de type entier 2 (class ’int’),

2 cherche si x existe dans le contexte denommage. Ne le trouvant pas, une entreex est ajoutee a ce contexte,

3 finalise l’affectation en associant x a 2

Contexte

x

Memoire

2

Attention au sens d’une affectation

ë Ecrire 2 = x n’a pas de sens !CBGM (IUT-RT) Prog 1 Version 2017 21 / 97

Page 22: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 chaine

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

CBGM (IUT-RT) Prog 1 Version 2017 22 / 97

Page 23: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expression Definitions

Expression

Definition (Expression, operateurs)

Une expression est une serie de calculs ayant pour resultat une valeurd’un certain type.Elle utilise des operateurs (+, -, *, ...) et des operandes (valeurs,variables, expressions).Les expressions exploitent l’espace memoire : la valeur de l’expression,si elle doit etre reutilisee dans la suite du programme, devra etre stockeedans (affectee a) une variable.

Exemple (Des expressions)

recuperation de la valeur de la variable x : xexpression arithmetique : 4/3 ou (x+2) % 5

Remarque : Python autorise des expressions melangeant des types lorsqu’ilssont homogenes uniquement (typage fort).

CBGM (IUT-RT) Prog 1 Version 2017 23 / 97

Page 24: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 (decimale)% modulo (reste de la division) // division euclidienne** exposant : 3**2 vaut 9 not negation logiqueand intersection logique or union logique

Affectation composee

C’est une operation permettant de realiser en une seule etape une operationnormale et l’affectation de son resultat dans la variable servant de premieroperande. On suit la syntaxe : variable op= valeur .ou op est l’un des operateurs arithmetiques : +, -, *, /, %, //, **. Cette syntaxeest strictement equivalente a : variable = variable op valeur .

� DemoCBGM (IUT-RT) Prog 1 Version 2017 24 / 97

Page 25: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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ˆ ou exclusif 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, utilisez des parentheses

CBGM (IUT-RT) Prog 1 Version 2017 25 / 97

Page 26: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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.

CBGM (IUT-RT) Prog 1 Version 2017 26 / 97

Page 27: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions d’affectation

Instructions d’affectation

Exemple (Des instructions d’affectation)

1 a = 32 b = a + 13 b += a4

Contexte Memoire

a 3

b 4

1

7

%

Ligne 1 : a ne faisant pas partie ducontexte, l’instruction declare la variable a

dans le contexte et lui affecte la valeur 3Ligne 2 : incrementation : evaluel’expression a + 1 et, puisque b ne faitpas partie du contexte, declare la variableb dans le contexte, et lui affecte leresultat (ici 4)

Ligne 3 : affectation composee equivalente a b = b + a : evaluel’expression b + a pour obtenir 7 ; procede ensuite a l’affectation : commeb est deja declaree dans le contexte, sa valeur est modifiee pour prendrecelle du resultat 7. L’objet 4 n’est plus reference et est efface par leramasse-miette.

CBGM (IUT-RT) Prog 1 Version 2017 27 / 97

Page 28: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Instruction de sorties : ecriture sur l’ecran

Ecriture vers l’ecran (ou affichage console) avec print

L’instruction qui demande au programme l’affichage (l’ecriture) d’une donneesur la console (l’ecran) est : print( valeur ). Les donnees peuvent etre detous types (int, float, str, etc.). Un retour chariot est ajoute par defaut a lafin de chaque appel a print

Exemple (Affichage de donnees (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print( msg )4 print( valeur )5 print( "fin" )

1 print( "Bonjour" )2 print( 3.14 )3 print( "fin" )

donnent a l’affichageconsole :

Bonjour3.14fin

CBGM (IUT-RT) Prog 1 Version 2017 28 / 97

Page 29: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Variantes de print

1 print(donnee1, donnee2, ...) affiche, sur une meme ligne et separee(par defaut) par un espace, toutes les donnees passees en parametres.

Exemple (Affichage de donnees (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print( msg, valeur)4 print( "fin" )

1 print( "Bonjour", 3.14)2 print( "fin" )

donnent a l’affichageconsole :

Bonjour 3.14fin

CBGM (IUT-RT) Prog 1 Version 2017 29 / 97

Page 30: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Variantes de print

2 print( donnee1, donnee2, ..., sep=chaine_sep, end=chaine_fin )

affiche les donnees :en les separant par la chaine_sep fournie dans le parametre (optionnel) sep(par defaut sep=" ")en terminant l’affichage par la chaine_fin precisee dans le parametre(optionnel) end (par defaut end="\n")

Exemple (Affichage de donnees (extrait de code))

1 msg = "Bonjour"2 valeur = 3.143 print( msg, valeur, sep="--" )4 print( "et" )5 print( msg, valeur, end=">>" )6 print( "fin" )

donne a l’affichageconsole :

Bonjour--3.14etBonjour 3.14>>fin

CBGM (IUT-RT) Prog 1 Version 2017 30 / 97

Page 31: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Variantes de print

3 print peut afficher la valeur d’expressions apres les avoir evaluees

Exemple (Affichage de valeurs de variables)

1 nbre_art = 52 prix_unitaire = 19.693 print( "total=", nbre_art*prix_unitaire)4 print( "(-) "*3 )5 print( str(nbre_art) + "x" + str(

prix_unitaire) + "=", "?")

donne a l’affichageconsole :

total= 98.45(-) (-) (-)5x19.69= ?

CBGM (IUT-RT) Prog 1 Version 2017 31 / 97

Page 32: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Formatage de chaıne

Formatage de chaıne

Le formatage permet de creer des chaınes de caracteres incorporant desdonnees (de divers types). Il peut etre fait avec la syntaxe :

1 pour une donnee : "une chaine formatee avec {}".format( donnee )

2 pour plusieurs donnees : "une chaine formatee avec {} et {} ... et {}

".format(donnee1, donnee2, ..., donneeN)"

Exemple (Affichage de valeurs de variables)

1 msg = "Hello"2 val = 3.143 chaine = "Say {}".format( msg )4 print( chaine )5 chaine = "{} Mr {}!".format( msg, val )6 print( chaine )

donne a l’affichageconsole :

Say HelloHello Mr 3.14!

CBGM (IUT-RT) Prog 1 Version 2017 32 / 97

Page 33: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Formatage de donnees au sein d’une chaineLa combinaison de {} et format peut aussi (cf. https://pyformat.info/) :

controler la precision dans l’affichage des variables numeriques (float)controler le nombre de caracteres de la console utilises pour l’affichage

Exemple (Quelques exemples classiques)

Variable Formatage Affichage dans la console

p=3.141592 "{}".format(p) 3 . 1 4 1 5 9 2

"{:.3f}".format(p) 3 . 1 4 1

"{:06.2f}".format(p) 0 0 3 . 1 4

s="test" "{}".format(s) t e s t

"{:>7}".format(s) t e s t

e=666 "{}".format(e) 6 6 6

"{:>5}".format(e) 6 6 6

"{:05d}".format(e) 0 0 6 6 6

CBGM (IUT-RT) Prog 1 Version 2017 33 / 97

Page 34: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Directives de formatage empruntees au C

Formatage de chaıne avec directives du C

Une autre syntaxe pour creer des donnees formatees est celle empruntee duC :I "une chaine formatee %format" % valeur pour une valeur a formaterI "une autre %format1 et %format2" % (valeur1, valeur2) pour deux

valeurs a formaterLes valeurs (ou variables) placees apres l’operateur de conversion % serontinserees dans la chaıne a l’emplacement balise par les specificateurs deconversion.

CBGM (IUT-RT) Prog 1 Version 2017 34 / 97

Page 35: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instructions de sortie : affichage console

Exemples

Exemple (Formatage de chaınes)

avec un entier :

1 val = 102 print( "val vaut %d" % val )3 print( "val est affiche %04d" % val )

val vaut 10val est affiche 0010

avec un flottant :

1 print( "%f" % 1. )2 print( "%.3f" % 123. )3 print( "Mais aussi %010.3f" % 123.567 )

1.000000123.000Mais aussi 000123.567

avec deux donnees :

1 TC = 23.52 TF = TC*9./5+323 print( "%5.1f C" % TC, "= %5.1f F" % TF )4 print( "%5.1f C = %5.1f F" % (TC, TF) )

23.5 C = 74.3 F

CBGM (IUT-RT) Prog 1 Version 2017 35 / 97

Page 36: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instruction d’entrees : lecture d’une saisie clavier

Instructions d’entree : lecture a partir du clavier

Lecture de caracteres saisis au clavierL’instruction chaine = input("tapez une chaine : ") :

1 affiche sur la console 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 de type str.

Exemple (Saisie de donnees)

1 chaine = input("Saisir une chaine : ")2 print( chaine, type(chaine) )3 chaine = input("Un entier : ")4 print( chaine, type(chaine) )5 chaine = input("Une valeur : ")6 print( chaine, type(chaine) )

Saisir une chaine :toto

toto <class ’str’>Un entier : 1212 <class ’str’>Une valeur : -3.5-3.5 <class ’str’>

CBGM (IUT-RT) Prog 1 Version 2017 36 / 97

Page 37: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instruction d’entrees : lecture d’une saisie clavier

Typage des donnees saisies au clavier

Typer des donnees acquises avec input peut se faire :1 en ajoutant un transtypage (int(), float(), ...) qui convertit les

caracteres renvoyes par input dans le type attendu :

Exemple (Input avec transtypage)

1 chaine = input("Un entier : ")2 nbre = int(chaine)3 print( nbre, type(nbre))4 chaine = input("Une valeur : ")5 val = float(chaine)6 print( val, type(val) )

Un entier : 1212 <type ’int’>Une valeur : -3.5-3.5 <type ’float’>

CBGM (IUT-RT) Prog 1 Version 2017 37 / 97

Page 38: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Instruction d’entrees : lecture d’une saisie clavier

Typer des donnees saisies au clavier

2 avec la fonction eval qui laisse a Python le choix de decider du type de lavariable le plus adequat en fonction de la saisie clavier

Exemple (Input avec choix d’un type)

1 chaine = input("Un entier : ")2 nbre = eval(chaine)3 print( nbre, type(nbre))4 chaine = input("Une valeur : ")5 val = eval(chaine)6 print( val, type(val) )7 chaine = input("Une autre valeur: ")8 val = eval(chaine)9 print( val, type(val) )

Un entier : 1212 <type ’int’>Une valeur : -3.5-3.5 <type ’float’>Un entier : 1212 <type ’int’>Une autre valeur: 12.12.0 <type ’float’>

Remarque : Si le transtypage ou l’evaluation de l’entree saisie est impossible,alors une exeption est levee.

CBGM (IUT-RT) Prog 1 Version 2017 38 / 97

Page 39: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Modules et fonctions

Modules et fonctions

Definition (Modules et fonctions)

Python propose un ensemble de fonctions servant a differents calculs ou adifferentes taches utiles et recurrentes dans un programme. Certaines de cesfonctions sont fournies (rangees, declarees) dans des bibliotheques(appelees modules).

Exemple (Quelques modules (cf. documentation))

Module Role Exemples de fonctionsBuilt-in int, float, absmath Calculs mathematiques cos, sin, exprandom Choix aleatoires rand, randomos, sys Interactions systemes chdir, getlogin, getpidturtle Fenetre graphique forward, goto

CBGM (IUT-RT) Prog 1 Version 2017 39 / 97

Page 40: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Modules et fonctions

Caracteristiques d’une fonction

Definition (Caracteristiques d’une fonction)

En plus d’un nom et d’un eventuel module, les fonctions peuvent :etre dependantes de parametresproduire un resultat, appele valeur de retour (de l’anglais return)

Exemple (Extrait de documentation de fonctions)

CBGM (IUT-RT) Prog 1 Version 2017 40 / 97

Page 41: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Modules et fonctions

Appel d’une fonction

Definition (Appel d’une fonction)

Pour appeler une fonction, c’est a dire evaluer son resultat pour des valeursde parametres donnees (appeles arguments), il faut :

importer son module (si necessaire) avec l’instruction : import module

appeler la fonction avec la synthaxe :I fonction si la fonction est declaree dans le contexte courantI module.fonction si la fonction appartient a un module importe

suivi de parenthesesindiquer dans les parentheses les arguments : chaque argument donneune valeur a chaque parametre de la fonction, dans le meme ordre quecelui de la declaration des parametres.

Cet appel se finit en renvoyant un resultat (une valeur), qui peut etre affectea une variable.

CBGM (IUT-RT) Prog 1 Version 2017 41 / 97

Page 42: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Instructions Modules et fonctions

Exemples d’appels

Exemple (Appel de fonction)

Pour sqrt( x ) dans le module math :

1 import math

1 res = math.sqrt( 3 )2 print( res )

1.7320508075688772

Pour la fonction max( a, b ) (qui n’appartient a aucun module) :

1 res = max( 1, 10 )2 print( res )

10

Pour la fonction getlogin() du module os, qui n’a pas de parametresmais est appele obligatoirement avec des parentheses :

1 import os

1 log = os.getlogin()2 print( log )

barasc

CBGM (IUT-RT) Prog 1 Version 2017 42 / 97

Page 43: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Programme Python

Programme Python

Definition (Programme Python)

Un programme Python est un fichierd’extension .py contenant des seriesd’instructions. Il possede un pointd’entree, qui est par convention lafonction main.Ce point d’entree permet a Python desavoir ou trouver la premiereinstruction a executer : c’est lapremiere instruction du main.

La structure d’un programme est :

1 #!/usr/bin/env python2 # -*- coding: UTF-8 -*-3 """4 Script: un_programme.py5 Auteur: pycharm6 Date: 01/09/20177 """8

9 # Programme principal10 def main():11 # Les instructions12 print("1er programme")13

14 # Fin du programme15

16 if __name__ == ’__main__’:17 main()

L’art de la tabulationAttention : pour faire partie du main, les instructions du programme doiventtoutes etre tabulees (d’une tabulation ou 4 espaces d’apres le PEP8).

CBGM (IUT-RT) Prog 1 Version 2017 43 / 97

Page 44: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chapitre 3

Structures alternatives (ou conditionnelles)

CBGM (IUT-RT) Prog 1 Version 2017 44 / 97

Page 45: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expressions booleennes Le type booleen

Le type booleen

Definition (Le type booleen)

Une variable de type booleen (bool) peut prendre uniquement deux valeurs :True (correspondant a vrai ou a la valeur binaire 1)False (correspondant a faux ou a la valeur binaire 0)

Remarque888

Toute variable peut etre transtypee en booleen avec la fonction bool(valeur) :toute valeur egale a 0 ou vide (ou None) est consideree comme False

tout le reste est vu comme True.Par defaut, b=bool() donne b=False

CBGM (IUT-RT) Prog 1 Version 2017 45 / 97

Page 46: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expressions booleennes Expressions booleennes

Expressions booleennes

Operateurs de comparaison

Les expressions booleennes mettent en œuvre des operateurs decomparaison qui comparent deux donnees du meme type (numerique,chaıne) et s’evaluent en un booleen.

Les principaux operateurs de comparaison

Op. Signification Op. Signification== egal (meme valeur) != different> strictement superieur < strictement inferieur>= superieur ou egal <= inferieur ou egalb<x<B x est compris entre b et Bin appartenance a une liste

d’elementsnot in non appartenance a une

liste d’elementsisinstance(x, t) x est du type t? is egal (meme objet en

memoire)

CBGM (IUT-RT) Prog 1 Version 2017 46 / 97

Page 47: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expressions booleennes Expressions booleennes

Exemples d’expressions booleennes

Exemple (Des expressions booleennes avec operateurs de comparaison)Condition Expression PythonLa variable prog1 est-elle egale a 10? prog1 == 10

La variable prog2 est-elle comprise entre 10 et 20? 10 < prog2 < 20

La moyenne des notes prog1 et prog2 est-elle superieure a 10? (prog1+prog2)/2 > 10

La note prog1 est-elle divisible par 3? prog1 % 3 == 0

Le jour est-il "lundi", "mardi" ou "mercredi"? jour in ["lundi", "mardi", "mercredi"]

x est-il different de 2.2, 3.3 et de 4.4? x not in [2.2, 3.3, 4.4]

x est-il du type int? isinstance(x, int)

TABLE – Des exemples d’expressions booleennes

Remarque : Les expressions booleennes peuvent bien sur servir a affecterune variable. Par exemple, l’instruction reponse = (x == 5) affecte reponse auresultat de la comparaison ”x est-il egal a 5?”

CBGM (IUT-RT) Prog 1 Version 2017 47 / 97

Page 48: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expressions booleennes Expressions booleennes

Expressions booleennes

Operateurs booleens

Les expressions booleennes peuvent egalement mettre en oeuvre desoperateurs booleens entre expressions booleennes (souvent obtenuescomme resultat d’une comparaison entre deux valeurs).

Principaux operateurs booleens

Symb. Signification Symb. Significationor union logique pour les boolean and intersection logique pour les

boolean

not negation logique pour lesboolean

Remarque : Attention aux priorites des operateurs . Dans le doute, abuserdes parentheses qui ameliorent souvent la lisibilite !

CBGM (IUT-RT) Prog 1 Version 2017 48 / 97

Page 49: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Expressions booleennes Expressions booleennes

Operateurs booleens

Rappel : Table de verite des operateurs

and True False

True True False

False False False

or True False

True True True

False True False

not True False

False True

Exemple (Des conditions booleennes)Condition Expression PythonLa variable jour est-elle egale a ”lundi” et la variable annee (jour == "lundi") and (annee > 2000)

est-elle superieure a 2000?Le jour est-il dans le WE? (jour == "samedi") or (jour == "dimanche")

jour in ["samedi", "dimanche"]

La variable x est-elle differente de 0? x != 0

(x > 0) or (x < 0)

La variable x est-elle comprise entre 0.5 inclu et 1.5? (x >= 0.5) and (x < 1.5)

0.5 <= x < 1.5

CBGM (IUT-RT) Prog 1 Version 2017 49 / 97

Page 50: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure alternative elementaire : Si sinon Principe et syntaxe

Structure alternative ”Si ... sinon”

Structure alternative ”Si ... sinon”

# Debut du si/sinonif condition_booleenne:

# Instructions si la condition est vraieinstructioninstruction

else:# Instructions si la condition est fausseinstructioninstruction

# Fin du si/sinonsuite_du_programme

uniquement si la condition est True

uniquement si la condition est False

suite du deroulement sequentiel

teste la condition_booleenne en evaluant si elle est True ou False.Si elle est True, alors le bloc d’instructions qui suit le if est execute ;Sinon , alors le bloc d’instruction qui suit le else est execute .

Une fois les instructions de la structure if/else executee, le programmecontinue ensuite son deroulement avec la premiere instruction suivante.

CBGM (IUT-RT) Prog 1 Version 2017 50 / 97

Page 51: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure alternative elementaire : Si sinon Principe et syntaxe

L’art de la tabulation

La tabulation comme identifiant des blocs d’instructions

C’est l’indentation (tabulation avec la touche −−→−−→ ) qui definit les blocsd’instructions en Python :

vue d’une structure alternativeseule :

if condition_booleenne:# Instructions si# la condition est vraie# ...

else:# Instructions si# la condition est fausse# ...

# suite_du_programme

−−→−−→

vue du programme principal :

def main():#...if condition_booleenne:

# Instructions si# la condition est vraie# ...

else:# Instructions si# la condition est fausse# ...

# suite_du_programme

−−→−−→

−−→−−→

CBGM (IUT-RT) Prog 1 Version 2017 51 / 97

Page 52: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure alternative elementaire : Si sinon Exemple

Exemple

Exemple (Alternative 1, si sinon)

Les instructions :

1 chaine_var = input("Saisir un entier: ")2 var = int(chaine_var)3 if var > 4:4 # Instructions si la condition est vraie5 print("oui: {} est superieur a 4".format(var))6 else:7 # Instructions si la condition est fausse8 print("non: {} est inferieur ou egal a 4".format(var))9 # Fin du si/sinon et suite du programme

10 print("fin")

donnent a l’execution :Cas 1 :

Saisir un entier: 5oui: 5 est superieur a4

fin

Cas 2 :

Saisir un entier: 3non: 3 est inferieur ou egal a 4fin

CBGM (IUT-RT) Prog 1 Version 2017 52 / 97

Page 53: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure conditionnelle elementaire : Si Principe et syntaxe

Structure conditionnelle SiLa structure conditionnelle ”si” peut etre vue comme un cas particulier del’alternative si ... sinon lorsqu’il n’y a pas d’instructions dans le cas sinon.

Structure conditionnelle ”Si”

if condition_booleenne:# Instructions si la condition est vraiinstruction...instruction

# Fin de la condition et suite du programmesuite_du_programme

uniquement si la condition est vraie

”omis” sila conditionest fausse

suite du deroulement sequentiel

teste la condition_booleenne en evaluant si elle est True ou False.Si elle est True alors le bloc d’instructions qui suit le if est execute.Sinon (si la condition est False) le bloc d’instructions qui suit le if n’est pasexecute.Dans les deux cas, le programme se poursuit avec la premiere instruction dela suite_du_programme.

CBGM (IUT-RT) Prog 1 Version 2017 53 / 97

Page 54: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure conditionnelle elementaire : Si Exemple

Exemple

Exemple (Alternative 2, si)

Les instructions :

1 chaine_var = input("Saisir un nombre: ")2 var = float(chaine_var)3 if var < 0:4 # Instructions si la condition est vrai5 var = -var6 # Fin de la condition et suite du programme7 print("Sa valeur absolue est {}".format(var))8 print("fin")

donnent a l’execution :Cas 1 :

Saisir un nombre: 5Sa valeur absolue est 5fin

Cas 2 :

Saisir un nombre: -2Sa valeur absolue est 2fin

CBGM (IUT-RT) Prog 1 Version 2017 54 / 97

Page 55: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structure alternative multiple : si ... ou si ... sinon Principe et syntaxe

Alternative Si ... ou si ... sinon

Structure alternative Si ... ou si ... sinon

if condition_booleenne_1:instructioninstruction

elif condition_booleenne_2:instructioninstruction

else:instructioninstruction

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 alternativesDes que l’une des conditions booleennes est True alors les conditionstestees dans les elif qui suivent ne sont plus evaluees et le programmepasse a la suite du programmeLe bloc else est optionnelCBGM (IUT-RT) Prog 1 Version 2017 55 / 97

Page 56: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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

Alternative Si ... ou si ... sinon

Exemple (Alternative 3, si ... ou si ... sinon)

1 chaine_nombre = input("Un nombre: ")2 nombre = float(chaine_nombre)3 if nombre < 0:4 print(nombre, "est negatif")5 elif nombre > 0:6 print(nombre, "est positif")7 else:8 print(nombre, "est nul")9 print("fin")

donnent a l’execution :Cas 1 :

Un nombre: 22 est positiffin

Cas 2 :

Un nombre: -3-3 est negatiffin

Cas 3 :

Un nombre: 00 est nulfin

CBGM (IUT-RT) Prog 1 Version 2017 56 / 97

Page 57: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structures alternatives imbriquees

Structures alternatives imbriqueesLes structures alternatives peuvent etre imbriquees les unes dans les autresautant de fois qu’on le souhaite.

Exemple (Alternative 4, le meme test du signe avec des structuresalternatives imbriquees)

1 chaine_nombre = input("Un nombre: ")2 nombre = float(chaine_nombre)3 if nombre >= 0:4 if nombre > 0:5 print(nombre, "est positif")6 else:7 print(nombre, "est_nul")8 # fin du test nombre >09 else: # nombre <0

10 print(nombre, "est negatif")11 # fin du test nombre >= 0:12 print("fin")

Remarque : La encore, c’est l’indentation qui permet d’interpreter les blocsd’instructions.

CBGM (IUT-RT) Prog 1 Version 2017 57 / 97

Page 58: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structures alternatives imbriquees 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

CBGM (IUT-RT) Prog 1 Version 2017 58 / 97

Page 59: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structures alternatives imbriquees Bilan

Une meme programme, differentes structuresalternatives

Les trois implementations suivantes sont equivalentes :1 Avec 2 structures si sinon imbriquees :

1 if m1 >= 10 and m2 >= 10:2 print("valide")3 else: # Donc si (m1<10 or m2<10)4 if m1 >= 10 or m2 >= 10:5 print("rattrapage")6 else: # Donc si (m1<10 and m2<10)7 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: # et si (m1<10 or m2<10)4 print("rattrapage")5 else: # donc si (m1<10 and m2<10)6 print("refuse")

CBGM (IUT-RT) Prog 1 Version 2017 59 / 97

Page 60: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Structures alternatives imbriquees Bilan

Une meme programme, differentes structuresalternatives

3 Avec des conditions simples :

1 if m1 >= 10:2 if m2 >= 10: # et m1>=103 print("valide")4 else: # donc si m1>=10 et m2<105 print("rattrapage")6 else: # donc si m1<107 if m2 >= 10: # et m1<108 print("rattrapage")9 else: # donc si m1<10 et m2<10

10 print("refuse")

CBGM (IUT-RT) Prog 1 Version 2017 60 / 97

Page 61: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chapitre 4

Structures repetitives

CBGM (IUT-RT) Prog 1 Version 2017 61 / 97

Page 62: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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.

CBGM (IUT-RT) Prog 1 Version 2017 62 / 97

Page 63: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle for Le compteur d’iteration

Boucle for

Definition (Boucle for)

Pour repeter un bloc d’instructions N fois, une boucle for utilise un compteurd’iteration :

for compteur in range( N ) :instruction # Debut du bloc a repeter...instruction

# Fin du forsuite_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

CBGM (IUT-RT) Prog 1 Version 2017 63 / 97

Page 64: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle for Repetition

Une repetition simple

Exemple (Boucle 1, iterant le meme affichage 3 fois)

Les instructions suivantes :

1 for i in range(3):2 print("*", end=" ")3 print("fin")

iterent 3 fois l’affichage de * etdonnent :

* * * fin

� Demo PyCharm, PythonTutor

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 2 * * * Le compteur atteint le nbre d’iter. voulu3 2 * * * fin

CBGM (IUT-RT) Prog 1 Version 2017 64 / 97

Page 65: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle for Repetition en utilisant 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 (Boucle 2, affichage des nombres de 2 jusqu’a 6 (exclu))

1 for i in range(4):2 print(i + 2, end=" ")3 print("fin")

donnent � Demo PyCharm,PythonTutor :

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 4

2 3 5 2 3 4 5 Fin de la 4eme iter. de boucle1 3 2 3 4 5 Le compteur a atteint le nbre d’iter. voulu3 3 2 3 4 5 fin

CBGM (IUT-RT) Prog 1 Version 2017 65 / 97

Page 66: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle for Repetition en utilisant le compteur de boucle

Une repetition modifiant le compteur de boucle

... mais ë attention : le compteur de boucle ne doit en general pas etremodifie par les 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.

CBGM (IUT-RT) Prog 1 Version 2017 66 / 97

Page 67: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle for Repetition en utilisant le compteur de boucle

Exemple

Exemple (Boucle 3, ne pas modifier le compteur dans la boucle)

Les instructions :

1 for i in range(2):2 print(i, end=" ") # affichage3 i = 0 # raz du compteur4 print("fin")

donnent � Demo PyCharm,PythonTutor :

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 0 0 1 Le compteur atteint le nbre d’iter. voulu4 0 0 1 fin

CBGM (IUT-RT) Prog 1 Version 2017 67 / 97

Page 68: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 (Boucle 4, affichage des nombres de 2 jusqu’a 5 (exclu))

1 for i in range(2, 5):2 print(i, end=" ")3 print("fin")

donnent � Demo PyCharm,Demo PythonTutor :

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 4 2 3 4 Le compteur a atteint sa valeur finale3 4 2 3 4 fin

CBGM (IUT-RT) Prog 1 Version 2017 68 / 97

Page 69: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 (Boucle 5, affichage des nombres pairs de 2 jusqu’a 8 (exclu))

1 for i in range(2, 8, 2):2 print(i, end=" ")3 print("fin")

donne � Demo PyCharm,PythonTutor :

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 6 2 4 6 Le compteur atteint sa valeur max.3 6 2 4 6 fin

CBGM (IUT-RT) Prog 1 Version 2017 69 / 97

Page 70: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 avec lesinstructions 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.

CBGM (IUT-RT) Prog 1 Version 2017 70 / 97

Page 71: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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’

CBGM (IUT-RT) Prog 1 Version 2017 71 / 97

Page 72: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle while Repetition dependant d’une saisie utilisateur

Verification d’une saisie clavier

Exemple (Boucle 1&2, verification d’une saisie clavier)

Variante 1 :

1 rep = input("Tapez O/N ? ") # Initialisation2 while not (rep == "O" or rep == "N"): # Condition de boucle3 rep = input("O/N svp; recommencez : ") # 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 iO/N svp; recommencez : pO/N svp; recommencez : Ofin

pour la variante 2 (3 passagesdans la boucle) :

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

� Demo PyCharm

CBGM (IUT-RT) Prog 1 Version 2017 72 / 97

Page 73: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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 :

for compteur in range(ini, fin, inc) :

instruction...

suite_du_programme

compteur = iniwhile compteur < fin :

instruction...compteur += inc

suite_du_programme

CBGM (IUT-RT) Prog 1 Version 2017 73 / 97

Page 74: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Equivalence boucles for/while

Nombres impairs avec for et while

Exemple (Boucle 6&3, affichage des nombres impairs de 0 a 20)

Avec une boucle for :

1 for i in range(1, 20, 2):2 print(i, end=" ")3 print("fin")

Avec une boucle while :

1 i = 12 while i < 20:3 print(i, end=" ")4 i = i + 25 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 chaque boucle

� (for) Demo PyCharm, PythonTutor� (while) Demo PyCharm, PythonTutor

CBGM (IUT-RT) Prog 1 Version 2017 74 / 97

Page 75: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucles et structures alternatives

Boucles et structures alternativesY Les instructions d’une boucle peuvent contenir des structuresalternatives... C’est toujours l’indentation qui permet d’identifier les blocsd’instructions : ici les instructions du if sont indentees 1 fois par rapport au if

qui lui-meme est indente 1 fois par rapport au for.

Exemple (Boucle 7, affichage des nombres impairs de 0 a 10)

1 for i in range(20):2 if (i % 2) != 0:3 print(i, end=" ")4 else:5 print("-", end=" ")6 print("fin")

donne a l’execution :

- 1 - 3 - 5 - 7 - 9 - 11 - 13 - 15 - 17 - 19 fin

avec 20 iterations

� Demo PyCharm, PythonTutor

CBGM (IUT-RT) Prog 1 Version 2017 75 / 97

Page 76: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle avec variable d’accumulation Principe

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 (nombre ouchaine de caracteres), la multiplication de 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

CBGM (IUT-RT) Prog 1 Version 2017 76 / 97

Page 77: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle avec variable d’accumulation Accumulation additive

Exemple 1 : une variable d’accumulation additive

Exemple (Boucle 1, solde d’un compte bancaire apres un nombre fixe demois)

Application : afficher le solde d’un compte bancaire initialement egal a 0, surlequel est verse un montant fixe de 50 euros tous les mois, apres 4 ans defonctionnement :

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)5 print("fin")

donne a l’execution � Demo PyCharm, PythonTutor :

solde final : 2350

Y Il n’y a pas trace des valeurs intermediaires du solde (cf. listes en Prog2)CBGM (IUT-RT) Prog 1 Version 2017 77 / 97

Page 78: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle avec variable d’accumulation Accumulation additive

Exemple 2 : une variable d’accumulation additive

Exemple (Boucle 2, 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 son titulairepour 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("Nombre d’annees :", annee)7 print("Solde :", solde)

donne a l’execution :

Nbre d’annees : 4Solde : 860.5620439082031

� Demo PyCharm,PythonTutor

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

CBGM (IUT-RT) Prog 1 Version 2017 78 / 97

Page 79: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle avec variable d’accumulation Accumulation additive

Exemple 3 : avec variable d’accumulation additive

Exemple (Boucle 3, calcul de la somme de tous les entiers de 1 jusqu’a 36(inclus))

1 somme = 0 # Initialisation2 for i in range(1, 36 + 1):3 somme = somme + i4 print("somme finale :", somme)

donne :

somme finale : 666

� Demo PyCharm, PythonTutor

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.

CBGM (IUT-RT) Prog 1 Version 2017 79 / 97

Page 80: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Boucle avec variable d’accumulation Accumulation multiplicative

Exemple avec variable d’accumulation multiplicative

Exemple (Boucle 4, 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 PyCharm,PythonTutor

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

CBGM (IUT-RT) Prog 1 Version 2017 80 / 97

Page 81: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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("*", end=" ")4 print("")

donne :

** *

� Demo PyCharm, PythonTutor

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 1 j atteint sa valeur max.4 2 1 \n Fin de la 1ere iter. de la boucle sur i1 3 1 increment sur i2 3 1 j initialise a 13 3 1 * Fin de la 1ere iter. de la boucle sur j2 3 2 increment sur j3 3 2 * Fin de la 2eme iter. de la boucle sur j2 3 2 j atteint sa valeur maximale4 3 2 \n Fin de la 2eme iter. de la boucle sur i1 3 2 i atteint sa valeur max.

CBGM (IUT-RT) Prog 1 Version 2017 81 / 97

Page 82: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chapitre 5

Fonctions

CBGM (IUT-RT) Prog 1 Version 2017 82 / 97

Page 83: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Fonctions Definition

Fonction I

Definition (Fonction)

Une fonction est un bloc/une suite d’instructions autonome qui decrit unetache dans le but de structurer le programme en taches simples.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)

CBGM (IUT-RT) Prog 1 Version 2017 83 / 97

Page 84: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Fonctions Definition

Fonction II

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 et bet retourne la valeur la plus grande parmi a et b.

CBGM (IUT-RT) Prog 1 Version 2017 84 / 97

Page 85: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

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

CBGM (IUT-RT) Prog 1 Version 2017 85 / 97

Page 86: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Fonctions Syntaxe de declaration d’une fonction

Syntaxe de declaration

Syntaxe de declaration

def nom(param1, param2, ..., paramN ) :["[""] commentaires [""]"] # documentation[assert type(param) is ...] # pre-conditions

instruction # codeinstruction...return [valeur] # renvoie de la valeur de retour

# avec sortie de la fonction# fin de la fonction

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, alors la fonction renvoie None

CBGM (IUT-RT) Prog 1 Version 2017 86 / 97

Page 87: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Exemples de fonctions Fonction a un parametre

Exemple d’une fonction a un parametre

Exemple (Declaration de la fonction factorielle)

La fonction factorielle (avec son unique parametre) est declaree par :

1 def factorielle(n):2 """Calcule et renvoie la factorielle du parametre entier positif n,

valant n!"""3 res = 14 for i in range(1, n+1):5 res *= i6 return res # Valeur de retour

et peut etre appellee avec :

1 res = factorielle(4)2 print("4! vaut :", res)3 res = factorielle(3)4 print("3! vaut :", res)

ce qui donne� Demo PyCharm,PythonTutor :

4! vaut : 243! vaut : 6

CBGM (IUT-RT) Prog 1 Version 2017 87 / 97

Page 88: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Exemples de fonctions Fonction a deux parametres

Exemple d’une fonction a deux parametres

Exemple (La fonction somme2)

La fonction somme2 (avec ses deux parametres a et b) est declaree par :

1 def somme2(a, b):2 """Calcule et renvoie la somme de deux nombres (ou de deux chaines)

a et b"""3 total = a + b4 return total

Elle peut etre appelee avec :

1 res = somme2(10, 2)2 print("10+2 vaut :", res)3 res = somme2(’a’, ’b’)4 print("a+b vaut :", res)

ce qui donne� DemoPyCharm,PythonTutor :

10+2 vaut : 12a+b vaut : ab

Remarque FFF : cette fonction est un exemple de genericite puisqu’ellepeut etre utilisee avec n’importe quel type d’objets tant que l’addition + estdefinie.

CBGM (IUT-RT) Prog 1 Version 2017 88 / 97

Page 89: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Exemples de fonctions Fonction a plusieurs valeurs de retour

Exemple d’une fonction a plusieurs return

L’instruction return peut apparaıtre plusieurs fois, mais une seule seraevaluee.

Exemple (La fonction strctmax avec differentes instructions return)

1 def strctmax(a, b):2 """Retourne le parametre strictement le plus grand, None sinon"""3 if a > b:4 return a5 elif b > a:6 return b7 else: # si a == b8 return

Elle peut etre appelee avec :

1 res = strctmax(1, 2)2 print("strctmax de 1 et 2 :", res)3 res = strctmax(3, 1)4 print("strctmax de 3 et 1 :", res)5 res = strctmax(4, 4)6 print("strctmax de 4 et 4 :", res)

ce qui donne� DemoPyCharm, PythonTutor :

strctmax de 1 et 2 : 2strctmax de 3 et 1 : 3strctmax de 4 et 4 :None

CBGM (IUT-RT) Prog 1 Version 2017 89 / 97

Page 90: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Portee des variables dans une fonction Notion de portee locale

Rappel : Contexte de nommage et memoire

1 L’execution d’un programme s’appuie sur un contexte (de nommage) desvariables et sur la memoire (vive) qui stocke leur valeur.

2 Le programme principal utilise le contexte principal3 Un appel a une fonction cree un contexte local (qui lui est propre), dans

lequel sont declares les parametres et les variables de la fonction :Ce contexte local est efface (n’existe plus) au retour (return) de la fonctionIl est recree (”a neuf”) a chaque nouvel appel de la fonctionLes parametres recoivent une copie de la reference des arguments

4 Les contextes principal et local sont completement separes, de sortequ’il n’y a pas d’interferences entre eux : on dit alors que la portee desvariables d’une fonction est locale a la fonction (c’est a dire lesvariables n’existent que lors de l’appel a la fonction - elles peuvent doncavoir le meme nom que des variables du programme principal sansconflit)

5 La memoire est partagee par le programme principal et la (les)fonction(s)

CBGM (IUT-RT) Prog 1 Version 2017 90 / 97

Page 91: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Portee des variables dans une fonction Contexte local d’une fonction

Contexte local d’une fonction sans parametre

Exemple

Soit la fonction :

1 def puissance() :2 nbr = 33 puiss = 24 res = nbr ** puiss5 return res

appellee dans le programmeprincipal avec :

1 nbr = 12 res = puissance()

Contexteprincipal Memoire

nbr 1

Contextelocal

Appel : puissance()

nbr3

puiss2

res9res

return res

Le contexte de la fonction n’existe qu’au moment de son evaluation : lavariable locale nbr differe de nbr, au meme titre que res differe de res.L’objet en memoire, renvoye par la fonction, est celui recupere dans leprogramme principal (et donc ici affecte a res)

CBGM (IUT-RT) Prog 1 Version 2017 91 / 97

Page 92: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Portee des variables dans une fonction Cas des parametres

Contexte local d’une fonction avec parametres

Exemple

Soit :

1 def somme( a, b ) :2 a = 33 res = a + b4 return res

appelee avec :

1 a = 12 b = 23 res = somme( a, b )4 mais = a + b

Contexteprincipal Memoire

Contextelocal

3

a 1 a

b 2 b

res5res

3mais

%

Appel : somme()

return res

Lors de l’appel, les parametres a et b (n’existant que dans le contextelocal) referencent les meme objets que a et btoute reaffectation des objets designes par les parametres n’aurad’impact que dans la fonction

CBGM (IUT-RT) Prog 1 Version 2017 92 / 97

Page 93: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Chaınage de fonctions

Chainage de fonctionsUne fonction peut en appeler une autre : toutes deux auront leur proprereturn.

Exemple (La fonction somme4)

La fonction somme4 utilise somme2 pour sommer ses 4 parametres :

1 def somme4(a, b, c, d):2 """Calcule la somme des 4

parametres en utilisantsomme2"""

3 res1 = somme2(a, b)4 res2 = somme2(c, d)5 res = somme2(res1, res2)6 return res

1 def somme2(a, b):2 """Calcule et renvoie la

somme de deux nombres (ou dedeux chaines) a et b"""

3 total = a + b4 return total

Elle peut etre appelee pour differents calculsavec :

1 res = somme4(1, 2, 3, 4)2 print("1+2+3+4 :", res)3 res = somme4(’a’, ’b’, ’c’, ’d’)4 print("a+b+c+d :", res)

ce qui donne� DemoPyCharm, PythonTutor :

1+2+3+4 : 10a+b+c+d : abcd

CBGM (IUT-RT) Prog 1 Version 2017 93 / 97

Page 94: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Les prototypages classiques de fonctions

Les prototypages classiques de fonctions

Les fonctions forment trois grandes categories (prototypages) :1 Les fonctions dediees aux saisies clavier de l’utilisateur, qui :

n’ont en general pas de parametrerenvoient la valeur saisie

2 Les fonctions dediees a l’affichage, qui :peuvent avoir en parametres des donnees a afficher,s’occupent de l’affichage console avec print,ont pour valeur de retour None

3 Les fonctions dediees aux calculs/traitements, qui :ont des parametres,ont une valeur de retour, renvoyee par return et dependante du traitement,n’ont pas de saisie-clavier avec input car ce sont les arguments d’appel quidirigent l’evaluation de la fonctionne font pas d’affichage avec print (sauf pour aider au deboggage duprogramme)

L’affichage du resultat est alors faite, soit par le programme principal, soitpar une fonction dediee a l’affichage.

CBGM (IUT-RT) Prog 1 Version 2017 94 / 97

Page 95: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Les prototypages classiques de fonctions

Exemple des 3 prototypages de fonctions

Exemple (Termes d’une suite)

Pour un programme qui calcule les termes de la suite un+1 = 2un + 1 avecu0 = 1 et affiche la valeur du terme de rang N, N etant choisi par l’utilisateur,on peut trouver :

1 la fonction dediee a la saisie clavier de N :

1 def saisie():2 """Demande un rang et le renvoie en verifiant la saisie"""3 nbre = eval(input("Un nbre: "))4 while not(isinstance(nbre, int) and nbre >= 0):5 nbre = eval(input("Un nbre svp; recommencez: "))6 return nbre

2 la fonction dediee a l’affichage du terme un :

1 def affichage(u, n):2 """Affichage du terme u et de son rang n"""3 print("u_{} vaut {}".format(n, u))4 return

CBGM (IUT-RT) Prog 1 Version 2017 95 / 97

Page 96: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Les prototypages classiques de fonctions

Exemple des 3 prototypages de fonctions

Exemple (Termes d’une suite (suite))3 la fonction dediee au calcul du terme un de la suite :

1 def terme_np1(n):2 """Calcule le terme de rang n de la suite"""3 u = 1 # Terme initial u04 for i in range(1, n+1):5 u = 2*u + 1 # Calcul du terme un+1 en fonction de un6 return u

4 les instructions du programme principal :

1 n = saisie() # Rang souhaite par l’utilisateur ?2 u = terme_np1(n) # Calcul du terme de rang N3 affichage(u, n) # Affichage

L’execution donne par exemple :

Un nbre: 5u_5 vaut 63

CBGM (IUT-RT) Prog 1 Version 2017 96 / 97

Page 97: Programmation Python - Université Grenoble-Alpes - …chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/document/... · M2207 Programmation 2 S3 M3206 POO S4 M4206C Programmation

Ou declarer une fonction?

Ou declarer une fonction?Python etant un langage interprete, il est imperatif, dans un script, de definirune fonction avant de l’utiliser.

Exemple (Script demoTriangle.py)

1 # -*- coding: UTF-8 -*-2 """3 Script: td_sphinx/demoTriangle4 Auteur: pycharm5 Date: 01/09/20176 """7

8 # Fonctions9 def ligne(nb):

10 """Renvoie une ligne de nb etoiles (type str)"""11 chaine = ’*’*nb12 return chaine13

14 def triangle(nb):15 """Renvoie un triangle d’etoiles dont la derniere ligne contient nb

etoiles (type str)"""16 res = ""17 for n in range(1, nb+1):18 res += ligne(n) + ’\n’19 return res20

21

22 # Programme principal23 def main():24 tr = triangle(5)25 print(tr)26

27 if __name__ == ’__main__’:28 main()

CBGM (IUT-RT) Prog 1 Version 2017 97 / 97