Listes | Exercices 1-5

Enoncé exercice 1

Ecrire un programme Python qui lit une liste d’entiers, puis l’affiche, et affiche ensuite seulement ses nombres pairs.

Correction exercice 1

Dans cet exercice, on va commencer le programme par la création d’une liste vide appelée liste (ligne 1). Cette liste va servir pour contenir les entiers que va entrer l’utilisateur. On demandera ensuite à l’utilisateur d’entrer le nombre d’éléments qu’il souhaite introduire, et on le mettra dans la variable n (ligne 2).

Pour lire les n éléments qui seront entrés, on va utiliser une boucle while à n itérations (ligne 4). Pour faire ceci, on initialisera une variable i par 0, et on l’incrémentera par 1, à chaque itération de la boucle, tant qu’elle ne dépasse pas n.

Au sein de la boucle while, on demandera à chaque fois d’entrer un entier qu’on lira vers une variable entière a (ligne 5). Pour ajouter ensuite cet élément à la liste, on utilisera la méthode append de cette forme ; liste.append(a). Comme ça, il se chargera de l’ajout du nouvel élément à la fin de la liste liste (ligne 6).

Pour afficher la liste, il suffira de la mentionner dans la fonction print comme on fera normalement pour une variable simple (ligne 8).

Pour afficher seulement les éléments pairs de la liste, on utilisera la boucle for de la manière suivante : for a in liste (ligne 10). Et on effectuera ensuite un test de parité sur chaque élément a de la liste, et on affiche ceux qui sont pairs (lignes 11-12).

Solution exercice 1
liste=[]
n=int(input("Entrez le nombre d'éléments de la liste: "))
i=1
while i<=n:
    a=int(input("Entrez l'élément {}: ".format(i)))
    liste.append(a)
    i=i+1
print("Voici la liste: ",liste)
print("Voici les entiers pairs de la liste:",end=" ")
for a in liste:
    if a%2==0:
        print(a,end=" ")
Enoncé exercice 2

Ecrire un programme Python qui lit une liste d’entiers, l’affiche, puis recherche la valeur de l’élément maximal et l’affiche.

Correction exercice 2

On démarre le programme avec la création d’une liste vide nommée liste (ligne 1). On demande ensuite à l’utilisateur d’entrer le nombre d’entiers qui seront entrés, et on le met dans la variable n (ligne 2). On utilisera par la suite une boucle for à n itérations, pour remplir la liste avec les entiers que va entrer l’utilisateur (lignes 3-5). On se servira dans ceci de la méthode append (ligne 5).

Une fois la liste est prête, on l’affichera par le biais de la fonction print (ligne 6).

Pour trouver l’élément maximal, on va commencer par initialiser une variable max, par la valeur du premier élément de la liste liste[0], en dehors de la boucle for qui servira au parcourt de la liste (ligne 7-10). Dans le bloc de la boucle, on va comparer l’élément atteint a avec la valeur actuelle de la variable max. Dans le cas où il est supérieur à max on actualisera la valeur de max en lui affectant a (lignes 9-10).

Après la sortie de la boucle for, la variable max contiendra la valeur maximale trouvée dans la liste. Il suffira alors d’afficher la variable max à l’aide la fonction print (ligne 11).

Solution exercice 2
liste=[]
n=int(input("Entrez le nombre d'éléments de la liste: "))
for i in range(0,n):
    a=int(input("Entrez l'élément {}: ".format(i+1)))
    liste.append(a)
print("Voici la liste: ",liste)
max=liste[0]
for a in liste:
    if a>max:
        max=a
print("Le max est: ",max)
Enoncé exercice 3

Ecrire un programme Python qui lit une liste de mots, les réordonne dans l’ordre alphabétique, en utilisant la méthode sort, puis les affiche.

Correction exercice 3

On commence le programme par la création puis le remplissage de la liste de mots, qu’on va appeler mots (lignes 1-5). En enchaîne ensuite par l’affichage de la liste avant qu’elle ne soit triée (ligne 6).

Pour trier la liste mots dans l’ordre alphabétique, il suffit de faire appel à la méthode sort. Elle sera utilisée de la manière suivant ; mots.sort() (ligne 7).

On termine le programme par l’affichage de la liste mots par la fonction print (ligne 8).

Solution exercice 3
mots=[]
n=int(input("Entrez le nombre de mots de la liste: "))
for i in range(0,n):
    mot=input("Entrez le mot {}: ".format(i+1))
    mots.append(mot)
print("Voici la liste avant tri: ",mots)
mots.sort()
print("Voici la liste après tri: ",mots)
Enoncé exercice 4

Ecrire un programme Python qui lit une liste d’entiers, et supprime toutes les occurrences d’un entier entré par l’utilisateur, en utilisant la méthode pop.

