Programmation Python Rémy CHOLLET* Cléo BARAS Lorraine GOEURIOT Jérôme MARTIN Version 2020/2021 - Chamilo
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Programmation Python
Rémy CHOLLET*
Cléo BARAS
Lorraine GOEURIOT
Jérôme MARTIN
Mails : prenom.nom@univ-grenoble-alpes.fr
IUT Département Réseaux & Télécommunications, 1ère année
Version 2020/2021
CBGM (IUT-RT) Prog 1 Version 20/21 1 / 96Chapitre 1
Introduction
CBGM (IUT-RT) Prog 1 Version 20/21 2 / 96L’informatique en R&T Les modules d’informatique
L’informatique en R&T
Sem. Modules Intitulé
S1 M1105 Unix
M1103 Architecture des équipements Informatiques
M1106 Initiation au développement Web
M1207 Programmation 1
S2 M2104 SGBD
M2105 Web Dynamique
M2109 Gestion de Projets informatiques
M2207 Programmation 2
S3 RCPI01 POO
M3206 Scripts
S4 M4206C Programmation sur Mobiles
RCPD02 SGBD Avancés
CBGM (IUT-RT) Prog 1 Version 20/21 3 / 96L’informatique en R&T Planning
M1207 - Programmation 1
Modalités
Cours/TD : 1h + 7 × 2h
TP : 2h + 6 × 2h
Évaluation : DS papier 1h30 ; DS machine 1h30
Planning des séances
Semaine CM/TD TP
45 Accueil
46 Introduction, variable, expression Prise en main de l’IDE
47 Bases de la programmation
48 Structures alternatives Structures alternatives
49 Structures répétitives Structures alternatives
50 Structures répétitives imbriquées Structures répétitives
51 Fonctions Structures répétitives imbriquées
1 Fonctions Fonctions
1 Révision DS Fonctions
2 DS le 13/01/21 Examen sur machine le 13 ou 15/01/21
CBGM (IUT-RT) Prog 1 Version 20/21 4 / 96L’informatique en R&T Outils à disposition
Outils à disposition
Poly, slides, sujets de TD et de TP sur Chamilo :
http://chamilo.univ-grenoble-alpes.fr/courses/IUT1RT1M1207/index.php
IDE PyCharm Community Edition de JetBrains
CBGM (IUT-RT) Prog 1 Version 20/21 5 / 96Définition L’informatique
Informatique
Définition (Informatique (data processing), algorithme)
L’informatique est la science du traitement automatique (software) de
l’information (data), dont découle des programmes qui implémentent des
algorithmes à l’aide d’un langage de programmation.
Ordinateur
Programme
Données (software) Résultats
CBGM (IUT-RT) Prog 1 Version 20/21 6 / 96Définition L’informatique
Algorithme
Définition (Algorithme)
Un algorithme est la mise en œuvre d’une succession finie d’actions
élémentaires (instructions) pour résoudre un problème ou obtenir une
fonctionnalité.
Exemple (Des algorithmes)
Recette de cuisine, notice de montage
Résolution de ax 2 + bx + c = 0
Tri de données
Cryptographie
Recherche d’un plus court chemin
etc.
CBGM (IUT-RT) Prog 1 Version 20/21 7 / 96Définition L’informatique
Un exemple d’algorithme
Exemple (Prise d’un médicament contre la toux)
"En cas de toux, prendre, sauf avis contraire du médecin, un
comprimé toutes les 4 heures, jusqu’à disparition des symptômes.
Pour les enfants, un comprimé toutes les 8 heures suffit."
SI toux ET PAS d’avis contraire du médecin 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 symptômes FAIRE
| | prendre un comprimé
| | attendre pendant le delai d’attente
| FIN DE TANT QUE
FIN DE SI
CBGM (IUT-RT) Prog 1 Version 20/21 8 / 96Définition Les langages de programmation
Langage de programmation
Définition (Langage de programmation)
Ensemble de caractères, symboles, mots-clés et règles d’assemblage
(équivalents au vocabulaire et à la grammaire d’une langue), utilisé pour
donner des instructions à l’ordinateur.
Évolution des langages
1 Langage machine (de plus bas niveau) puis assembleur (mnémonique,
macros, variables)
2 Langage structuré :
C, C#, C++, ObjectiveC, Pascal, Java ... (compilé)
Shell, Tcl/Tk, Perl, Python, Ruby, JavaScript, Matlab... (interprété)
paradigmes de programmation : procédural, orienté objet, fonctionnel...
3 Langage naturel : SQL, Windev, 4D (BDD)
wikipedia
CBGM (IUT-RT) Prog 1 Version 20/21 9 / 96Définition Les langages de programmation
Language compilé vs interprété
2 approches
1 Compilation : traduction d’un code source vers un code cible exécutable
code exécutable directement par l’OS
Bytecode exécutable par machine virtuelle (cf. Java au S3)
2 Interprétation : code source converti en bytecode "à la volée" soit
lecture et analyse d’une instruction (ou une expression)
si correcte, l’exécuter (ou évaluer l’expression)
passer à l’instruction suivante
Pour Python 889
tout le code source est vérifié syntaxiquement
un bytecode est produit automatiquement pour exécution dans
l’interpréteur Python (via une machine virtuelle)
le code peut aussi être interprété en mode interactif
CBGM (IUT-RT) Prog 1 Version 20/21 10 / 96Définition Le langage Python
Python ?
Créé par Guido van Rossum en 1990
1er objectif : un nouveau shell
grande communauté, usages industrialisés
en progression ces dernières années (voir tiobe-index)
Open source, large communauté, bonne portabilité
plutôt haut niveau, plutôt pragmatique
Caractéristiques :
w l’indentation comme syntaxe
w tout est objet
w typage fort et dynamique
CBGM (IUT-RT) Prog 1 Version 20/21 11 / 96Définition Le langage Python
Pourquoi Python ?
Très bonne expressivité
Prototypage rapide
Aspects modernes (itérateurs, compréhension, introspection...)
Très bon langage pour l’administration système
Bibliothèques très diverses : système, calcul, imagerie, web, machine
learning, big data, etc...
Cibles diverses
CBGM (IUT-RT) Prog 1 Version 20/21 12 / 96Définition Le langage Python
Some Spam ?
https://www.dailymotion.com/video/x2hwqlw
CBGM (IUT-RT) Prog 1 Version 20/21 13 / 96Définition Témoignage
Témoignage
Si un étudiant est comme moi, en difficulté, dans les matière type
« programmation », il ne faut pas désespérer.
Nous pouvons comparer la progression d’un langage
informatique à l’apprentissage d’une langue étrangère. Les cours
m’ont permis de comprendre les concepts généraux. Mais c’est le
fait de pratiquer tous les jours qui m’a réellement permis de
progresser.
– Nathan R. 2016
CBGM (IUT-RT) Prog 1 Version 20/21 14 / 96Définition Pour aller plus loin ...
Bonnes pratiques
Qualités d’un logiciel
Performance Portabilité
Fiabilité Lisibilité du code
Robustesse Maintenabilité
Concrètement, il faut :
Tester unitairement le code
Documenter le code, le commenter
Utiliser des nommages pertinents dans le code
Structurer le code par des modules, des fonctions et aussi des classes
Limiter les dépendances, chercher la simplicité et la clarté
CBGM (IUT-RT) Prog 1 Version 20/21 15 / 96Chapitre 2
Variables et expressions
CBGM (IUT-RT) Prog 1 Version 20/21 16 / 96Variables Qu’est ce qu’une variable ?
Variables
Définition (Variable)
Une variable désigne un objet informatique dans une zone mémoire. Elle :
1 est désignée par un identificateur (un nom) et liée à une référence
2 mémorise une valeur unique à un instant donné
3 présente un type, précisant la nature de la valeur qu’elle mémorise
Exemple (Une variable)
L’instruction var = 3 utilise une variable var, mémorisant la valeur 3, et donc
de type entier
Remarques
Une variable possède également :
une durée de vie
une portée
des propriétés en tant qu’objet informatique décrit par une classe
CBGM (IUT-RT) Prog 1 Version 20/21 17 / 96889
Variables Qu’est ce qu’une variable ?
Choix de l’identificateur
Choix de l’identificateur
L’identificateur est un nom :
Í utilisant des lettres (sensibles à la casse), des chiffres ou _
ë interdisant les caractères spéciaux (comme #, @, -, etc.)
ë interdisant les noms commençant par un nombre
ë interdisant les mots-clés du langage Python :
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 20/21 18 / 96Variables Type d’une variable
Type d’une variable
Définition (Type d’une variable)
Le type est la nature (la classe) de la valeur mémorisée par la variable. Il :
est défini à la création de la variable ;
est dynamique, c’est-à-dire qu’il peut évoluer lors du programme ;
889 impose des limites de précision à une valeur.
Comment connaître le type d’une variable x ?
Avec le résultat de la fonction type(x) :
type( 0 ) renvoie (indique)
type( 0. ) renvoie
type( ’Spam’ ) renvoie
CBGM (IUT-RT) Prog 1 Version 20/21 19 / 96Variables Type d’une variable
Types principaux (simples)
Nom Type (class) Exemples de Remarque Précision
valeurs
entier int -2 exprimé en base 10
(integer ) 10 (expression par défaut)
-0b10 exprimé en binaire
0b1010 avec préfixe 0b illimitée (tant que la
-0x2 exprimé en hexadécimal mémoire le permet)
0xA avec préfixe 0x (ou 0X)
-0o2 exprimé en octal
0o12 avec préfixe 0o (ou 0O)
flottant float 1.34 avec le séparateur . limitée, allant de
-0.6 sys.float_info.min à
3.1462 sys.float_info.max
chaîne de str "Spam" délimitée par ’ ou "
caractères (string) ’Egg’
booléen bool False Etat faux
(boolean) True Etat vrai
non défini NoneType None exprime l’état non défini
CBGM (IUT-RT) Prog 1 Version 20/21 20 / 96Variables Type d’une variable
Le type list
Type liste list
Le type list est associé à des collections ordonnées (ou séquences)
d’éléments (c’est à dire d’objets).
Chaque élément d’une liste peut être de type quelconque (int, str, ...).
Chaque élément d’une liste est associé à un indice, numéro entier
décrivant la position de l’élément dans la liste. Les indices débutent à 0.
Exemple (Des listes)
Liste de 4 entiers : [1, 2, 5, -7]
Liste d’entiers et de flottants : [0.2, 4, -1, 3.14, 20]
Dans la liste de 3 chaînes de caractères ["unix", "python", "projet"],
"unix" est l’élément d’indice 0 ; "python" est l’élément d’indice 1 ;
"projet" est l’élément d’indice 2.
CBGM (IUT-RT) Prog 1 Version 20/21 21 / 96Variables Affectation d’une variable
Déclaration et affectation d’une variable
Variables du contexte de nommage et mémoire
Les variables permettent d’accéder à des objets informatiques (une valeur
d’un certain type). Python s’appuie donc sur deux ensembles différents : le
contexte (ou espace) de nommage et la mémoire (vive). Ces deux
ensembles sont libérés à la fin de l’exécution d’un programme.
Exemple (Déclaration et affectation d’une variable)
L’instruction x=2 :
1 alloue une zone mémoire pour ranger
l’objet de type entier 2 (), Contexte Mémoire
2 cherche si x existe dans le contexte de
nommage. Ne le trouvant pas, une entrée x 2
x est ajoutée à ce contexte,
3 finalise l’affectation en associant x à 2
Attention au sens d’une affectation : ë Écrire 2 = x n’a pas de sens !
CBGM (IUT-RT) Prog 1 Version 20/21 22 / 96Expression Expressions et opérateurs
Expression
Définition (Expression, opérateurs)
Une expression est une série de calculs ayant pour résultat une valeur d’un
certain type. Elle utilise des opérateurs (+, -, *, ...) et des opérandes
(valeurs, variables, expressions) et s’évalue au regard de priorités de calcul.
Exemple (Des expressions)
Expression python
Récupération de la valeur de la variable x x
Expression arithmétique sur des valeurs 4/3
Expression arithmétique avec des variables (x+2) % 5
CBGM (IUT-RT) Prog 1 Version 20/21 23 / 96Expression Expressions et opérateurs
Principaux opérateurs
Opérateurs des expressions impliquant des nombres (int ou float)
Symb. Signification Symb. Signification
+ addition * multiplication
- soustraction / division (décimale)
// division euclidienne % modulo (reste de la division)
** exposant : 3**2 vaut 9
Opérateurs des expressions impliquant des chaînes de caractères (str)
Symb. Signification Symb. Signification
+ concaténation * répétition
Opérateurs des expressions impliquant des booléens (bool)
Symb. Signification Symb. Signification
or union logique and intersection logique
not négation logique
CBGM (IUT-RT) Prog 1 Version 20/21 24 / 96Expression Expressions et opérateurs
Priorité des opérateurs dans les expressions
Priorité des opérateurs, par ordre croissant, avec groupement de gauche à
droite si priorités égales
Priorité Opérateur Description
Basse or ou logique
(en dernier ) and et logique
not non logique
=, , !=, == comparaison
| ou bit à bit
^ ou exclusif bit à bit
& et bit à bit
décalage bit à bit
+, - addition et soustraction
*, /, //, % Multiplication, division, reste
+x, -x, ~x signe positif, signe négatif, non bit à bit
Haute ** exposant
(en premier) (expression) expression délimitée par des parenthèses
Remarque : en cas de doute, utilisez des parenthèses
CBGM (IUT-RT) Prog 1 Version 20/21 25 / 96Expression Expressions et affectations
Expressions et affectations
Stocker le résultat d’une expression
Les expressions exploitent l’espace mémoire : on mémorise la valeur par
une affectation après l’évaluation de l’expression.
Exemple (Affectation du résultat d’une expression)
res = (x ** 2) / 5
Modifier une variable
La valeur d’une expression utilisant une variable peut être affectée à cette
même variable.
Exemple (Affectation du résultat d’une expression)
var = 2*(var + 1)
CBGM (IUT-RT) Prog 1 Version 20/21 26 / 96Expression Expressions et affectations
Expressions et affectations
Affectation composée
Elle permet de réaliser en une seule étape une expression et l’affectation de
son résultat dans la variable servant de premier opérande, avec la syntaxe :
var op= valeur
où op est un opérateur ∈ { +, -, *, /, \%, //, **, }. Cette syntaxe est
strictement équivalente à :
var = var op valeur
Exemple (Modification de variable et affectation composée)
1 chaine = "hel" 1 chaine = "hel"
2 chaine = chaine + "lo" 2 chaine += "lo"
conduisent à chaine valant "hello".
Démo
CBGM (IUT-RT) Prog 1 Version 20/21 27 / 96Instructions Qu’est ce qu’une instruction ?
Instructions
Définition (Instructions)
Une instruction est un ordre à exécuter par le programme ; c’est une étape
qui dicte à la machine ce qu’elle doit effectuer avant de passer à l’instruction
suivante. Par exemple :
affecter une valeur à une variable
afficher une information à l’écran
récupérer une saisie clavier faite par l’utilisateur (Prog 2)
Exécuter une instruction implique d’évaluer des expressions.
Définition (Programme)
Un programme est une suite d’instructions, qui s’exécutent les unes après les
autres - autrement dit séquentiellement.
CBGM (IUT-RT) Prog 1 Version 20/21 28 / 96Instructions Instructions de (ré)-affectation
Instructions d’affectation
Exemple (Des instructions d’affectation)
1 a = 3
2 b = a + 1
3 b = b + a
Contexte Mémoire Ligne 1 : déclaration et affectation de a.
a 3 1
Ligne 2 : déclaration et affectation de b .
Ligne 3 : ré-affectation de b (équivalent à
b % 4
b += a). L’objet 4 n’étant plus référencé, il
7 est effacé par le ramasse-miette.
CBGM (IUT-RT) Prog 1 Version 20/21 29 / 96Chapitre 3
Structure d’un programme : modules et
fonctions
CBGM (IUT-RT) Prog 1 Version 20/21 30 / 96Modules et fonctions Modules
Modules et fonctions
Définition (Modules et fonctions)
Python propose un ensemble de fonctions servant à différents calculs ou à
différentes tâches utiles et récurrentes dans un programme. Certaines de ces
fonctions sont fournies (rangées, déclarées) dans des bibliothèques
(appelées modules).
Exemple (Quelques modules )
Module Rôle Exemples de fonctions
Built-in int, float, list,
abs, min, max, len, ...
math Calculs mathématiques cos, sin, exp, ...
random Choix aléatoires rand, random, ...
os, sys Interactions systèmes chdir, getlogin, getpid, ...
turtle Fenêtre graphique forward, goto, ...
CBGM (IUT-RT) Prog 1 Version 20/21 31 / 96Modules et fonctions Modules
Import de modules
Définition (Directive d’import)
Pour pouvoir utiliser les fonctions d’un module, il faut l’importer avec
l’instruction :
import nom_module
Exemple (Des imports)
import math importe toutes les fonctions du module math
import os importe toutes les fonctions du module os
Remarque : le développeur peut créer son propre module (un fichier .py
contenant des fonctions) et l’importer avec pour nom de module le nom du
fichier choisi.
CBGM (IUT-RT) Prog 1 Version 20/21 32 / 96Modules et fonctions Fonctions
Caractéristiques d’une fonction
Définition (Caractéristiques d’une fonction)
Une fonction :
est identifiée par un nom et est déclarée dans un éventuel module ;
peut avoir des paramètres (obligatoires ou optionnels)
produit un résultat, appelé valeur de retour (return)
Elle se décrit par une signature de la forme
[nom_module.]nom_fonction(param1, param2, ..., paramN)
Exemple (Extrait de documentation de fonctions)
La fonction sqrt du module math :
La fonction randint du module random :
o La documentation
CBGM (IUT-RT)
d’une fonction indique
Prog 1
toujours le nom du module dans33 / 96
Version 20/21Modules et fonctions Fonctions
Appel d’une fonction
Définition (Appel d’une fonction)
Pour appeler une fonction il faut :
1 nommer la fonction avec l’une des syntaxes :
si la fonction est déclarée dans le contexte courant :
nom_fonction( ... )
si la fonction a été importée avec import nom_module :
nom_module.nom_fonction( ... )
2 indiquer dans les parenthèses les arguments : chaque argument donne
une valeur à chaque paramètre de la fonction, dans le même ordre que
celui de la déclaration.
L’appel de la fonction fournit une valeur de retour, utilisable dans une
expression, une affectation.
CBGM (IUT-RT) Prog 1 Version 20/21 34 / 96Modules et fonctions Fonctions
Exemples d’appels
Exemple (Appels à math.sqrt(x))
Avec l’instruction import math qui importe toutes les fonctions de math :
1 var = math.sqrt(3)
2 res = math.sqrt(4)
Ligne 1 : var reçoit la valeur 1.7320508075688772
Ligne 2 : res reçoit la valeur 2.0
Exemple (Appels à max(a,b ) (qui n’appartient à aucun module))
1 temp = max(1, 5 )
2 var = max(6, temp )
3 res = max(max(3, 2), 1)
Ligne 1 : temp reçoit la valeur 5
Ligne 2 : var reçoit la valeur 6
Ligne 3 : évalue max(3, 2) pour produire 3 puis évalue max( 3, 1) pour
produire 3 et le stocker dans res
CBGM (IUT-RT) Prog 1 Version 20/21 35 / 96Modules et fonctions Fonctions
Déclaration d’une fonction
Pour du code propre, modulaire ou pour factoriser du code, le développeur
peut déclarer ses propres fonctions. La conception s’effectue avec les
éléments suivants :
Éléments pour la déclaration d’une fonction
1 Nom de la fonction : identificateur explicite
2 Paramètres : liste de paramètres (et de leurs noms) utilisés
3 Code : séquence d’instruction
4 Retour (ou renvoi) : la valeur renvoyée
5 Description (optionnel mais d’usage obligatoire) : une documentation !
888
6 Préconditions (optionnel) : des expressions booléennes qui précisent les
conditions d’application du code ( )
CBGM (IUT-RT) Prog 1 Version 20/21 36 / 96Modules et fonctions Fonctions
Syntaxe de déclaration
Quelque soit le module dans lequel la fonction est déclarée, sa syntaxe de
déclaration est :
Syntaxe de déclaration
def nom_fonction(param1, param2, ..., paramN ) :
[""" commentaires """] # documentation
[assert type(param) is ...] # pre-conditions
instruction # code
instruction
...
return [valeur] # renvoie de la valeur de retour
# avec sortie de la fonction
# fin de la fonction
Remarques :
l’indentation définit le bloc d’instructions de la fonction
l’exécution de return stoppe le flux d’instructions dans une fonction et
force la sortie de la fonction avec la valeur indiquée
si return n’est suivi d’aucune valeur, alors la fonction renvoie None
CBGM (IUT-RT) Prog 1 Version 20/21 37 / 96Modules et fonctions Fonctions
Exemple d’une fonction à deux paramètres
Exemple (La fonction somme2)
La fonction somme2 (avec ses deux paramètres
a et b) est déclarée par : Elle peut être appelée
1 def somme2(a, b): avec :
2 """Calcule et renvoie la somme de deux
1 res1 = somme2( 10, 2 )
nombres a et b"""
2 res2 = somme2( -3, 4 )
3 total = a + b
4 return total
Ligne 1 : évalue les instructions avec a=10 et b=2, renvoie le résultat 12
(valeur de total avant le return) puis affecte 12 à res1
Ligne 2 : ré- évalue les instructions avec a=-3 et b=4, renvoie le résultat 1
(valeur de total avant le return) puis affecte 1 à res2
Remarque FFF : cette fonction est un exemple de généricité puisqu’elle
peut être utilisée avec n’importe quel type d’objets tant que l’addition + est
définie.
CBGM (IUT-RT) Prog 1 Version 20/21 38 / 96Programme/Script Python Programme et sa fonction main
Programme Python et fonction main
Définition (Programme Python)
Un programme Python est un fichier d’extension .py contenant des
déclarations de fonctions avec/et des instructions. Il possède un point
d’entrée, qui est par convention la fonction main (sans paramètre).
Ce point d’entrée permet à Python de savoir où trouver la 1e instruction à
exécuter : c’est la 1e du main.
La fonction main doit/peut appeler les fonctions déclarées pour que leurs
instructions soient exécutées.
L’art de la tabulation
Attention : pour faire partie du main, les instructions du programme doivent
toutes être tabulées ).
CBGM (IUT-RT) Prog 1 Version 20/21 39 / 96Programme/Script Python Structure d’un programme
Structure d’un programme
La structure d’un programme est :
1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 """
4 Script: un_programme.py
5 Auteur: pycharm
6 """
7 # Import des modules
8 import math
9
10 # Fonctions
11 def une_fonction(a):
12 # instructions de la fonction
13 return ...
14
15 # Programme principal
16 def main():
17 # Les instructions du main
18 var = une_fonction(2)
19 res = math.sqrt(3)
20 ...
21 # Fin du programme
22
23 if __name__ == ’__main__’: # Point d’entrée
24 main() # avec appel à main
CBGM (IUT-RT) Prog 1 Version 20/21 40 / 96Fonctions Notion de portée locale
Contexte de nommage et mémoire
1 L’exécution d’un programme s’appuie sur :
des contextes (de nommage) des variables
sur la mémoire (vive) qui stocke les valeurs des variables
2 Un appel à une fonction crée un contexte local :
pour y déclarer les paramètres et les variables de la fonction
qui est propre à la fonction et à son appel
qui est effacé au retour de la fonction (return)
est recréé ("à neuf") à chaque nouvel appel de la fonction
3 Les contextes sont complètement séparés, donc sans interférences
entre eux : la portée des variables d’une fonction est locale à la
fonction ; les variables d’une fonction n’existent que lors de l’appel à la
fonction.
4 Par contre, la mémoire est partagée par toutes les fonctions
CBGM (IUT-RT) Prog 1 Version 20/21 41 / 96Fonctions Contexte local d’une fonction
Contexte local d’une fonction avec paramètres
Appel : somme()
Exemple (Appel d’une fonction à
paramètres) Contexte Contexte
du main Mémoire de somme
1 def somme(pA, pB) :
2 res = pA + pB
3 return res a 1 pA
4
b 2 pB
5 def main():
6 a = 1 resultat 5 res
7 b = 2
8 resultat = somme(a, b)
return res
Les contextes de main et de somme n’existent qu’au moment de leur
exécution : les variables (a, b, resultat et res) sont locales.
Lors de l’appel, les paramètres pA et pB référencent les même objets que
a et b, mais dans le contexte local.
L’objet res, créé et renvoyé par la fonction, est celui récupéré dans main
(et affecté à resultat)
CBGM (IUT-RT) Prog 1 Version 20/21 42 / 96Fonctions Contexte local d’une fonction
Fonction à paramètres nommés
Définition (Fonction à paramètres nommés)
Une fonction peut proposer des paramètres nommés disposant d’une valeur
par défaut ; sa signature est alors :
nom_fonction(param1, param2, ... , paramN,
param_nomme1=val1, ..., param_nommeN=valN)
L’appel à la fonction :
utilise obligatoirement des arguments pour les paramètres non nommés
(positionnels) (param1, ..., paramN), dans le même ordre dans la signature
peut ne pas mentionner les paramètres nommés (param_nomme1, ...,
param_nommeN), et utilise alors les valeurs par défaut (val1, ..., valN)
attribuées dans la signature
peut mentionner des valeurs pour (tout ou partie) des paramètres
nommés, et dans ce cas, utilise les valeurs indiquées au moment de
l’appel
CBGM (IUT-RT) Prog 1 Version 20/21 43 / 96Fonctions Fonctions à paramètres nommés
Fonction à paramètres nommés
Exemple (Une fonction à paramètre nommé)
La fonction os.mkdir(path, mode=0o777) crée un répertoire path, dont les
droits d’accès sont donnés par umask & mode. Des appels peuvent être :
os.mkdir("mon_repertoire"), avec pour paramètre path valant
"mon_repertoire" et sans paramètre nommé, donc avec mode de valeur
0o777 (la valeur par défaut)
os.mkdir("tps", mode=0o700), avec pour paramètre path valant "tps" et
le paramètre nommé mode valant 0o700
CBGM (IUT-RT) Prog 1 Version 20/21 44 / 96Fonctions Instructions de sortie : affichage console
Instruction de sorties : affichage console
Écriture vers l’écran (ou affichage console) avec print
La fonction qui réalise l’affichage d’une donnée sur la console est :
1 print(donnee)
Les données peuvent être de tous types (int, float, str, etc.). Un retour
chariot est ajouté par défaut à la fin de chaque appel à print. La fonction
print renvoie la valeur None.
Exemple (Affichage de données (extrait de code))
donnent à l’affichage
1 msg = "Bonjour" console :
2 valeur = 3.14
3 print(msg) Bonjour
4 print(valeur) 3.14
5 print("xO" * 2) xOxO
6 print("fin") fin
CBGM (IUT-RT) Prog 1 Version 20/21 45 / 96Fonctions Instructions de sortie : affichage console
Variantes de print
1 Avec plusieurs paramètres à afficher : print(donnee1, donnee2, ...)
affiche, sur une même ligne et séparée (par défaut) par un espace,
toutes les données passées en paramètres.
Exemple (Affichage de données (extrait de code))
donnent à l’affichage
1 msg = "Bonjour" console :
2 valeur = 3.14
3 print(msg, valeur, "dit Pi") Bonjour 3.14 dit Pi
4 print("fin") fin
CBGM (IUT-RT) Prog 1 Version 20/21 46 / 96Fonctions Instructions de sortie : affichage console
Variantes de print
2 Avec paramètres nommés :
print( donnee1, donnee2, ..., sep=chaine_sep, end=chaine_fin )
affiche les données :
en les séparant par la chaine_sep fournie dans le paramètre (optionnel) sep
(par défaut sep=" ")
en terminant l’affichage par la chaine_fin précisée dans le paramètre
(optionnel) end (par défaut end="\n")
Exemple (Affichage de données (extrait de code))
1 msg = "Bonjour" donne à l’affichage
2 valeur = 3.14 console :
3 print(msg, valeur, sep="--")
Bonjour--3.14
4 print("et" )
et
5 print(msg, valeur, end=">>")
Bonjour 3.14>>fin
6 print("fin" )
CBGM (IUT-RT) Prog 1 Version 20/21 47 / 96Fonctions Instructions de sortie : affichage console
Bonne pratique pour l’affichage console
print peut être utilisé partout dans le code (fonctions, programme principal,
...) ; il produit un affichage "instantané" d’une donnée mémoire qui :
est destiné à l’utilisateur pour voir le résultat attendu du programme
peut être utile au développeur pour suivre le bon déroulement de son
programme même si rien ne vaut l’exécution en mode debug avec un IDE
mais n’est pas exploitable par le code : o ne pas confondre :
le return d’une fonction qui renvoie un objet informatique exploitable en le
stockant dans une variable
et l’affichage avec print de la valeur de cet objet
Bonnes pratiques du print
Une bonne pratique consiste à coder les instructions d’affichage :
soit dans le main
soit dans des fonctions spécifiquement dédiées à l’affichage (donc
ayant pour valeur de retour None)
CBGM (IUT-RT) Prog 1 Version 20/21 48 / 96Chapitre 4
Structures alternatives
CBGM (IUT-RT) Prog 1 Version 20/21 49 / 96Expressions booléennes Type booléen et expressions booléennes
Expressions booléennes
Définition (Le type booléen, expression booléenne)
Une variable de type booléen (bool) ne peut prendre que 2 valeurs : True ou
False . Une expression est booléenne si elle s’évalue par un booléen.
Opérateurs de comparaison et opérateurs booléens
Les booléens sont souvent :
le résultat d’une comparaison entre deux données du même type
(numérique, chaîne), utilisant les opérateurs de comparaison
le résultat d’une opération logique (opérateurs booléens et/ou/non) entre
plusieurs comparaisons.
Remarque : Les expressions booléennes peuvent bien sûr servir à affecter
une variable.
Exemple (Une instruction avec expression booléenne)
reponse = (x == 5) # résultat de "x est-il égal à 5 ?"
CBGM (IUT-RT) Prog 1 Version 20/21 50 / 96Expressions booléennes Opérateurs de comparaison
Principaux opérateurs de comparaison
Les principaux opérateurs de comparaison
Op. Signification Op. Signification
== égal (même valeur) != différent
> strictement supérieur < strictement inférieur
>= supérieur ou égalExpressions booléennes Opérateurs booléens
Opérateurs booléennes
Principaux opérateurs booléens
Symb. Signification Symb. Signification
or union logique and intersection logique
not négation logique
Remarque : o aux priorités des opérateurs
Exemple (Des conditions booléennes )
Condition Expression Python
La variable jour est-elle égale à "lundi" et la variable annee (jour == "lundi") and (annee > 2000)
est-elle supérieure à 2000 ?
Le jour est-il dans le WE ? (jour == "samedi") or (jour == "dimanche")
jour in ["samedi", "dimanche"]
La variable x est-elle différente 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.5Structures alternatives Structures alternatives élémentaire : Si sinon
Structure alternative "Si ... sinon"
Structure alternative "Si ... sinon"
# Début du si/sinon
if condition_booleenne:
# Instructions si la condition est vraie
instruction
instruction uniquement si la condition est True
else:
# Instructions si la condition est fausse
instruction
instruction uniquement si la condition est False
# Fin du si/sinon
suite_du_programme suite du déroulement séquentiel
teste la condition_booleenne :
Si elle s’évalue True, le bloc d’instructions qui suit le if est exécuté ;
Sinon, le bloc d’instructions qui suit le else est exécuté.
Une fois les instructions de la structure if/else exécutées, le programme
continue son déroulement avec la 1e instruction de suite_du_programme.
CBGM (IUT-RT) Prog 1 Version 20/21 53 / 96Structures alternatives Structures alternatives élémentaire : Si sinon
L’art de la tabulation
Identifiant des blocs d’instructions
C’est l’indentation (tabulation avec la touche −
→
−−
→− ) qui définit les blocs
d’instructions en Python.
Une structure alternative dans une fonction
def une_fonction( ... ):
#...
→ −
−
−−→
if condition_booleenne:
# Instructions si la condition est vraie
→
−
−−
→− # ...
else:
# Instructions si la condition est fausse
# ...
# suite du programme
# ...
# fin de une_fonction
CBGM (IUT-RT) Prog 1 Version 20/21 54 / 96Structures alternatives Structures alternatives élémentaire : Si sinon
Exemple
Exemple (Alternative si sinon)
def est_sup_a_4( var ):
if var > 4:
# Instructions si la condition est vraie
res = "oui"
else:
# Instructions si la condition est fausse
res = "non"
return res
donnent pour différents contextes d’appel :
Cas 1 : l’appel (extrait du main) Cas 2 : l’appel (extrait du main)
print("Est-ce que 5 > 4 ?") print("Est-ce que 3 > 4 ?")
res = est_sup_a_4( 5 ) res = est_sup_a_4( 3 )
print(res) print(res)
donne : donne :
Est-ce que 5 > 4 ? Est-ce que 3 > 4 ?
oui non
CBGM (IUT-RT) Prog 1 Version 20/21 55 / 96Structures alternatives Structure conditionnelle élémentaire : Si
Structure conditionnelle Si
Structure conditionnelle "Si"
if condition_booleenne:
# Instructions si la condition est vraie "omis" si
instruction
... uniquement si la condition est vraie la condition
instruction est fausse
# Fin de la condition et suite du programme
suite_du_programme suite du déroulement séquentiel
teste la condition_booleenne :
Si elle s’évalue True, le bloc d’instructions qui suit le if est exécuté.
Sinon, le bloc d’instructions qui suit le if n’est pas exécuté.
Dans les deux cas, le programme se poursuit avec la 1e instruction de la
suite_du_programme.
CBGM (IUT-RT) Prog 1 Version 20/21 56 / 96Structures alternatives Structure conditionnelle élémentaire : Si
Exemple
Exemple (La fonction valeur absolue avec un "si")
def valeur_absolue( var ):
res = var
if res < 0:
# Instructions si la condition est vrai
res = -res
# Fin de la condition et suite du programme
return res
Cas 1 : l’appel (extrait du main) Cas 2 : l’appel (extrait du main)
print("Val. abs. de 5 =") print("Val. abs. de -3 =")
res = valeur_absolue(5) res = valeur_absolue(-3)
print(res) print(res)
donne : donne :
Val. abs. de 5 = Val. abs. de -3 =
5 3
CBGM (IUT-RT) Prog 1 Version 20/21 57 / 96Structures alternatives Structure alternative multiple : si ... ou si ... sinon
Alternative Si ... ou si ... sinon
Structure alternative Si ... ou si ... sinon
if condition_booleenne_1: s’exécute si la condition 1 est True
instruction
instruction
elif condition_booleenne_2: s’exécute si la condition 1 est False
instruction et la condition 2 est True
instruction
else: s’exécute si les conditions 1 et 2
instruction sont False
instruction
suite_du_programme
Le bloc elif peut apparaître autant de fois que l’on souhaite de
conditions alternatives
Dès que l’une des conditions booléennes est True, les conditions testées
dans les elif qui suivent ne sont plus évaluées et le programme passe à
la suite du programme
Le bloc else est optionnel
CBGM (IUT-RT) Prog 1 Version 20/21 58 / 96Structures alternatives Structure alternative multiple : si ... ou si ... sinon
Alternative Si ... ou si ... sinon
Exemple (La fonction signe avec un si ... ou si ... sinon)
def signe( var ) :
if var < 0:
res = "negatif"
elif var > 0:
res = "positif"
else:
res = "nul"
return res
Cas 1 : avec l’appel : Cas 2 : avec l’appel : Cas 3 : avec l’appel :
res = signe(2) res = signe(-3) res = signe(0)
print("2 est", res) print("-3 est", res) print("0 est", res)
donne : donne : donne :
2 est positif -3 est negatif 0 est nul
CBGM (IUT-RT) Prog 1 Version 20/21 59 / 96Structures alternatives imbriquées
Structures alternatives imbriquées
Les structures alternatives peuvent être imbriquées les unes dans les autres
autant de fois qu’on le souhaite.
Exemple (La fonction signe avec des structures alternatives imbriquées)
def signe( var ):
# test 1
if var >= 0:
# test 2 (sachant var >=0)
if var > 0:
res = "positif"
else:
res = "nul"
# fin du test 2
else:
# (sachant var >= 0 faux)
res = "negatif"
# fin du test 1
return res
CBGM (IUT-RT) Prog 1 Version 20/21 60 / 96Structures alternatives imbriquées
Un même programme, différentes structures
alternatives
Pour un même programme, le code peut s’écrire de manière équivalente en
utilisant l’une ou l’autre des structures alternatives : si/sinon si/sinon ou des
structures imbriquées.
Une bonne pratique pour les structures alternatives
Le choix de la structure se fera souvent de sorte :
à avoir une expression des conditions faciles à relire
à ne pas oublier de cas de figure
CBGM (IUT-RT) Prog 1 Version 20/21 61 / 96Structures alternatives imbriquées
Structures alternatives et fonctions : les return multiples
Des return multiples sont souvent utilisés dans les fonctions dont le résultat
dépend d’un test (avec sortie de la fonction dès le return rencontré).
Exemple (La fonction signe avec des return multiples)
1 def signe( var ):
2 if var > 0:
3 return "positif"
4 elif var < 0:
5 return "negatif"
6 else:
7 return "nul"
L’appel signe(3) s’arrête à la ligne 3
L’appel signe(-4) s’arrête à la ligne 5
L’appel signe(0) s’arrête ligne 7
CBGM (IUT-RT) Prog 1 Version 20/21 62 / 96Structures alternatives ternaires
Syntaxe ternaire de l’alternative
Définition (Syntaxe ternaire)
Lorsque la structure alternative if ... else sert à choisir parmi deux valeurs
obtenues dans deux cas opposés (dépendant d’une condition, elle peut
s’écrire avec une syntaxe ternaire :
1 valeur_si_vrai if condition else valeur_si_faux
Exemple (Une structure ternaire)
Etant donnée une est équivalent à :
note :
res = "validé" if note >= 10 else "non validé"
if note >= 10:
res = "validé" voire même à :
else:
res = "non validé" res = ("" if note >= 10 else "non ") + "validé"
CBGM (IUT-RT) Prog 1 Version 20/21 63 / 96Chapitre 5
Structures répétitives
CBGM (IUT-RT) Prog 1 Version 20/21 64 / 96Structure répétitive
Définition (Structure répétitive)
Une structure répétitive est un bloc d’instructions parcouru un certain
nombre de fois (de 0 à une infinité).
Boucle for
En pratique, le nombre de répétitions est très souvent connu par le
programmeur (parcours des éléments d’une liste, répétition d’une même
action N fois, ...) ; on utilise une syntaxe simple appelée boucle for.
Remarque : dans certains cas, le nombre de répétitions n’est pas connu à
l’avance (cas d’une saisie utilisateur ou boucle de jeu) : les instructions se
répètent tant qu’une condition est vérifiée, avec pour condition une
expression booléenne. On utilise alors une syntaxe while/tant que (vue en
prog 2).
CBGM (IUT-RT) Prog 1 Version 20/21 65 / 96Boucle for Boucle avec compteur d’itération
Boucle for
Définition (Boucle for)
La boucle for, pour répéter un bloc d’instructions N fois, peut s’appuyer sur
un compteur d’itération :
for compteur in range( N ) :
instruction # Début du bloc à répéter
...
instruction
# Fin du for
suite_du_programme
Une itération est l’une des N exécutions (ou N répétitions) du bloc
d’instructions de la boucle
Le compteur s’initialise à 0 ; après chaque itération, il augmente de 1.
Lorsqu’il atteint N, le bloc d’instructions a été exécuté N fois ; il n’est plus
exécuté et le programme passe aux instructions qui suivent le bloc.
CBGM (IUT-RT) Prog 1 Version 20/21 66 / 96Boucle for Boucle avec compteur d’itération
Une répétition simple
Exemple (Boucle itérant le même affichage 3 fois)
donne : PythonTutor
1 for i in range(3): * * * fin
2 print("*", end=" ")
3 # fin de la boucle for
4 print("fin")
Ligne i Affichage Iter. Commentaire
1 0 Initialisation du compteur à 0
1e
2 0 * Fin de la 1ère itér. de boucle
1 1 *
2e
2 1 * * Fin de la 2ème itér. de boucle
1 2 * *
3e
2 2 * * * Fin de la 3ème itér. de boucle
1 2 * * * o Le compteur atteint le nbre d’itér. voulu ; fin de la boucle
3 2 * * * fin
CBGM (IUT-RT) Prog 1 Version 20/21 67 / 96Boucle for Boucle avec compteur d’itération
Une répétition utilisant le compteur de boucle
Le compteur de boucle, une variable comme une autre ...
Le compteur peut être utilisé dans les instructions de la boucle pour faire
varier leurs résultats d’une itération à une autre
Exemple (Boucle affichage des nombres de 2 jusqu’à 6 (exclu))
1
2
for i in range(4):
print(i + 2, end=" ")
donne : PythonTutor :
3 # fin de la boucle for 2 3 4 5 fin
4 print("fin")
... o le compteur de boucle ne doit en général pas être modifié par les
instructions de la boucle
Les valeurs du compteur sont pré-calculées au 1e passage dans la boucle
pour aller de 0 à N-1.
CBGM (IUT-RT) Prog 1 Version 20/21 68 / 96Boucle for Plage de valeurs du compteur : la fonction range
Boucle for avec valeur initiale différente de 0
Définition (Boucle for avec valeur initiale non nulle)
for compteur in range(val_ini, val_fin_exclue) :
instructions
...
# fin de la boucle for
Le nombre d’itérations est alors de val_fin_exclue - val_ini ; la boucle
s’arrête lorsque le compteur atteint la valeur val_fin_exclue.
Exemple (Boucle d’affichage des nombres de 2 jusqu’à 5 (exclu))
1 for i in range(2, 5):
2 print(i, end=" ") Ligne i Affichage Iter Commentaire
1 2 Initialisation du compteur à 2
3 # fin de la boucle for 2 2 2
1e
Fin de la 1ère itér. de boucle
4 print("fin") 1 3 2
PythonTutor :
2e
2 3 2 3 Fin de la 2ème itér. de boucle
1 4
donnent 2 4
2 3
2 3 4
3e
Fin de la 3ème itér. de boucle
1 4 2 3 4 Le compteur a atteint sa valeur finale
2 3 4 fin 3 4 2 3 4 fin
CBGM (IUT-RT) Prog 1 Version 20/21 69 / 96Boucle for Plage de valeurs du compteur : la fonction range
Boucle for avec incrément différent de 1
Définition (Boucle for avec un incrément du compteur différent de 1)
1 for compteur in range(val_ini, val_fin_exclue, increment) :
2 instructions
3 ...
4 # fin de la boucle for
initialise le compteur à la val_ini et à chaque itération augmente la valeur du
compteur de increment jusqu’à ce qu’il égale ou dépasse val_fin_exclue
Exemple (Boucle 5, affichage des nombres pairs de 2 jusqu’à 8 (exclu))
1 for i in range(2, 8, 2): Ligne i Affichage Iter Commentaire
2 print(i, end=" ") 1 2
1e
Initialisation du compteur à 2
3 # fin de la boucle for 2 2 2 Fin de la 1ère itér. de boucle
1 4 2
4 print("fin") 2e
2 4 Fin de la 2ème itér. de boucle
PythonTutor :
2 4
1 6 2 4
3e
donne 2 6 2 4 6 Fin de la 3ème itér. de boucle
1 6 2 4 6 Le compteur atteint sa valeur max.
3 6 2 4 6 fin
2 4 6 fin
CBGM (IUT-RT) Prog 1 Version 20/21 70 / 96Boucle for sur une collection ordonnée Les listes
Listes
Définition (Listes)
Les listes (classe list) sont des collections ordonnées d’éléments (de
type quelconque) identifiées par une référence (stockée dans une variable).
Définition (Déclaration d’une liste)
Une liste de N élements se déclare par : Contexte Mémoire
liste = [elm0, elm1, ..., elmN_1]
liste [0] elm0
La variable liste référence alors les [1] elm1
éléments elm0, elm1, ..., elmN_1 en [2] elm2
... ...
mémoire, en leur attribuant un ordre : elm0
[N-1] elmN_1
est le 1e, elm1 le 2d... et elmN_1 le dernier.
Nombre d’éléments d’une liste
Le nombre d’éléments d’une liste est renvoyé par la fonction len(liste).
CBGM (IUT-RT) Prog 1 Version 20/21 71 / 96Boucle for sur une collection ordonnée Les listes
Accès élémentaires aux éléments d’une liste
Définition (Indices des éléments d’une liste)
Les éléments d’une liste liste = [elm0, elm1, ..., elmN_1] étant ordonnés,
chaque élément de la liste est lié à un indice ; cet indice est la position de
l’élément dans la liste : 0 pour elm0, 1 pour elm1, ... et len(liste)-1 pour le
dernier élément elmN_1.
Accès aux éléments d’une liste
Pour un indice i donné, la syntaxe liste[i] accède à l’élément d’indice i de
la liste (en lecture comme en écriture).
Remarque : Si l’indice n’est pas entre 0 et len(liste)-1, l’expression liste[i]
peut provoquer une erreur de type IndexError: list index out of range.
CBGM (IUT-RT) Prog 1 Version 20/21 72 / 96Boucle for sur une collection ordonnée Les listes
Exemple
Exemple (Une liste)
1 liste = [1, 15, "bob", 2] Contexte Mémoire
2 print("liste =", liste)
3 print("type =>", type(liste))
liste [0] 1
4 print("liste[1] =>", liste[1])
[1] 15
5 print("liste[2] =>", liste[2])
[2] ’bob’
6 print("longueur =>", len(liste))
[3] 2
donne sur la console :
liste = [1, 15, ’bob’, 2]
type =>
liste[1] => 15
liste[2] => bob
longueur => 4
CBGM (IUT-RT) Prog 1 Version 20/21 73 / 96Boucle for sur une collection ordonnée Parcours de listes
Parcours itératif de tous les éléments d’une liste
Définition (Objet itérable)
La liste est un objet itérable, c’est à dire une collection d’éléments dont on
peut prendre (ou parcourir) les éléments un à un.
Parcours naturel d’une liste par le biais des indices
Le parcours naturel consiste à prendre les éléments d’une liste, un par un,
via leur indice dans l’ordre croissant (indices allant de 0 à len(liste)-1) :
for i in range(0, len(liste)):
# instruction portant sur liste[i]
# ...
# fin du parcours
# suite_du_programme
CBGM (IUT-RT) Prog 1 Version 20/21 74 / 96Boucle for sur une collection ordonnée Parcours de listes
Exemple de parcours par indices
Exemple (Affichage des éléments d’une liste séparés par des ’/’)
1 liste = ["un", 2, "trois", "soleil"]
2 for i in range(0, len(liste)):
3 elm = liste[i]
4 print(elm, "/", end="")
5 # fin de la boucle
6 print("fin")
donne :
Lignes Iter. i ligne[i] Affichage
2/3/4 1e 0 "un" un /
2/3/4 2e 1 2 un /2 /
2/3/4 3e 2 "trois" un /2 /trois /
2/3/4 4e 3 "soleil" un /2 /trois /soleil /
2 o Dernière valeur de i atteinte
5 3 "soleil" un /2 /trois /soleil /fin
d’où l’affichage final :
un /2 /trois /soleil /fin
CBGM (IUT-RT) Prog 1 Version 20/21 75 / 96Boucle for sur une collection ordonnée Parcours de listes
Parcours d’une liste par éléments
La boucle for est prévue pour parcourir directement les éléments d’une liste
sans passer par leur indice :
Parcours itératif d’une liste par éléments
for elm in liste:
# instruction sur elm
# ...
# fin du parcours
# suite_du_programme
A chaque itération, elm prend pour valeur l’un des éléments de la liste (du 1e
au dernier) et exécute les instructions.
CBGM (IUT-RT) Prog 1 Version 20/21 76 / 96Boucle for sur une collection ordonnée Parcours de listes
Exemple de parcours par élément
Exemple (Un parcours par élément)
1 liste = ["papier", "caillou", "ciseau"]
2 for elm in liste:
3 print(elm, " -> ", end="")
4 # fin de la boucle for
5 print("fin")
donne :
Lignes Iter. elm Affichage
2/3 1e "papier" papier ->
2/3 2e "caillou" papier -> caillou ->
2/3 3e "ciseau" papier -> caillou -> ciseau ->
2 o Dernier élément de la liste atteint
4 "ciseau" papier -> caillou -> ciseau -> fin
Remarque : la boucle for i in range(n) cache un parcours itératif : la
fonction range renvoie un objet (de type range) correspondant à la collection
ordonnée itérable 0, 1, 2, ..., n-1 (o ce n’est pas une liste).
CBGM (IUT-RT) Prog 1 Version 20/21 77 / 96Boucle for sur une collection ordonnée Parcours de listes
Des parcours équivalents
Exemple (Affichage des éléments d’une liste précédés de leur indice)
Pour une même liste liste = [’a’, 1, ’b’] :
2 Parcours par éléments :
1 Parcours par indices :
i = 0
for i in range(len(liste)): for elm in liste:
print(i, ":", end="") print(i, ":", end="")
print(liste[i], "//", end="") print(elm, "//", end="")
# fin de la boucle i = i+1
print("fin") # fin de la boucle
print("fin")
donnent à l’exécution :
0 : a // 1 : 1 // 2 : b // fin
Remarques : Le parcours par indices est à privilégier si le programme doit
accéder aux indices. Sinon, le parcours par éléments est plus efficace.
CBGM (IUT-RT) Prog 1 Version 20/21 78 / 96Vous pouvez aussi lire