77
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 2016 CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 1 / 77

Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Embed Size (px)

Citation preview

Page 1: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Programmation Python

Remy CHOLLET*Cleo BARAS

Lorraine GOEURIOTJerome MARTIN

Mails : [email protected]

IUT Departement Reseaux & Telecommunications, 1ere annee

Version 2016

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 1 / 77

Page 2: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Chapitre 1

Introduction

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 2 / 77

Page 3: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

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

L’informatique en R&T

Sem. Modules IntituleS1 M1105 Linux utilisateur

M1103 Architecture des equipements informatiquesM1106 Initiation au developpement WebM1207 Programmation 1

S2 M2105 Web dynamiqueM2104 SGBDM2207 Programmation 2M2109 Gestion de projets informatiques

S3 M3206 POOS4 M4206C Programmation sur mobiles

M4207 DSP

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 3 / 77

Page 4: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

L’informatique en R&T Planning

M1207 - Programmation 1

ModalitesCours/TD : 1h + 7 × 2hTP : 2h + 6 × 2hEvaluation (semaine 3) : DS papier 1h30 ; DS machine 1h30

Planning des seancesSemaine CM/TD TP45 Introduction, variable, expression46 Bases du langage47 Structures alternatives TD machine : prise en main de l’IDE48 Structures alternatives suite TP1 : Types, test49 Structure repetitive TP2 : Boucles simples50 Structure repetitive suite TP3 : Boucles imbriquees1 Fonctions TP4 : Fonctions2 Fonctions suite TP5 : Fonctions suite3 TP6 : Fonctions avancees

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 4 / 77

Page 5: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition L’informatique

Informatique

Definition (Informatique (data processing), algorithme)

L’informatique est la science du traitement automatique (software) del’information (data), dont decoule des programmes qui implementent desalgorithmes a l’aide d’un langage de programmation.

DonneesProgramme(software) Resultats

Ordinateur

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 5 / 77

Page 6: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition L’informatique

Algorithme

Definition (Algorithme)

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

Exemple (Des algorithmes)

Recette de cuisine, notice de montagePrise d’un medicament contre la toux : ”En cas de toux, prendre, saufavis contraire du medecin, un comprime toutes les 4 heures, jusqu’adisparition des symptomes. Pour les enfants, un comprime toutes les 8heures suffit.”Resolution de ax2 + bx + c = 0 : par dichotomie, solution exacte ...

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 6 / 77

Page 7: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition L’informatique

Un exemple d’algorithme

Exemple (Prise d’un medicament contre la toux)

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

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 7 / 77

Page 8: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition Les langages de programmation

Langage de programmation

Definition (Langage de programmation)

C’est un ensemble de caracteres, symboles, mots-cles et reglesd’assemblage (equivalents au vocabulaire et a la grammaire d’une langue),utilise pour donner des instructions a l’ordinateur.

Evolution des langages1 Langage machine de plus bas niveau2 Langage assembleur (mnemonique, macros, variables)3 Langage structure :

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

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 8 / 77

Page 9: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition Les langages de programmation

Language compile vs interprete

2 approches1 Compilation : traduction d’un code source vers un code cible executable

code executable directement par l’OSBytecode executable par machine virtuelle (cf. Java au S3)

2 Interpretation : langage converti en bytecode au fur et a mesure del’execution

lire et analyser une instruction (ou une expression)si l’instruction est syntaxiquement correcte, l’executer (ou evaluerl’expression)passer a l’instruction suivante

Pour Python889

tout le code source est verifie syntaxiquementun bytecode est produit automatiquement pour execution dansl’interpreteur Python (via une machine virtuelle)est vu comme un langage interprete

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 9 / 77

Page 10: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition Les langages de programmation

Python : pourqui, pourquoi

Python?

Cree par Guido van Rossum en 19901er objectif : un nouveau shellusages industrialises, forte progression ces dernieres anneesOpen source, large communaute, bonne portabiliteplutot haut niveau, plutot pragmatiqueCaracteristiques :

l’indentation comme syntaxetout est objetbibliotheques tres diverses (systeme, calcul, imagerie, SGBD, Web etc...)

Pourquoi Python?

Bon langage pour la pedagogieTres bon langage pour l’administrationAspects modernes (iterateurs, comprehension, introspection...)

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 10 / 77

Page 11: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Definition Les langages de programmation

Bonnes pratiques

Qualites d’un logiciel

FiabiliteRobustesseLisibilite du code

PortabiliteMaintenabilitePerformance

Concretement :Nommage pertinentStructurer sous forme de ”boites noires” : modules et les fonctions etaussi classesDocumenter l’interface des boıtes noires, commenterTests unitairesLimiter les dependances, chercher la simplicite et la clarte

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 11 / 77

Page 12: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Chapitre 2

Variables et expression

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 12 / 77

Page 13: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Qu’est ce qu’une variable?

Variables

Definition (Variable)

Une variable designe un espace memoire dont on peut modifier le contenuavec un acces simple et lisible. Elle :

1 est designee par un identificateur (ou nom)2 memorise une valeur, evoluant avec le flot d’instructions mais unique a

un instant donne3 presente un type, precisant la nature de la valeur qu’elle memorise

� Demo

Remarque : Une variable possede egalement :une duree de vie, qui debute a la declaration de la variable et s’achevelorsque l’espace memoire occupe par la variable est libereune portee, zone du programme dans laquelle la variable est accessible

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 13 / 77

Page 14: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Qu’est ce qu’une variable?

Complements sur les variables889

