Plonge dans le monde magique des listes en Python, c’est un peu comme créer une playlist personnalisée avec des super-pouvoirs de programmation ! 🌟
Introduction
Sur l’
Introduction à Python
,
tu as pu découvrir de nombreuses fonctionnalités de Python, dont les
variables.
Dans ce sujet, on va s’attaquer à un type particulier des variables : les
listes. Elles vont nous permettre de stocker plusieurs valeurs dans
une seule variable, sous un seul nom.
Avant de commencer
Si jamais tu as la moindre question, n’hésite surtout pas à appeler un
organisateur ou une organisatrice !
De plus, on te conseille de créer un nouveau fichier Python qui te servira
tout au long du sujet et d’enregistrer régulièrement ton avancement !
Comment on crée une liste ?
Pour commencer, prenons un petit exemple d’une liste des trois premières
lettres de l’alphabet. Pour cela, créons-la dans la variable ma_liste et
affichons-la.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Longueur d’une liste
À partir du nom d’une liste, il est possible de calculer sa longueur,
c’est-à-dire le nombre d’éléments qu’il y a dans cette liste. Pour cela, on
utilise la fonction len comme dans cet exemple :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Il est également possible de créer une liste avec plusieurs types d’éléments à
l’intérieur :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
À quoi correspond une liste vide ?
Une liste vide est une liste avec aucun élément à l’intérieur, qui a une
longueur égale à 0. Pour représenter une liste vide, on utilise la même
syntaxe que pour créer une liste normale, sans mettre d’élément à l’intérieur.
1
2
# Crée une liste videliste_vide = []
Accéder à un élément
Chaque élément d’une liste est numéroté, cela nous permettra par la suite de
pouvoir accéder à n’importe quel élément en fonction de sa position. On parle
alors d’indice ; ce dernier commence à 0 et se termine par la
longueur de la liste - 1.
On peut accéder à un élément d’une liste si on connaît son indice en
utilisant l’opérateur [].
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Attention à ne pas aller trop loin !
En accédant à un élément d’une liste à partir de son indice, il est possible
d’aller trop loin dans la liste. Python ne sera pas content et te renverra
une erreur, comme dans cet exemple :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Pour éviter cela, vérifie toujours que ton indice est compris entre 0 et la
longueur de la liste - 1 (dans l’exemple, entre 0 et 2).
Mission 1 : On part pour l’aventure !
Julie t’informe que tu vas partir en voyage avec elle pour présenter les stages
Girls Can Code! aux quatre coins du monde ! Pour ne pas perdre les valises que
vous allez prendre, il voudrait écrire “GCC!” dessus.
Pour cela, sers-toi les listes alphabet et caracteres ci-dessous pour
afficher “GCC!”. Tu devras alors utiliser les indices pour accéder aux
caractères.
Clique ici pour savoir comment afficher des caractères à la suite
Tu as pu voir sur l’
Introduction à Python
qu’il était possible de donner plusieurs paramètres à la fonction print.
Cela permettait d’écrire plusieurs mots à la suite, séparés par un espace.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Il est possible de changer le séparateur et de mettre celui qu’on veut par
exemple grâce au paramètre spécial sep :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Il est également possible de mettre une chaîne de caractères vide à ce paramètre
pour ne pas avoir de séparateur entre chaque mot !
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Il est également possible de modifier des éléments dans une liste en utilisant
leur indice et le signe d’assignation =, comme dans cet exemple :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Mission 2 : Le sac de Julie
Le sac de Julie est représenté par la liste sac juste en-dessous. En préparant
ses affaires, elle voudrait effectuer plusieurs opérations sur ce dernier :
multiplier par 2 le nombre à l’indice 2 ;
remplacer le texte "Bonjour le monde !" par "Hello World!" ;
remplacer tous les booléens False par True ;
remplacer le nombre 3.14 par "pi"
Affiche la liste avant et après les modifications pour vérifier que tout a
bien été modifié !
1
sac = ["Bonjour le monde !", False, 21, False, "Bouteille d'eau", False, 3.14]
Maintenant que tu sais comment créer une liste et accéder à ses éléments, il est
temps de découvrir l’utilisation de ces dernières en effectuant des opérations
dessus !
Ajouter des éléments dans une liste
Une des opérations importantes sur les listes est la possibilité d’ajouter des
éléments dans cette dernière. Il existe deux manières différentes d’effectuer
l’ajout.
Ajouter à la fin d’une liste
Il est possible d’ajouter des éléments dans une liste à la fin de cette
dernière. On dit qu’on modifie la queue de la liste. On utilise alors la méthode
append.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Méthodes et fonctions
Les méthodes et les fonctions sont deux choses très similaires en
programmation.
Sur l’
Introduction à Python
,
tu as pu découvrir les fonctions. Elles sont définies avec le mot-clé def,
elles prennent des paramètres et sont appelées avec des arguments.
Les méthodes reprennent les mêmes codes que les fonctions. La principale
différence réside sur la manière d’appeler une méthode. Pour appeler une
méthode, il faut spécifier impérativement sur quel objet (variable) porte la
méthode. Pour appeler une méthode, on utilise la syntaxe
variable.methode(argument1, argument2, ...) avec :
variable, l’objet sur lequel on veut appliquer la méthode ;
methode, le nom de la méthode utilisée ;
argument1, argument2, ..., les arguments de la méthode (il peut ne
pas y en avoir).
Mission 3 : Préparation de la valise
Julie a vraiment hâte de partir en vacances ! Cependant, elle doit d’abord
remplir sa valise pour pouvoir profiter de ses vacances.
Crée une liste valise_julie qui correspondra à la valise de Julie. Elle doit
déjà contenir les chaînes de caractères suivantes : "t-shirts" et
"pantalons".
Utilise la fonction print pour vérifier le contenu de la valise actuellement.
Après avoir vérifié le contenu, tu fais remarquer à Julie qu’elle a oublié des
affaires ! Ajoute les éléments "tongs", "casquette" dans la valise et
affiche le contenu à la fin pour vérifier que tu as tout !
Mission 4 : Entrée et liste
Julie vient de remarquer qu’elle a oublié d’acheter de la crème solaire pour ses
vacances !
Par chance, il est possible de commander sur Internet des choses en utilisant la
fonction input que tu as pu voir dans
l’
Introduction à Python
.
Utilise-la pour demander à l’utilisateur “Que voulez-vous commander ?” et
ajouter l’élément dans la liste valise_julie que tu as pu créer dans la
mission précédente.
Clique ici si tu ne te souviens pas de l'utilisation de la fonction input !
On peut lire et récupérer du texte en demandant à l’utilisateur de répondre
à une question en utilisant l’instruction input. On peut alors garder en
mémoire la réponse de l’utilisateur dans une variable.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Mission 5 : C’est maintenant au tour de ta valise !
C’est maintenant à ton tour de remplir ta valise. Pour cela, on va utiliser le
même principe que sur la mission précédente. Pour cela, tu devras demander
à Julie quels articles tu dois rajouter dans ta valise en utilisant la fonction
input.
Tu sais qu’il y aura 6 objets à mettre dans ta valise. Tu peux alors
utiliser les boucles for pour répondre à ton besoin.
Crée une liste ma_valise vide que tu rempliras petit à petit. Pour demander à
Julie quel élément tu dois rajouter dans ta valise, tu peux lui poser la
question “Que dois-je rajouter ?”.
Vérifie le contenu de ta valise petit à petit en l’affichant après avoir
ajouté un élément.
Clique ici pour avoir un rappel sur les boucles for !
La boucle for est utile lorsque tu sauras combien de fois tu veux répéter
tes instructions.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Le nombre indiqué dans les parenthèses du mot-clé range indique le nombre de
répétitions des instructions.
Ajouter un élément à un certain indice
En utilisant la méthode insert, il est possible d’ajouter un élément à une
position précise.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Il est également possible d’ajouter un élément à la fin de la liste en
utilisant la méthode insert.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Attention aux indices !
Comme pour accéder à un élément dans une liste, il faut faire attention que ce
dernier ne dépasse pas les limites de la liste.
Pour une liste contenant 3 éléments, les indices possibles pour utiliser la
méthode insert sont 0, 1, 2 et 3.
Mission 6 : Planning des vacances
Julie a déjà préparé un planning pour les vacances. Cependant, tu voudrais
ajouter à ce programme quelques activités de loisirs dans un ordre précis.
Le planning est représenté par la liste planning décrite ci-dessous. Tu
voudrais insérer ces activités :
"Balade en ville" avant le voyage retour ;
"Plage" après le voyage aller ;
"Glace" entre la présentation des stages GCC! et le restaurant.
1
planning = ["Voyage aller", "Présentation des GCC!", "Restaurant", "Voyage retour"]
Supprimer des éléments dans une liste
Maintenant que tu sais ajouter des éléments dans une liste, il est temps de
pouvoir les supprimer ! Il existe plusieurs manières pour supprimer des
éléments.
N’hésite surtout pas à appeler un organisateur si une partie est floue pour
toi !
Supprimer à partir d’un indice
La méthode pop permet de supprimer un élément d’une liste à partir d’un
indice. Pour cela, il faut donner en paramètre l’indice de l’élément que tu
voudrais supprimer.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Attention aux indices !
Comme pour l’ajout dans une liste, il est très important de ne pas dépasser
les limites de la liste. L’argument donné à la méthode pop doit
correspondre à un élément de la liste.
Il est également possible d’appeler la méthode popsans argument. Cela te
permettra de supprimer le dernier élément de ta liste.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Mission 7 : Les problèmes commencent…
Enfin ! Les valises sont prêtes et c’est déjà l’heure de partir ! Cependant, en
arrivant à l’aéroport, on te dit que ta valise est trop lourde ! Pour ne pas
payer le supplément, tu vas devoir enlever des choses de ta valise.
En utilisant la liste valise fournie, enlève le parapluie, la crème solaire et
la casquette en utilisant la méthode pop. N’oublie pas d’afficher ta valise à
la fin pour vérifier que tout est aux normes !
La deuxième méthode pour supprimer un élément d’une liste, consiste à chercher
l’élément à enlever. Cette recherche est faite automatiquement par
l’ordinateur, et tu as juste à donner le nom de l’élément à supprimer à la
méthode remove.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
La méthode remove va supprimer le premier élément qui correspond à ce qui doit
être supprimé. Si un élément apparaît plusieurs fois dans une liste, seulement
le premier élément sera retiré.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Supprimer un élément qui n’existe pas
En utilisant la méthode remove, il faut faire attention à ce que l’élément à
supprimer existe dans la liste.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Mission 8 : C’est l’heure du goûter !
Avant d’embarquer dans l’avion, vous décidez de manger quelques gâteaux en guise
de goûter. Pour cela, Julie avait déjà prévu un sac rempli de bonnes choses qui
correspond à la liste sac_gouter.
Vous avez dévoré le Kouign-amann et le pain au chocolat. Il faut alors les
supprimer de notre représentation en Python. Pour cela, tu peux t’aider de la
méthode remove. N’oublie pas d’afficher la liste à la fin !
1
sac_gouter = ["kouign-amann", "croissant", "pain au chocolat", "tarte à la pomme"]
Parcourir une liste à l’aide d’une boucle
Il est fréquent de vouloir accéder à tous les éléments d’une liste un par
un. On dit alors qu’on parcourt la liste. Ce parcours se fait au travers
d’une boucle for.
Il existe deux manières de parcourir une liste, mais elles reviennent à la même
chose.
Parcourir une liste à l’aide des indices
Pour rappel, il est possible d’accéder à un élément à partir de son
indice (sa position) dans la liste. Pour accéder à chaque élément, il faut
ainsi avoir un nombre allant de 0 à la longueur de la liste - 1, ce qui
correspond aux valeurs possibles comme indice.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Si tu n’as pas compris cette méthode, n’hésite pas à appeler un organisateur ou
à revoir la partie des boucles for du sujet
Introduction à Python
.
Mission 9 : Trier les bonbons !
En se promenant dans les magasins de l’aéroport, tu remarques qu’un vendeur
a besoin d’aide pour trier ses articles. Il voudrait séparer tous les paquets de
Prolobonbons d’un grand carton.
Il voudrait que tu l’aides à retrouver tous les indices (positions) dans la liste
carton_bonbons où l’on trouve l’élément "Prolobonbons" et à mettre ces indices dans une
nouvelle liste ! À la fin, tu pourras afficher cette nouvelle liste.
Parcourir une liste à l’aide d’une boucle spécifique
Il existe une autre méthode pour parcourir chaque élément d’une liste, sans
passer par les indices. Il s’agit d’utiliser une boucle forpour chaque
élément dans la liste donnée. On utilise alors la syntaxe suivante :
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Dans l’exemple précédent, element correspond au nom de variable de l’élément
pris dans la liste ma_liste. Il est possible de changer le nom de la variable
par n’importe quel nom.
Variable existante que dans la boucle
Attention, la variable après le mot-clé for (element dans l’exemple
précédent) est utilisable uniquement dans le bloc de code correspondant à la
boucle. Il ne peut pas être utilisé après la boucle (dans le bloc de code qui
n’est pas indenté).
Si jamais tu n’as pas compris cette partie, n’hésite pas à appeler un
organisateur. C’est une notion importante qui te sera souvent utile.
Mission 10 : Embarquement !
C’est l’heure de l’embarquement et il faut appeler les passagers un à un afin
qu’ils puissent entrer dans l’avion ! La liste des passagers est donnée par la
liste passagers.
Il faut alors appeler les passagers en affichant : “Passager {nom} est appelé !”
en remplaçant {nom} par le nom du passager ou de la passagère.
Après avoir ajouté et supprimé des éléments dans une liste, il faut pouvoir
vérifier si un élément existe dans une liste. Cette vérification peut se
faire avec le mot-clé in (dans 🇫🇷) dans une condition.
Clique ici si tu ne te souviens plus des conditions !
On utilise l’instruction if (si 🇫🇷) que l’on fait suivre d’une condition
que l’on veut tester. Elle permet d’exécuter un morceau de code uniquement
lorsque la condition est vraie.
Pour vérifier une certaine condition, on va utiliser la syntaxe if condition:,
suivi d’un bloc de code indenté. Le bloc de code en question sera exécuté
seulement sicondition est vraie, c’est-à-dire, seulement sicondition renvoie le booléen True.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Un if peut être accompagné d’un else (sinon 🇫🇷) qui exécute un bloc de
code uniquement si la condition du if est fausse.
Enfin, il y a aussi le elif qui est la contraction du else et du if. Il
n’est exécuté que si sa condition est vraie et que les conditions précédentes
sont fausses.
1
2
age =16
3
4
if age <=11:
print("École primaire")
5
6
elif age <=16:
print("Collège")
7
8
elif age <=18:
print("Lycée")
9
10
else:
print("Études supérieures")
Définit une variable age
Vérifie que l’âge est inférieur ou égal à 11
Vérifie que l’âge est inférieur ou égal à 16 et supérieur à 11
Vérifie que l’âge est inférieur ou égal à 18 et supérieur à 16
Exécuté dans tous les autres cas, où l’âge est supérieur à 18
Appuie sur Run pour lancer le code :
Prenons un exemple pour bien comprendre l’utilisation du mot-clé in dans une
condition.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Le mot-clé in est très utile lorsque la liste donnée devient très longue ou
si des ajouts et des suppressions sont faites.
Concaténer deux listes
En Python, il est possible de concaténer deux listes, c’est-à-dire de
créer une seule liste en ajoutant tous les éléments de la deuxième liste à
la première. On utilise alors l’opérateur + pour effectuer cette action.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Mission 11 : Dernières vérifications !
Julie voudrait vérifier une dernière fois qu’elle n’ait besoin de rien acheter à
l’aéroport en arrivant !
Pour cela, utilise les listes données qui correspondent aux affaires de Julie.
Elle voudrait vérifier qu’elle a les objets suivants :
bouteille d’eau ;
éventail ;
lunettes de soleil ;
casquette ;
tongs.
Si un élément n’est pas dans cette liste, affiche “Il manque {element} !”, en
remplaçant {element} par l’élément en question. S’il existe dans les affaires
de Julie, affiche, "{element} est présent !" Pour cela, utilise l’opérateur
+ sur les listes pour récupérer l’ensemble des affaires de Julie.
En réutilisant le même principe de concaténation, il est possible de répéter
cette opération sur une même liste. On peut alors obtenir une grande liste
assez facilement, en répétant une même liste, un certain nombre de fois.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Memory
Passons à la pratique en créant notre projet, le jeu Memory ! Le but du jeu
est de former des paires en retournant deux cartes. Si elles ne sont pas
identiques, on les retourne face cachée. La partie se termine lorsque toutes les
cartes sont découvertes.
Créer un fichier pour le projet
Avant de commencer, nous te conseillons de créer un fichier pour ton projet
du Memory. Tu pourras alors le lancer à la fin pour tester et jouer à ton
propre jeu !
Partie 1 : Créer les différentes listes
On va alors utiliser des listes pour représenter notre jeu, une liste
solution, qui contiendra toutes les cartes du jeu, et une liste partie, qui
correspond au statut actuel de la partie avec des cartes cachées et des cartes
découvertes.
Créer la liste solution
Pour créer notre liste solution, sers toi de la liste donnée ci-dessous qui
représente nos différents éléments. Il faudra concaténer la liste solution
à elle-même pour avoir des paires d’éléments. Pour cela, tu peux utiliser
l’opérateur *.
1
['🦅', '🐶', '🐥', '🐼', '🌹', '🍄']
Il faudra également trier aléatoirement notre liste solution afin d’avoir
un peu plus de challenge.
Trier aléatoirement les éléments d’une liste
Pour trier aléatoirement les éléments d’une liste, on va utiliser la
fonction shuffle de la bibliothèque random.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Afin de suivre en temps réel notre partie, nous allons utiliser la liste
partie. Au tout début de la partie, toutes les cartes sont face cachée. Pour
représenter les cartes face cachée, on va utiliser le caractère 'X'.
Créer la liste de la partie
Ton but est de créer la liste partie qui représentera l’avancement actuel de
la partie. Sa longueur correspondra à la longueur de la liste solution et sera
composée uniquement de caractères 'X'. Tu peux utiliser l’opérateur *.
Pour terminer, on souhaite afficher la liste partie.
Partie 2 : Créer la boucle de jeu
Afin de pouvoir jouer, nous allons répéter plusieurs actions, notamment la
demande au joueur des indices des cartes qu’il souhaite retourner. On va alors
utiliser une bouclewhile.
Clique ici pour avoir un rappel sur les boucles while
La boucle while (tant que 🇫🇷) est une boucle dont le bloc de code est
répété tant qu’une condition est vérifiée. On l’écrit similairement à des
conditions while condition:.
Appuie sur le bouton Run pour exécuter le code python ci-dessous
Le résultat :
Créer la boucle de jeu
Tant qu’il reste des caractères 'X' (des cartes cachées) dans la liste
partie, nous allons continuer à jouer. À partir de cette information, essaye
de créer la boucle while ! Tu devras utiliser le mot-clé in !
Partie 3 : Demander les indices pour découvrir les éléments
Afin de découvrir les cartes, nous allons demander au joueur de choisir deux
indices dans les listes afin de former des paires.
Demander les indices pour découvrir les éléments
Pour demander à l’utilisateur des indices, nous allons utiliser la fonction
input. Tu peux demander avec la question suivante : “Quel indice souhaites-tu
jouer ?” et mettre la réponse dans la variable choix1 en transformant la
sortie en nombre avec la fonction int.
Par la suite, il faut récupérer la carte sélectionnée dans la liste solution
en fonction de l’indice choix1 et la placer dans la liste partie à la même
position.
Enfin, tu peux afficher la liste partie pour voir l’avancement du jeu.
Afin de t’aider, voici un petit algorithme récapitulant tous les éléments à
faire dans cette partie :
Il faut maintenant faire la même chose pour le deuxième choix, en remplaçant
choix1 par choix2.
Partie 4 : Vérifier que les cartes sont différentes
Le but du jeu est de former des paires afin de découvrir toutes les cartes. Si
les deux cartes tirées ne sont pas les mêmes, il faut alors cacher les cartes
en question.
Vérifier que les cartes sont différentes
En utilisant une condition, il faut vérifier si les cartes retournées dans
la liste partie sont différentes en utilisant les indices choix1 et
choix2.
Si les cartes retournées sont différentes, il faut remettre dans la liste
partie aux positions choisies le caractère 'X'.
Partie 5 : Afficher une phrase de fin
Après avoir découvert toutes les cartes, il faut féliciter la joueuse.
Afficher une phrase de fin
Après la boucle while, tu peux afficher la phrase suivante : “Bravo tu as
gagné !”.
Tu devrais à ce moment là avoir un jeu fonctionnel ! N’hésite pas à le tester et
à changer les cartes, si tu le souhaites, par d’autres caractères, des phrases,
des mots, des nombres ou tout ce que tu voudrais !
Bonus
Il existe quelques améliorations qui sont possibles. N’hésite pas à en choisir
une ou plusieurs si tu le souhaites !
Compter le nombre de coups
Afin de donner plus de peps à ton jeu, il est possible de compter le nombre de
coups faits par la joueuse. Il te faudra alors une variable coups qui te
compte le nombre de coups et l’incrémenter à chaque tour de la boucle
while en utilisant l’opérateur +=. Tu peux alors afficher le nombre de
coups faits par la joueuse à la fin du jeu.
Vérifier que les indices ne soient pas impossible
Il est possible que la joueuse soit pas très coopérative et donne des indices
trop élévés. Tu peux alors ajouter une condition qui vérifie si les indices
proposés ne sont pas en dehors des listes solution et partie.
Proposer plusieurs listes pour jouer
Il est possible de proposer, avant le début du jeu, différents choix de
cartes à découvrir avec par exemple une liste solution d’animaux, de pays,
de prénom ou autres…
C’est la fin !
Bravo ! Tu as atteint la fin du sujet sur les listes. Si jamais tu as la
moindre question, n’hésite pas à appeler un organisateur.
Tu peux maintenant passer à la suite et découvrir de nouvelles notions !