6. Les types séquentiels¶
Mémento Python
Raccourcis clavier
Certains programmes nécessitent l’utilisation d’un grand nombres de valeurs. Il serait impraticable de les mettre chacune dans une variable différente. Comme d’autres langages de programmation, Python offre la possibilité de stocker des séquences de valeurs dans des variables de type séquentiel (ou itérable).
Le type string
que nous connaissons déjà est un exemple de variable séquentiel car il s’agit simplement d’une séquence de caractères !
Le type liste¶
Une liste est une variable de type séquentiel. C’est une séquence ordonnée d’objets quelconques (nombres, textes, fonctions, etc…).
Pour définir une liste, on met simplement la liste des objets que contient la liste dans des crochets []
séparés par des virgules.
On peut accéder au contenu d’une liste en indiquant entre crochets []
le numéro de l’élément que l’on souhaite. Attention, le numérotation commence à 0 !
On appelle le numéro d’un élément l’index. Ainsi, par exemple, le 3ème élément d’une liste se trouve à l’index 2.
Il est aussi possible d’accéder aux éléments en partant de la fin en commençant par l’index -1 pour le dernier élément, puis -2, -3, etc.
Exercice 21 - Listes de branches (facile 😎)
Créez une liste branches
et une liste moyennes
qui contiennent respectivement les noms de 3 branches du gymnase et les moyennes que vous y avez.
Affichez ensuite la moyenne pour chaque branche.
Solution
Pour modifier un élément d’une liste à un certain index, il suffit d’utiliser le signe =
pour mettre une nouvelle valeur à l’index voulu.
Pour ajouter un élément à la fin d’une liste, on utilise la méthode append()
(“ajouter” en français) en donnant en argument la valeur à ajouter.
Pour aller plus loin
Exercice 22 - Modifications de listes (facile 😎)
Reprenez l’exercice précédent (l’exercice 21).
Modifiez la moyenne de l’une de vos branches.
Ajoutez une nouvelle branche à votre liste de branches. Ajoutez également la moyenne correspondante dans la liste de moyennes.
Affichez les nouvelles données.
Solution
Les caractères d’une chaînes de caractères (str
) peuvent aussi être indexés (numérotés). Chaque élément d’un string correspond alors à un caractère.
La notation [i:j]
, après le nom d’une variable qui contient une liste, permet d’extraire une sous-liste de la liste. Cette sous-liste, aussi appelée tranche, est une partie de la liste identifiée par les deux index i
et j
. La sous-liste contiendra donc les éléments se trouvant entre i
et j-1
.
Le mot-clé in
permet de tester si une valeur se trouve dans une liste (ou n’importe quelle autre variable de type séquentiel).
A l’inverse, not in
permet de tester l’absence d’une valeur.
De la même manière, in
permet de tester si un mot se trouve dans une phrase ou un texte.
L’opérateur +
permet de concaténer (appondre) plusieurs listes ou plusieurs chaînes de caractères (string) ensemble.
La boucle for¶
L’instruction for ... in ...
permet d’itérer sur une variable de type séquentiel (par exemple une liste) et de répéter un bloc d’instructions pour chaque valeur de la séquence.
for valeur in liste
peut être traduit en français par pour chaque valeur de la liste
et permet donc d’itérer sur chaque valeur.
Dans l’exemple ci-dessous, la variable name
prendra successivement les valeurs de la liste presidents
et la fonction print()
sera à chaque fois exécutée.
Une variable qui change ainsi pour chaque élément d’une séquence est appelée une variable d’itération.
L’exemple suivant montre comment itérer sur une liste de couleurs.
Exercice 23 - Calcul de moyenne (moyen 🤓)
Ecrivez une fonction calcule_moyenne()
qui prend une liste de nombres en argument et qui retourne la moyenne de ces nombres.
Indice: la fonction len()
permet de calculer la longueur d’une liste.
Solution
Le type range¶
Une range
(“intervale” en français) est un autre exemple de variable de type séquentiel.
Elles sont utilisées pour stocker des intervales de nombres entiers de manière plus efficace qu’une liste. Une variable de type range
peut être créée avec la fonction range(start, stop, step)
qui retourne un interval semi-fermé [start, stop[
avec un incrément de step
.
start
est la valeur de départ (vaut 0 si pas indiqué),stop
est la valeur finale, mais sans l’inclure,step
est l’incrément (vaut 1 si pas indiqué).
L’exemple suivant affiche le carré des nombres 1 à 9.
L’exemple suivant dessine un polygone en utilisant une boucle for
et une range
.
En utilisant l’argument step
, on peut visualiser l’intervale [-50, 250[ avec un incrément de 50.
En imbriquant 2 boucles for
, il est possible de construire toutes les tables de multiplication (jusqu’à 9 dans cet exemple).
i
et j
sont des noms de variable très communément utilisés pour itérer sur des nombres.
Exercice 24 - Nombres premiers (difficile 🤯)
Ecrivez une fonction
est_premier()
qui contrôle si un nombre donné en argument est premier ou non et retourne la valeur logique associée.
Pour rappel, un nombre est premier quand il n’est divisible par aucun autre nombre (à part 1 et lui-même).
Les plus petits sont: 2, 3, 5, 7, 11, 13, etc…Utilisez cette fonction pour afficher tous les nombres premiers plus petits que 1000.
Solution
Le jeu du pendu (optionnel)¶
Le jeu du pendu consiste à trouver un mot en devinant les lettres qui le composent. Le jeu se joue traditionnellement à deux, avec un papier et un crayon, avec le dessin d’une potence, dans lequel, pour chaque erreur, un trait du bonhomme allumette est ajouté.
Exercice du pendu (difficile 🤯)
Modifiez le programme du pendu pour que l’ordinateur choisisse aléatoirement un mot à trouver parmi une liste de mots de votre choix.
Plusieurs pistes de solution:
Sélectionnez un mot de la liste à un index aléatoire avec la fonction
randint()
du modulerandom
.Sélectionnez un mot de la liste aléatoirement avec la fonction
choice()
du modulerandom
.
Faites-en sorte que le programme s’arrête dès que vous avez trouvé le mot mystère et affiche ‘Gagné !’.
Une possible manière de faire est d’utiliser l’instruction break
qui permet de sortir immédiatement de la boucle courante (plus d’infos ici).
Solution
Vous avez tout terminé ? Allez faire un tour sur Modulo !