Choix de l’identificateurL’identificateur est un nom :Í utilisant des lettres (sensibles a la casse), des chiffres ou _ë interdisant les caracteres accentues et speciaux (comme $, #, etc) ; les

mots-cles de Python ; les noms commencant par un nombre.

Mots-cles Python interdits :

and del from not whileas elif global or with

assert else if pass yieldbreak except import printclass exec in raisecontinue finally is returndef for lambda try

L’usage (nommage lowerCamelCase) veut que les noms de variablessoient en minuscule et n’utilisent une majuscule que pour la 1ere lettrede chaque mot, comme dans tableDesMatieres.

Allocation memoire

Python offre un systeme de gestion automatique de la memoire, disposantd’un ramasse-miette (garbage collector ) qui efface automatiquement toutesles donnees non referencees par des variables.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 14 / 77

Page 15: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Type d’une variable

Type d’une variable

Definition (Type d’une variable)

Le type est la nature de la valeur memorisee par la variable. Il est defini a lacreation de la variable et est dynamique, c’est a dire determine lors del’execution du programme a.

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

Quelques types (simples) de variables en Python

Nom Type Exemple Remarquebooleen bool (boolean) False ; Trueentier int (integer) -2 ; 10 exprime en base 10 (par defaut),

-0b10 ; 0b1010 en binaire avec prefixe 0b,-0x2 ; 0xA en hexa avec prefixe 0x (ou 0X),-0o2 ; 0o12 en octal avec prefixe 0o (ou 0O)

flottant float 1.34 ; -0.6 avec le separateur .chaıne de caracteres str (string) "Spam" en la delimitant par ’ ou " ou """

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 15 / 77

Page 16: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Type d’une variable

Type d’une variable

Fonctions autour du type

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

Types numeriques (attention aux problemes de precision !)888

Entiers (signe) : int de precision limitee (entre ≈ [-sys.maxint,sys.maxint]), long de precision illimitee au delaDecimaux : float de precision limitee (entre [sys.float_info.minsys.float_info.max])Complexe : complex base sur les float. Par exemple : c=1+3j avecc.real la partie reelle flottante et c.imag la partie imaginaire

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 16 / 77

Page 17: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Affectation d’une variable

Declaration et affectation d’une variable

Definition (Declaration/affectation)

En Python, une valeur est declaree et affectee en meme temps a :la declaration consiste a choisir l’identificateur de la variablel’affectation lui associe une valeur, dont le type determine celui de lavaleur. Elle utilise le symbole = et se fait dans le sens droite vers gauche.

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

Attention au sens d’une affectation

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 17 / 77

Page 18: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Affectation d’une variable

Exemples de declaration et affectation

Exemple (Des affectations)

I x = 2 declare la variable x, lui donne la valeur entiere 2 et lui confere letype int

I y = 3.14 declare la variable y, lui donne la valeur flottante 3.14 et luiconfere le type float

I chaine = "Eggs" declare la variable chaine, lui donne pour valeur lachaine de caracteres "Eggs" et lui confere le type str

I chaine = "3.14" re-declare la variable chaine, lui donne cette fois pourvaleur la chaine de caracteres "3.14" et le type str

Remarque : Python a un typage fort mais :les types numeriques peuvent etre melanges dans les expressions

888 lorsqu’on travaille sur les booleens, toute valeur (ou objet) egale a0 (ou vide ou None) est consideree comme False ; tout le reste est vuecomme True.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 18 / 77

Page 19: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Conversion de type

Transtypage (casting)

Fonctions de conversion de type

Les fonctions suivantes convertissent (si cela est possible) la valeur passeeen parametre dans le type du meme nom :

Fonction Traitementint(valeur) troncature de la valeur a l’entier le plus proche de zerofloat(valeur) conversion de la valeur en flottantstr(valeur) conversion de la valeur numerique en chainebool(valeur) False si valeur vaut 0 ou True

Exemple (Conversion de type)

a = int(3.0) ou a = int("3") sont equivalents a a = 3 avec a detype int

chaine = str(3.2) est equivalent a chaine="3.2" de type str

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 19 / 77

Page 20: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Variables Conversion de type

Conversion de type

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

i=int() donne i=0

f=float() donne f=0.0

s=str() donne s=""

b=bool() donne b=False

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 20 / 77

Page 21: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Expression Definitions

Expression

Definition (Expression, operateurs)

Une expression est une suite de symboles qui sera interpretee commeun calcul ayant pour resultat une valeur d’un certain type.Elle utilise des operateurs (+, *, ...) et des operandes (valeurs,variables, expressions).La valeur de l’expression, si elle doit etre reutilisee dans la suite duprogramme, devra etre stockee dans (affectee a) une variable.

Exemple (Des expressions)

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

expression booleenne : x==5 (x est-il egal a 5?)

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 21 / 77

Page 22: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Expression Operateurs

Operateurs

Principaux operateurs des expressions

Symb. Signification Symb. Signification+ addition pour int, float ;

concatenation pour str* multiplication pour int, float ;

repetition pour str- soustraction pour int, float / division euclidienne pour int

; division decimale pour float(propre a Python 2 pas vrai en3)

% modulo (ou reste de la divisionentiere) pour int

** exposant, par exemple 3**2

vaut 9or union logique pour les boolean and intersection logique pour les

boolean

not negation logique pour lesboolean

// 888 division euclidiennequels que soient les operandes

� Demo

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 22 / 77

Page 23: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Expression Priorite des operateurs

Priorite des operateurs dans les expressions

Priorite des operateurs, par ordre croissant, avec groupement de gauche adroite si priorites egales

Priorite Operateur DescriptionBasse or ou logique

and et logiquenot non logique<, <=, >, >=, <>, !=, == comparaison| ou bit a bitˆ et bit a bit& et bit a bit<<, >> decalage bit a bit+, - addition et soustraction*, /, //, % Multiplication, division, reste+x, -x, ˜x signe positif, signe negatif, non bit a bit** exposant

Haute (expression) expression delimitee par des parentheses

Remarque : en cas de doute 1, utilisez des parentheses

1. Liste detaillee sur https://docs.python.org/2/reference/expressions.html#operator-precedence

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 23 / 77

Page 24: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions

Instructions

Definition (Instructions)

Une instruction est un ordre a executer par le programme; c’est une etapequi dicte a la machine ce qu’elle doit effectuer avant de passer a l’instructionsuivante. Par exemple :

affecter une valeur a une variableafficher une information a l’ecranrecuperer une saisie clavier faite par l’utilisateur

Executer une instruction implique d’evaluer des expressions.

Definition (Programme)

Un programme est une suite d’instructions, qui s’executent les unes apres lesautres - autrement dit sequentiellement.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 24 / 77

Page 25: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’affectation

Instructions d’affectation

Exemple (Des instructions d’affectation)

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

Variables

toto

titi

Valeurs/donnees

31

4

7

%

Ligne 1 : declare la variable toto et lui affecte la valeur 3Ligne 2 : incrementation : evalue l’expression toto + 1 et affecte leresultat (ici 4) a la variable (declaree par la meme occasion) titiLigne 3 : affectation composee : est equivalente atiti = titi + toto. Evalue l’expression titi + toto et modifie lavaleur de titi en lui affectant le resultat (ici 4+3, soit 7)

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 25 / 77

Page 26: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Instruction de sorties : ecriture sur l’ecran

Ecriture vers l’ecran

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

Exemple (Affichage de chaınes de caracteres dans un interpreteur python)

>>>msg1 = "Bonjour">>>msg2 = "Au revoir">>>print msg1Bonjour>>>print msg2Au revoir>>>print msg1, msg2Bonjour Au revoir>>>print msg1 + msg2BonjourAu revoir

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 26 / 77

Page 27: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Instruction de sorties : ecriture sur l’ecran

Exemple (Affichage de valeurs de variables)

>>>EUR = 1>>>CAD = 1.4>>>print EUR, "euro vaut", CAD, "dollar canadien"1 euro vaut 1.4 dollar canadien

­ Pour faire une impression sans retour a la ligne on termine l’instruction parla virgule (sans effets en mode interactif)

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 27 / 77

Page 28: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Formatage de chaıne

Formatage de chaıne et specification de conversion

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

"ceci est une chaine formatee %format" % valeur|variable

La valeur (ou variable) placee apres l’operateur de conversion % sera insereedans la chaıne a l’emplacement balise par le specificateur de conversion.

Specif. Format Specif. Format%d Entier %nd Entier sur n caracteres

min%0nd Entier sur n caracteres min et des 0 non significatifs%f Flottant avec 6 decimales %.mf Flottant avec m decimales%nf Flottant dans un champ

de n caracteres (’.’ in-clus)

%n.mf Flottant dans un champde n caracteres avec mdecimales

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 28 / 77

Page 29: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Exemples

Exemple (Fomatage d’une chaıne avec un entier)

>>>val = 10>>>"%d" % val’10’>>>print "La valeur est : %d" % valLa valeur est : 10>>>"%04d" % (val+5)’0015’

Exemple (Formatage d’une chaıne avec un flottant)

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 29 / 77

Page 30: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Exemples889

Exemple (Affichage de chaınes plus complexes)

>>> choux = 2>>> carottes = 6>>> print "%d choux" % choux , "et %d carottes" % carottes2 choux et 6 carottes>>> print "%d choux" % choux + " et %d carottes" % carottes2 choux et 6 carottes>>> print "%d choux et %d carottes" % (choux, carottes)2 choux et 6 carottes

>>> TC = 23.5 # temperature en degres Celcius>>> print "%5.1f C" % TC +" vaut %5.1f F" % (TC*9./5+32)23.5 C vaut 74.3 F>>> print "%5.1f C vaut %5.1f F" % (TC, TC*9./5+32)23.5 C vaut 74.3 F

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 30 / 77

Page 31: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Autres formatages de chaıne

Autres specifications de conversion888

Specif. Format Specif. Format%b Entier en binaire (Python

> 3.0)%o Entier en Octal

%x Entier en Hexadecimal %X Entier en Hexadecimalavec lettres capitales

%s Une chaıne (a incluredans une chaıne)

%ns Une chaıne sur n ca-racteres minimum

Exemple (Quelques exemples)

>>>"Un octal : %o, " % 10 + "Un hexa : %X" % 0o12’Un octal : 12, Un hexa : A’>>> chaine = "toto">>> "%s" % chaine # Renvoie une chaine de caractere’toto’>>> "%6s" % chaine # Renvoie une chaine de caractere’ toto’

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 31 / 77

Page 32: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Instructions d’entree : lecture a partir du clavier I

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

1 affiche a l’ecran le message tapez une chaine

2 capture les caracteres saisis au clavier jusqu’a l’appui sur Enter

3 les renvoient dans la variable chaine

Le type de chaine est obligatoirement str.

Exemple (Saisie d’une chaine de caracteres)

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 32 / 77

Page 33: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Instructions d’entree : lecture a partir du clavier II

Lecture des nombres saisis au clavierL’instruction nbre = input("Tapez un nombre") :

1 affiche a l’ecran le message Tapez un nombre

2 capture le nombre saisi au clavier jusqu’a l’appui sur Enter

3 le renvoie dans la variable nbre

Le type de nbre est adapte automatiquement par Python a la valeur saisie.

Exemple (Saisies de nombres)

Un entier :

>>>nbre= input("Une valeur: ")Une valeur: 12>>>print nbre, type(nbre)12 <type ’int’>

Un flottant :

>>>var= input("Une autre: ")Une autre: -3.5>>>print var, type(var)-3.5 <type ’float’>

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 33 / 77

Page 34: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Instructions Instructions d’entrees/Sorties

Instructions d’entree : lecture a partir du clavier III

Remarque888 : l’instruction raw_input peut etre utilisee pour saisir desnombres en lui associant un transtyptage (int(), float(), ...) qui convertitles caracteres renvoyes par raw_input dans le type attendu :

Pour la saisie d’un entier, input( "Saisir un entier") est equivalenta int(raw_input( "Saisir un entier"))

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

Pour une saisie quelconque, input( "Saisir une donnee") estequivalent a eval(raw_input( "Saisir une donnee"))

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 34 / 77

Page 35: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Chapitre 3

Structures alternatives

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 35 / 77

Page 36: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Structure conditionnelle elementaire : Si Principe et syntaxe

Conditionnelle Si

Structure conditionnelle ”Si”

1 if condition_booleenne :2 instruction3 ...4 instruction5 suite_du_programme

s’execute uniquement si la conditionest vraie puis continue

ne s’execute pas sila condition est fausseet poursuit directementavec la suite

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

Dans tous les cas, le programme se poursuit avec suite_du_programme.

Bloc d’instruction

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 36 / 77

Page 37: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Structure conditionnelle elementaire : Si Exemple

Exemple

Exemple (Si)

Le programme :

1 var = input("Saisir une valeur : ")2 if var < 0 :3 var = -var4 print "Sa valeur absolue est", var5 print "fin"

donne a l’execution :Cas 1 :

1 Saisir une variable : 52 Sa valeur absolue est 53 fin

Cas 2 :

1 Saisir une variable : -22 Sa valeur absolue est 23 fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 37 / 77

Page 38: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Structure alternative elementaire : Si sinon Principe et syntaxe

Alternative ”Si ... sinon”

Structure alternative ”Si ... sinon”

1 if condition_booleenne :2 instruction3 instruction4 else :5 instruction6 instruction7 suite_du_programme

a executer uniquement sila condition est True

a executer uniquement sila condition est False

teste la condition_booleenne en evaluant si elle est True ou False.Si elle est True alors le bloc d’instructions qui suit est execute ;Sinon le bloc d’instruction n’est pas execute.Le programme continue ensuite son deroulement.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 38 / 77

Page 39: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Structure alternative elementaire : Si sinon Exemple

Alternative Si ... sinon

Exemple (Si alors)

Le programme :

1 var = input("Saisir une variable : ")2 if var > 4 :3 print "oui : ", var, " est superieur a 4"4 else :5 print "non : ", var, " est inferieur ou egal a 4"6 print "fin"

donne a l’execution :Cas 1 :

1 Saisir une variable : 52 oui : 5 est superieur a 43 fin

Cas 2 :

1 Saisir une variable : 32 non : 3 est inferieur ou

egal a 43 fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 39 / 77

Page 40: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Conditions booleennes Definition

Conditions booleennes

Condition booleenne

Cette condition designe une expression ayant pour valeur True ou False.

Elles mettent en jeu :1 des operateurs de comparaison qui comparent deux donnees du

meme type (int, float, string) et renvoie un booleen2 des operateurs booleens entre conditions booleennes, souvent resultat

d’une comparaison entre deux valeurs

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 40 / 77

Page 41: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Conditions booleennes Operateurs de comparaison

Operateurs de comparaison

Operateurs de comparaison

Op. Signification Op. Signification== egal (en terme de

contenu)!= different

> strictement superieur < strictement inferieur>= superieur ou egal <= inferieur ou egalX<Y<Z Y est compris entre X et Z is egal (meme objet)

Exemple (Des conditions booleennes)

La variable spam est-elle egale a 0? s’ecrit spam == 0. Lorsque spam

vaut 0, la condition renvoie True ; lorsque spam veut 3, elle renvoie False

La variable spam est-elle differente de "eggs" s’ecrit spam \= ”eggs”.La variable spam est-elle comprise entre -1 et 2.3? s’ecrit-1 < spam < 2.3

La moyenne des notes m1 et m2 est-elle superieure a 10? s’ecrit(m1+m2)/2 > 10

La note m1 est-elle divisible par 3 ? s’ecrit m1%3 == 0

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 41 / 77

Page 42: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Conditions booleennes Operateurs booleens

Operateurs booleens

Operateurs booleens

Op. Signification Op. Signification Op. Significationand et logique or ou logique not negation

Rappel : Table de verite des operateursand True False

True True False

False False False

or True False

True True True

False True False

not True False

False True

Remarque : Attention aux priorites ! Dans le doute, abuser des parenthesesqui ameliorent souvent la lisibilite !

Exemple (Des resultats de tests booleens)

True and False est egal a False

True or False est egal a True

(True and True)or False est egal a True

True and not(False) est egal a True

Exemple (Des conditions booleennes)

La variable jour est-elle egale a ”lundi” et la variable annee est-ellesuperieure a 2000? s’ecrit (jour == "lundi")and (annee > 2000)

Le jour est-il dans le WE? s’ecrit(jour == "samedi")or (jour == "dimanche")

La variable spam est-elle differente de 0? peut s’ecrire spam != 0 maisaussi (spam > 0)or (spam < 0)

La variable spam est-elle comprise entre 0.5 inclu et 1.5? peut s’ecrire(spam >= 0.5)and (spam < 1.5) ou de maniere equivalente0.5 <= spam < 1.5 ou encore 1.5 > spam >= 0.5

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

Exemple (Application)

Faire l’exercice 4 du TD sur les annees bissextiles

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 42 / 77

Page 43: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

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

Alternative Si ... ou si ... sinon

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

1 if condition_booleenne_1 :2 instruction3 instruction4 elif condition_booleenne_2 :5 instruction6 instruction7 else :8 instruction9 instruction

10 suite_du_programme

s’execute si la condition 1 est True

s’execute si la condition 1 est Falseet la condition 2 est True

s’execute si les conditions 1 et 2sont False

Remarques :Le bloc elif peut apparaıtre autant de fois que l’on souhaite tester deconditions alternativesLe bloc else est optionnel

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 43 / 77

Page 44: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

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

Alternative Si ... ou si ... sinon

Exemple

1 nombre = input("Entrez un nombre : ")2 if nombre<0 :3 print nombre, ’est negatif’4 elif nombre > 0 :5 print nombre, ’est positif’6 elif nombre == 0 :7 print nombre, ’est nul’8 else :9 print nombre, "n’est pas un nombre"

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 44 / 77

Page 45: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

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

Une meme programme, differentes structuresalternatives

Exemple (Algo)

Une UE contient 2 modules : M1 et M2.L’UE est valide si les notes aux deux modules sont superieures a 10Il y a rattrapage si un seul des modules a une note superieure a 10Si les deux notes sont inferieures a 10, l’UE n’est pas validee

Ici, les variables m1 et m2 representent la note obtenue a chaque module

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 45 / 77

Page 46: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

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

Une meme programme, differentes structuresalternativesLes trois implementations suivantes sont equivalentes :

1 Avec 2 structuressi sinonimbriquees :

1 if (m1>=10 and2 m2>=10) :3 print "valide"4 else :5 if (m1>=10 or m2

>=10) :6 print "

rattrapage"7 else : # (m1<10

and m2<10)8 print "refuse"

