Programmation Python Rémy CHOLLET* Cléo BARAS Lorraine GOEURIOT Jérôme MARTIN Version 2020/2021 - Chamilo

La page est créée Muriel Mathieu
 
CONTINUER À LIRE
Programmation Python Rémy CHOLLET* Cléo BARAS Lorraine GOEURIOT Jérôme MARTIN Version 2020/2021 - Chamilo
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 / 96
Chapitre 1

                Introduction

CBGM (IUT-RT)        Prog 1    Version 20/21   2 / 96
L’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 / 96
L’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 / 96
L’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 / 96
Dé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 / 96
Dé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 / 96
Dé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 / 96
Dé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 / 96
Dé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 / 96
Dé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 / 96
Dé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 / 96
Définition   Le langage Python

Some Spam ?

 https://www.dailymotion.com/video/x2hwqlw
      CBGM (IUT-RT)                   Prog 1                   Version 20/21   13 / 96
Dé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 / 96
Dé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 / 96
Chapitre 2

                Variables et expressions

CBGM (IUT-RT)              Prog 1          Version 20/21   16 / 96
Variables    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 / 96
889
                                     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 / 96
Variables    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 / 96
Variables    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 / 96
Variables    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 / 96
Variables    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 / 96
Expression    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 / 96
Expression    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 / 96
Expression      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 / 96
Expression    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 / 96
Expression       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 / 96
Instructions   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 / 96
Instructions   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 / 96
Chapitre 3

Structure d’un programme : modules et
               fonctions

 CBGM (IUT-RT)       Prog 1      Version 20/21   30 / 96
Modules 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 / 96
Modules 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 / 96
Modules 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/21
Modules 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 / 96
Modules 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 / 96
Modules 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 / 96
Modules 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 / 96
Modules 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 / 96
Programme/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 / 96
Programme/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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Fonctions    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 / 96
Chapitre 4

                Structures alternatives

CBGM (IUT-RT)             Prog 1          Version 20/21   49 / 96
Expressions 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 / 96
Expressions 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 égal
Expressions 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.5
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Structures 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 / 96
Chapitre 5

                Structures répétitives

CBGM (IUT-RT)             Prog 1         Version 20/21   64 / 96
Structure 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Boucle 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 / 96
Vous pouvez aussi lire