Correction exercice 4

Comme on en a l’habitude jusqu’ici, on commencera par la création puis la lecture de la liste d’entiers (lignes 1-7). On enchaîne ensuite par son affichage et la lecture de l’entier à supprimer (lignes 8-9).

Pour supprimer un entier a de la liste liste en utilisant la méthode pop, on va la parcourir, à l’aide d’une boucle while, à la recherche des éléments égaux à a (lignes 10-12). Une fois qu’on en trouve un, dans une position d’indice i, on va procéder à sa suppression (lignes 12-14). Pour le supprimer il suffira de passer cet indice i à la méthode pop comme suit ; liste.pop(i) (ligne 13). Après cette suppression, l’élément qui occupait l’indice i+1, sera maintenant dans la position i, comme montré sur l’exemple suivant :

Dans le fonctionnement normal de la boucle while, la prochaine itération sera consacrée au traitement de l’élément dans l’indice i+1. Ceci va avoir comme conséquence, d’ignorer le traitement de l’élément qui a été déplacé de la position i+1 vers la position i. De cette manière, si cet élément est égal à a, il va échapper à la suppression. Pour remédier à ce problème, il suffira de reculer en arrière, d’un pas, après chaque opération de suppression. Pour faire ceci, il faudra juste décrémenter i par 1 (ligne 14).

Il est clair qu’après chaque opération de suppression qu’on se retrouvera avec un élément de moins dans la liste, donc si on a choisi de travailler avec n au lieu de len(liste) dans la condition de la boucle while, nous devrons veiller à actualiser la valeur de n chaque fois qu’un élément a été supprimé. Et ce, en décrémentant sa valeur par 1.

Le programme sera terminé en affichant la liste, pour pouvoir noter les modifications apportées à elle (ligne 16).

Solution exercice 4
liste=[]
n=int(input("Entrez le nombre d'éléments de la liste: "))
i=1
while i<=n:
    a=int(input("Entrez l'élément {}: ".format(i)))
    liste.append(a)
    i=i+1
print("Voici la liste initiale: ",liste)
a=int(input("Entrez l'élément à supprimer: "))
i=0
while i<len(liste):
    if(liste[i]==a):
        liste.pop(i)
        i=i-1
    i=i+1
print("Voici la liste après suppression: ",liste)
Enoncé exercice 5

Ecrire un programme Python qui lit une liste d’entiers, la trie, puis lit un entier et utilise la méthode insert pour l’insérer dans la liste de telle sorte que la liste reste triée.

Correction exercice 5

On commence comme toujours par la création puis la lecture de la liste (lignes 1-5). Puis, on affiche la liste, on la trie dans un ordre croissant, à l’aide la méthode sort, et on la réaffiche (lignes 6-8). On demande ensuite à l’utilisateur d’entrer l’entier a à insérer dans la liste (ligne 9).

Dans un premier lieu, il faudra déterminer la position où on doit insérer l’élément a. Cette position est caractérisée par le fait qu’elle contient le premier élément de la liste qui soit supérieur ou égal à a. Pour la retrouver, il suffira d’utiliser une boucle while qui incrémentera l’indice i tant que l’élément liste[i] est inférieur à a. Et pour rester toujours au sein de la liste, il ne faudra pas que i dépasse n. Ceci va donner comme condition pour la boucle, l’expression ; i<n and liste[i]<a (ligne 11). Il faudra bien commencer par i<n, pour pouvoir la tester avant liste[i]<a, car si i atteint la valeur n, liste[i] générera une erreur, parce que la liste ne contient pas un élément dont l’indice est n.

Au sein de la boucle while, on va juste incrémenter la valeur de i par 1 (ligne 12).

A l’arrêt de la boucle, la valeur de i est soit égale à :

  • l’indice du premier élément de la liste qui est supérieur ou égal à a;
  • n si tous les éléments de la liste sont inférieurs à a.

Dans les deux cas, on va insérer a dans la position n. Pour faire ceci, on fera appel à la méthode insert qui se chargera de l’opération d’insertion. Il suffira de lui transmettre l’indice de la position d’insertion i et la valeur à insérer a. Ceci donnera l’instruction liste.insert(i,a) (ligne 13).

On termine le programme par l’affichage de la liste pour visualiser le résultat de l’insertion (ligne 14).

Solution exercice 5
liste=[]
n=int(input("Entrez le nombre d'éléments de la liste: "))
for i in range(0,n):
    a=int(input("Entrez l'élément {}: ".format(i+1)))
    liste.append(a)
print("La liste avant tri: ",liste)
liste.sort()
print("La liste après tri: ",liste)
a=int(input("Entrez l'élément à insérer: "))
i=0
while i<n and liste[i]<a:
    i=i+1
liste.insert(i,a)
print("La liste après insertion: ",liste)