2 Avec une structuresi ou si sinon :

1 if (m1>=10 and m2>=10) :

2 print "valide"3 elif (m1>=10 or m2

>=10) :4 print "rattrapage

"5 else : # donc (m1

<10 and m2<10)6 print "refuse"

3 Avec desconditionssimples :

1 if (m1>=10) :2 if (m2>=10) :3 print "valide"4 else :5 print "

rattrapage"6 else : # donc m1<107 if (m2>=10) :8 print "

rattrapage"9 else :

10 print "refuse"CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 46 / 77

Page 47: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Chapitre 4

Structures repetitives

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 47 / 77

Page 48: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Principes des structures repetitives

Structure repetitive

Definition (Structure repetitive)

Une structure repetitive est un bloc d’instructions parcouru un certainnombre de fois (de 0 a une infinite).

Boucle while

Les boucles while/tant que repetent une serie d’instructions tant qu’unecondition est verifiee ; la condition est une expression booleenne quis’ecrit de la meme facon que dans les structures alternatives.

Boucle for

En pratique, le nombre de repetitions est tres souvent connu par leprogrammeur (parcours des elements d’une liste, repetition d’une memeaction, ...) ; on leur prefere une syntaxe plus simple appelee boucle for.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 48 / 77

Page 49: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Le compteur d’iteration

