TP6 - Boucle for et introduction aux listes
¶

A. Ridard

Boucle for¶

Rappels¶

On a vu dans le TP4 qu'une boucle for permettait de répéter plusieurs fois un bloc d'instructions.
Certaines instructions peuvent même dépendre du compteur de boucle i (pensez à write(i) par exemple).

In [ ]:
for i in range(3):
    print("tour n°", i, ": j'adore l'info !")  

Accumulateur¶

On utilise souvent un accumulateur dans le bloc d'instructions, par exemple pour calculer la somme des 5 premiers entiers : $$1 + 2 + 3 + 4 + 5$$

In [ ]:
somme = 0

for i in range(1, 6):
    somme = somme + i

print("La somme des 5 premiers entiers vaut :", somme)

Exercice 1¶

Effectuer le tableau de suivi des variables, puis vérifier chacune des lignes en complétant astucieusement le programme.

Listes¶

Problème¶

Calculer la moyenne de classe au premier test d'info.

Présentation¶

Pour résoudre ce problème, nous allons introduire une structure de données très utilisée en programmation : les listes.
De type list dans Python, elles permettent de stocker plusieurs éléments (pas forcément tous du même type).

Une liste est délimitée par des crochets, et ses éléments sont séparés par une virgule.
Comme pour une chaine de caractères, on peut l'affecter à une variable pour faciliter sa manipulation.

In [ ]:
# voici les notes de la classe au premier test d'info

notes = [ 4, 3.5, 5, 6, 5, 4, 6, 3.5, 6, 5, 2.5, 4, 4, 3.5, 6, 6, 4, 3, 6, 4.5, 6, 4.5, 6, 4.5, 5 ]

Il s'agit bien d'une liste

In [ ]:
type(notes)

Comme pour une chaîne de caractères, on peut accéder à un élément à l'aide des [ ] et de sa position.

En partant du début (la première position est 0)

In [ ]:
notes[3]

En partant de la fin (la première position est -1)

In [ ]:
notes[-2]

On peut aussi accéder à une tranche de la liste grâce au symbole : et aux positions limites.
On rappelle que le premier est inclus, mais le dernier exclus.

In [ ]:
notes[3:8]

Contrairement à une chaine de caractères, on peut modifier une liste.

On peut par exemple modifier un élément, toujours à partir de sa position.

In [ ]:
notes[3] = 5.5
print(notes)

On peut aussi ajouter un élément à la fin d'une liste grâce à la "fonction" .append()

In [ ]:
notes.append(1)
print(notes)

Remarquons ici la notation pointée qui revient souvent dans Python, comme dans tous les langages orientés objets.
Elle signifie que la méthode append est appliquée à l'objet notes avec le paramètre 1.

On peut également supprimer le dernier élément d'une liste grâce à la méthode .pop()

In [ ]:
notes.pop()
print(notes)

On peut enfin déterminer la longueur d'une liste, c'est à dire le nombre de ses éléments grâce à la fonction len()

In [ ]:
len(notes)

D'autres fonctions/méthodes seront présentées plus tard au besoin...

Pour terminer cette présentation, nous allons voir comment la boucle for se comporte avec une liste.
Pour cela, nous allons afficher les éléments de la liste [ 2, 5, 6, 4 ].

In [ ]:
lst = [2, 5, 6, 4]
n = len(lst)

for i in range(n):
    print(lst[i])
2
5
6
4

On peut aussi utliser les éléments plutôt que les positions, ce qui est souvent plus simple.

In [ ]:
for x in lst:
    print(x)
2
5
6
4

Au lieu de parcourir les positions des éléments, on parcourt les éléments directement !

Résolution¶

Résoudre le problème initial.

In [ ]:
# Réponse

Exercices¶

Exercice 1¶

Afficher les 10 premiers entiers impairs.

In [ ]:
# Réponse

Exercice 2¶

Ecrire un programme :

  • qui demande à l'utilisateur de saisir un entier n
  • qui affiche le produit des n premiers entiers
In [ ]:
# Réponse

Exercice 3¶

Ecrire un programme :

  • qui demande à l'utilisateur de saisir un entier n (entre 5 et 10), puis n notes (entre 1 et 6) qui seront ajoutées dans une liste
  • qui affiche la moyenne des notes de la liste
In [ ]:
# Réponse