Boucle for

Definition (Boucle for)

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

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

suite_du_programme

Une iteration est une execution (ou une repetition) du bloc d’instructionsLe compteur s’initialise a 0 ; apres chaque iteration, il augmente de 1.Lorsqu’il atteint N, le bloc d’instructions a ete execute N fois - il n’est plusexecute et le programme passe aux instructions qui suivent le bloc

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 49 / 77

Page 50: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Repetition

Une repetition simple

Exemple (Boucle iterant le meme affichage 3 fois)

Le programme suivant :

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

itere 3 fois l’affichage de * etdonne :

* * * fin

� Demo

Ligne i Affichage Commentaire1 0 Initialisation du compteur a 02 0 * Fin de la 1ere iter. de boucle1 1 *2 1 * * Fin de la 2eme iter. de boucle1 2 * *2 2 * * * Fin de la 3eme iter. de boucle1 3 * * * Le compteur atteint le nbre d’iter. voulu3 3 * * * fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 50 / 77

Page 51: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Repetition en utiisant le compteur de boucle

Une repetition utilisant le compteur de boucle

Le compteur de boucle, une variable comme une autre ...

Le compteur peut etre utilise dans les instructions de la boucle pour fairevarier leurs resultats d’une iteration a une autre

Exemple (Affichage des nombres de 2 jusqu’a 6 (exclu))

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

donne � Demo :

2 3 4 5 fin

Ligne i i+2 Affichage Commentaire1 0 Initialisation du compteur a 02 0 2 2 Fin de la 1ere iter. de boucle1 1 2

2 1 3 2 3 Fin de la 2eme iter. de boucle1 2 2 3

2 2 4 2 3 4 Fin de la 3eme iter. de boucle1 3 2 3

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 51 / 77

Page 52: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Repetition en utiisant le compteur de boucle

Une repetition modifiant le compteur de boucle

ë Attention : le compteur de boucle ne doit en general pas etre modifie parles instructions de la boucle

Les valeurs du compteur sont pre-calculees au 1ere passage dans la bouclepour aller de 0 a N. Quelque soient les modifications faites sur le compteurdans le bloc d’instruction, chaque nouvelle iteration donne au compteur laprochaine valeur pre-calculee.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 52 / 77

Page 53: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Repetition en utiisant le compteur de boucle

Exemple

Exemple (Une boucle a ne pas faire)

Le programme :

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

donne� Demo :

0 1 fin

Ligne i Affichage1 0 Initialisation du compteur a 02 0 0

3 0 0 Fin de la 1ere iter. de boucle1 1 0

2 1 0 1

3 0 0 1 Fin de la 2eme iter. de boucle1 2 0 1 Le compteur atteint le nbre d’iter. voulu3 3 0 1 2 fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 53 / 77

Page 54: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Valeur initiale du compteur

Boucle for avec valeur initiale differente de 0

Definition (Boucle for avec valeur initiale non nulle)

1 for compteur in range(val_ini, val_fin_exclue) :2 instructions

Le nombre d’iterations est alors de val_fin_exclue - val_ini ; la boucles’arrete lorsque le compteur atteint la valeur val_fin_exclue.

Exemple (Affichage des nombres de 2 jusqu’a 5 (exclu))

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

donne � Demo :

2 3 4 fin

Ligne i Affichage Commentaire1 2 Initialisation du compteur a 22 2 2 Fin de la 1ere iter. de boucle1 3 2

2 3 2 3 Fin de la 2eme iter. de boucle1 4 2 3

2 4 2 3 4 Fin de la 3eme iter. de boucle1 5 2 3 4 Le compteur a atteint sa valeur finale3 5 2 3 4 fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 54 / 77

Page 55: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle for Increment du compteur

Boucle for avec increment different de 1

Definition (Boucle for avec un increment du compteur different de 1)

1 for compteur in range(val_ini, val_fin_exclue, increment) :2 instructions

initialise le compteur a la val_ini et a chaque iteration augmente la valeur ducompteur de increment jusqu’a ce qu’il egale ou depasse val_fin_exclue

Exemple (Affichage des nombres pairs de 2 jusqu’a 8 (exclu))

article

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

donne � Demo :

2 4 6 fin

Ligne i Affichage Commentaire1 2 Initialisation du compteur a 22 2 2 Fin de la 1ere iter. de boucle1 4 2

2 4 2 4 Fin de la 2eme iter. de boucle1 6 2 4

2 6 2 4 6 Fin de la 3eme iter. de boucle1 8 2 4 6 Le compteur atteint sa valeur max.3 8 2 4 6 fin

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 55 / 77

Page 56: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle while La condition de boucle

Boucle while

Definition (Boucle while)

Une boucle while repete un bloc d’instructions tant qu’une conditionbooleenne est verifiee :

1 initialisation_condition2 while condition [== True] :3 instruction4 ...5 modification_condition6 suite_du_programme

Y 3 etapes fondamentales :1 Initialisation de la condition2 Test de la condition a chaque

iteration de la boucle3 Modification du contexte (de la

condition) a chaque iteration

Des que la condition n’est plus vraie, le programme se poursuit avecles instructions qui suivent le bloc repetitif

Ces boucles sont particulierement utiles lorsque le nombre d’iterations n’estpas connu a l’avance comme par exemple lorsqu’elles dependent d’une actionde l’utilisateur ou du resultat d’un calcul fait par les instructions de boucle.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 56 / 77

Page 57: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle while Repetition dependant d’une saisie utilisateur

Verification d’une saisie clavier

Exemple (Verification d’une saisie clavier)

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

1 rep = input("Tapez O/N ") qui realise une premiere saisie avant test2 rep = "" qui affecte une valeur garantissant l’entree dans la boucle.

a. Rappel : Python est sensible a la casse ; ’O’ n’est donc pas le meme caractereque ’o’

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 57 / 77

Page 58: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle while Repetition dependant d’une saisie utilisateur

Verification d’une saisie clavierVariante 1 :

1 rep = input("Tapez O/N ") # Initialisation2 while not( rep == "O" or rep == "N" ) : # Condition de boucle3 rep = input("Non, tapez O/N ") # Modif. de la variable4 print "fin"

Variante 2 :

1 rep = "" # Autre initialisation2 while not( rep == "O" or rep == "N" ) : # Meme condition3 rep = input("Tapez O/N ? ") # Modif. de la variable4 print "fin"

donnent a l’execution pour les meme saisies de l’utilisateur :pour la variante 1 (2 passagesdans la boucle) :

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

pour la variante 2 (3 passagesdans la boucle) :

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 58 / 77

Page 59: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Equivalence boucles for/while

Equivalence for/while

L’art du compteur d’iteration

Lorsque le nombre d’iterations est connu et qu’on peut le denombrer avec uncompteur d’iteration allant d’une valeur ini a une valeur fin ens’incrementant a chaque iteration de inc, les structures repetitives peuventfinalement s’ecrire indifferemment avec une boucle for ou une boucle while :

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

2 instruction3 ...4 suite_du_programme

1 compteur = ini2 while compteur < fin :3 instruction4 ...5 compteur += inc6 suite_du_programme

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 59 / 77

Page 60: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Equivalence boucles for/while

Nombres impairs avec for et while

Exemple (Boucle d’affichage des nombres impairs de 0 a 20)

Avec une boucle for :

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

Avec une boucle while :

1 i=12 while i < 20 :3 if i % 2 != 0:4 print i,5 i = i+16 print "fin"

Ils donnent tous les deux a l’execution :

1 3 5 7 9 11 13 15 17 19 fin

avec 10 iterations pour la boucle for et 20 iterations pour la boucle while

Y Les instructions d’une boucle peuvent contenir des structures alternatives,voire d’autres boucles...

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 60 / 77

Page 61: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Principes

La variable d’accumulation

Principe de la variable d’accumulation

Les boucles s’utilisent couramment avec une variable d’accumulation,dont la valeur s’actualise a chaque iteration dans le bloc d’instruction dela boucle.L’actualisation peut etre : l’ajout a la variable d’une valeur, la multiplicationde la variable par une valeur, ...Le choix du type de boucle (for ou while) depend de l’application viseetoujours dans l’idee qu’elle conduit (ou non) a un nombre d’iterationsconnu

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 61 / 77

Page 62: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Principes

Exemple 1 : une variable d’accumulation additive

Exemple (Solde d’un compte bancaire apres un nombre fixe de mois)

Application : afficher le solde d’un compte bancaire initialement egal a 0,sur lequel est verse un montant fixe de 50 euros tous les mois, apres 4ans de fonctionnement.Variable d’accumulation : le soldeBoucle : for car le nombre de mois (ici 4*12) est connu

1 solde = 0 # Initialisation2 for mois in range(1, 4*12) :3 solde = solde + 504 print "solde final :", solde

donne a l’execution � Demo :

solde final : 2350

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 62 / 77

Page 63: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Principes

Exemple 2 : une variable d’accumulation additive

Exemple (Quand pourrais-je avoir un iPhone?)

Application : partant d’un livret de 50 euros, sur lequel est vire 200 euroschaque annee et avec 0.75% d’interet, combien d’annee faut-il a sontitulaire pour acheter un iPhone?Variable d’accumulation : le solde avec ajout des interets et du versementa chaque iterationLa boucle : while avec un compteur d’annees

1 solde = 502 annee = 03 while (solde < 700) :4 solde = solde*(1 + 0.75/100) +

2005 annee = annee + 16 print "Nbre d’annees :", annee7 print "Solde :", solde

donne a l’execution � Demo :

Nbre d’annees :4Solde : 860.5620439082031

Le nombre d’annees estd’ailleurs le nombre d’iterationsde la boucle while.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 63 / 77

Page 64: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Principes

Exemple 3 : avec variable d’accumulation additive

Exemple (Calcul de la somme de tous les entiers de 1 jusqu’a 1000 (inclus))

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

donne :

somme finale : 500500

Conclusion : structure des programmes avec une variable d’accumulation

Un programme utilisant une variable d’accumulation doit toujours :1 initialiser la variable d’accumulation,2 programmer une structure repetitive qui actualise la valeur de la variable

d’accumulation.La valeur finale de la variable est obtenue en sortie de boucle.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 64 / 77

Page 65: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Principes

Exemple avec variable d’accumulation multiplicative

Exemple (Calcul iteratif d’une puissance)

Le programme suivant calcule24 dans res en utilisant le faitque 24 = 2× 2× 2× 2 ; resetant modifiee paraccumulation de multiplication,sa valeur initiale sera donc 1.

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

� Demo

Ligne i i<=4? res calcul commentaire1-2 1 13 1 True 1 1er iteration

4-5 2 True 2 1*23 2 True 2 1*2 2eme iteration

4-5 3 True 4 1*2*23 3 True 4 1*2*2 3eme iteration

4-5 4 True 8 1*2*2*23 4 True 8 1*2*2*2 4eme iteration

4-5 5 True 16 1*2*2*2*23 5 False 16 1*2*2*2*26 5 False 16 1*2*2*2*2

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 65 / 77

Page 66: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Boucle avec variable d’accumulation Boucles imbriquees

Boucles imbriquees

Exemple (Trace d’un triangle d’etoiles)

1 for i in range(2, 4) :2 for j in range(1, i) :3 print "*",4 print

donne :

** *

� Demo

Ligne i j Aff. Commentaire1 2 i initialise a 22 2 1 j initialise a 13 2 1 * Fin de la 1ere iter. de la boucle sur j2 2 2 * j atteint sa valeur max.4 2 2 \n Fin de la 1ere iter. de la boucle sur i1 3 22 3 1 j initialise a 13 3 1 * Fin de la 1ere iter. de la boucle sur j2 3 2 *3 3 2 * * Fin de la 2eme iter. de la boucle sur j3 3 3 * * j atteint sa valeur maximale4 3 3 \n Fin de la 2eme iter. de la boucle sur i1 4 3 i atteint sa valeur max.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 66 / 77

Page 67: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Chapitre 5

Fonctions

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 67 / 77

Page 68: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Definition

Fonction

Definition (Fonction)

Une fonction est un bloc/une suite d’instructions autonome qui decrit un calculou une tache dans le but de structurer le programme en taches simples ou dereutiliser du code dans differentes configurations. Elle :

1 possede un nom pour etre appelee plusieurs fois,2 des parametres d’entree a servant a faire varier les calculs ; ses

parametres sont identifies par un nom et un ordre,3 renvoie une unique valeur (dependante ou non des parametres) servant

de resultat a la fonction.Elle se decrit par une signature de la formenom_de_fonction(param1, param2, ..., paramN)

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

Exemple (Des fonctions)

cos(x) est la fonction dont le nom est cos ; elle a un parametre x etretourne la valeur de cos(x).max(a,b) est la fonction dont le nom est max ; elle a deux parametres a etb et retourne la valeur la plus grande parmi a et b.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 68 / 77

Page 69: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Appel d’une fonction

Appel d’une fonction

Definition (Appel d’une fonction)

I L’utilisation (appel) d’une fonction se sert du nom de la fonction suivi(dans les parentheses)d’arguments.

I Chaque argument communique une valeur a chaque parametre de lafonction, dans le meme ordre que celui de la declaration des parametres.

I Son appel execute toutes les instructions de la fonction avec les valeursfournies aux parametres par les arguments et se finit en renvoyant unevaleur.

Exemple (Appel de fonction)

cos(0) evalue la fonction cos(x) lorsque x prend la valeur 0 et renvoie 1max(2,10) est la fonction max(a,b) lorsque a vaut 2 et b vaut 10 etrenvoie 10.res = max(10, -1) evalue max(a,b) lorsque a vaut 10 et b vaut −1,renvoie 10 et stocke cette valeur dans res. Au final, res vaut 10.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 69 / 77

Page 70: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Appel d’une fonction

Remarques

Remarques :1 L’appel de la fonction peut etre integre dans une expression ; l’expression

est remplacee par la valeur que retourne la fonction.

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

est equivalent a :

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

2 Bien distinguer le renvoi d’une valeur par une fonction et l’affichage(console) d’une valeur

>>> res = somme( 1, -1) # Stocke dans res le resultat desomme mais ne l’affiche pas

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

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 70 / 77

Page 71: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Syntaxe de declaration d’une fonction

Declaration d’une fonction

Elements pour la declaration d’une fonction1 Nom de la fonction : identificateur explicite2 Parametres : liste de parametres d’entree-sortie de l’algorithme3 Preconditions (optionnel) : des expressions booleennes qui precisent les

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

l’algorithme5 Code : sequence d’instruction necessaire a la resolution du probleme6 Retour (ou renvoi) : la valeur renvoyee

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 71 / 77

Page 72: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Syntaxe de declaration d’une fonction

Syntaxe de declaration

Syntaxe de declaration

1 def nom(param1, param2, ..., paramN ) :2 ["[""] commentaires [""]"] # documentation3 [assert type(param) is ...] # pre-conditions4

5 instruction # code6 instruction7 ...8 return [valeur] # renvoie de la valeur de retour

Remarques :l’indentation definit le bloc d’instructions de la fonctionl’execution de return stoppe le flux d’instructions dans une fonction etforce la sortie de la fonctionsi return n’est suivi d’aucune valeur ou qu’il n’y a pas de return, alorsla fonction renvoie None

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 72 / 77

Page 73: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Exemples

Exemple d’une fonction a un parametre

Exemple (Declaration de la fonction factorielle)

1 def factorielle ( n ) :2 """ # Documentation3 Nom de la fonction : factorielle4 Parametre : n5 Resultat : retourne n!6 """7 res = 1 # Code8 i = 19 while i < n :

10 res *= i11 i += 112 return res # Valeur de retour

donne avec differents appels :

>>> factorielle( 3 )6>>> n = factorielle( 4 )>>> print n24

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 73 / 77

Page 74: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Exemples

Exemple d’une fonction a deux parametres

Exemple (La fonction somme)

1 def somme( a, b ) :2 "retourne la somme a+b, fonctionne avec beaucoup de types"3 total = a + b4 return total

Voici les resultats lors de differents appels :

>>> print somme(10, 2)12>>> res = somme(3, 4)>>> print res-16>>> print somme( ’a’, ’b’ )ab>>> print somme( somme(1, 3), somme(4, 10) )18

Remarque FFF : cette fonction est un exemple de polymorphismepuisqu’elle peut etre utilisee avec n’importe quel type d’objets tant quel’addition + est definie.

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 74 / 77

Page 75: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Exemples

Exemple d’une fonction a plusieurs return

Exemple (Differents return)

1 def unVraiMax( p1, p2 ) :2 ’retourne le strictement plus grand des deux ou bien None’3 if p1 > p2 :4 return p15 elif p2 > p1 :6 return p27 else : # p1 == p28 return

Voici les resultats lors de differents appels :

>>> print unVraiMax(1, 2)2>>> print unVraiMax(2, 1)2>>> print unVraiMax(1, 1)None

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 75 / 77

Page 76: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Ou declarer une fonction?

Ou declarer une fonction?

Python etant un langageinterprete, il est imperatif, dans unscript, de definir une fonction avantde l’utiliser.

Exemple (Script1.py)

1 # ************************2 def ligne(nbEtoile):3 chaine = ’*’*nbEtoile4 return chaine5

6 # ************************7 # Programme principal8 i = 09 while i<5 :

10 print ligne(i)11 i=i+1

Exemple (Script2.py)

1 # ************************2 def ligne(nbEtoile) :3 chaine = ’*’*nbEtoile4 return chaine5

6 def triangle(nbLigne) :7 i = 08 res = ""9 while i<nbLigne :

10 res += ligne(i) + ’\n’11 i=i+112 return res13

14 # ************************15 # Programme principal16 tr = triangle(5)17 print tr

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 76 / 77

Page 77: Programmation Python - chamilo1.grenet.frchamilo1.grenet.fr/ujf/courses/IUT1RT1M1207/document/2016-2017/... · Semaine CM/TD TP 45 Introduction, variable, expression 46 Bases du langage

Fonctions Portee des variables dans une fonction

Portee des variables

Portee des variables

Les variables declarees dans une fonction n’ont qu’une portee locale, c’est adire qu’elles n’existent que dans le bloc d’instructions de la fonction et qu’ellesn’existent plus (donc perdent leur valeur) au retour de la fonction.

Exemple (Une fonction)

1 def fonction( a, b )2 somme = a + b3 diff = a - b4 return somme

donne a l’appel :

>>> fonction( 2, 1)3>>> diffTraceback (most recent call last): ...NameError: name ’diff’ is not defined>>> sommeTraceback (most recent call last): ...NameError: name ’somme’ is not defined

CHOLLET, BARAS, GOEURIOT (IUT-RT) Prog 1 Version 2016 77 / 77