Les listes en Python
Une liste est une collection ordonnée d'éléments, modifiable, qui peut contenir des nombres, des chaînes ou même d'autres listes. C'est la structure de base pour stocker les termes d'une suite ou des données.
Création et accès
[]. Exemple : ma_liste = [1, 4, 9, 16, 25]. Une liste vide se crée par vide = [].
Chaque élément a un indice : le premier est à l'indice 0, le deuxième à l'indice 1, etc. On accède à un élément par ma_liste[indice]. On peut aussi accéder à partir de la fin avec des indices négatifs : ma_liste[-1] donne le dernier élément.
cubes = [1, 8, 27, 64, 125]
print(cubes[0]) # affiche 1
print(cubes[3]) # affiche 64
print(cubes[-1]) # affiche 125
Modifier une liste
On peut changer un élément en affectant à son indice : cubes[2] = 30 remplace 27 par 30. Pour ajouter un élément à la fin, on utilise append(). La fonction len(liste) donne le nombre d'éléments.
liste.append(x): ajoutexà la fin.len(liste): retourne la longueur.liste.pop(): supprime le dernier élément (utile parfois).- Concaténation :
liste1 + liste2crée une nouvelle liste.
termes = []
for i in range(5):
termes.append(i**2) # ajoute 0, 1, 4, 9, 16
print(termes) # [0, 1, 4, 9, 16]
La boucle for
La boucle for permet de répéter une action pour chaque élément d'une séquence (liste, range, etc.). Elle est parfaite pour générer des termes de suite ou parcourir une liste.
range()
range(n) génère les entiers de 0 à n-1. range(début, fin) va de début à fin-1. range(début, fin, pas) permet de préciser le pas.
for i in range(5): # i prend les valeurs 0,1,2,3,4
print(i)
for k in range(2, 6): # 2,3,4,5
print(k)
for n in range(1, 10, 2): # 1,3,5,7,9 (pas de 2)
print(n)
Parcourir une liste
On peut itérer directement sur les éléments d'une liste :
couleurs = ["rouge", "vert", "bleu"]
for c in couleurs:
print(c)
Application : génération d'une suite définie explicitement
Pour stocker les termes d'une suite $u_n = f(n)$, on crée une liste vide et on ajoute chaque terme avec append dans une boucle for.
u = []
for n in range(10): # n = 0..9
u.append(n**2)
print(u) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
La boucle while
La boucle while répète un bloc tant qu'une condition est vraie. On l'utilise surtout pour rechercher un seuil ou pour des suites définies par récurrence où le nombre d'itérations n'est pas connu à l'avance.
while condition:
instruction 1
instruction 2
...
Attention aux boucles infinies : il faut que la condition finisse par devenir fausse (par exemple en modifiant une variable dans la boucle).
Exemple typique : atteindre un seuil
capital = 1000
annee = 0
while capital <= 1500:
capital = capital * 1.03
annee = annee + 1
print("Cela prendra", annee, "ans.") # Résultat : 14 ans
Boucle while avec récurrence
On peut utiliser while pour calculer les termes successifs d'une suite récurrente jusqu'à une condition d'arrêt.
u = 10
n = 0
while u >= 4:
u = 0.5 * u + 3
n = n + 1
print("n =", n, "et u =", u) # n=5, u=3.5
for: quand on connaît à l'avance le nombre d'itérations (ex: 10 termes, parcourir une liste).while: quand la répétition dépend d'une condition (ex: dépasser un seuil, convergence).
Exercices corrigés
Exercice 1 – Suite arithmétique (for)
Écrire un programme qui stocke dans une liste les 20 premiers termes de la suite arithmétique de premier terme $u_0 = 5$ et de raison $r = 3$.
Solution :
u = []
terme = 5
for i in range(20):
u.append(terme)
terme = terme + 3
print(u)
# [5, 8, 11, 14, 17, 20, 23, 26, 29, 32,
# 35, 38, 41, 44, 47, 50, 53, 56, 59, 62]
Exercice 2 – Somme des termes d'une suite géométrique (for)
Écrire un programme qui calcule la somme des 10 premiers termes de la suite géométrique de premier terme 2 et de raison 3 (c'est-à-dire $2 + 6 + 18 + \cdots + 2\times 3^9$).
Solution :
somme = 0
terme = 2
for i in range(10): # 10 termes
somme = somme + terme
terme = terme * 3
print("Somme =", somme) # 59048
Exercice 3 – Recherche de seuil avec while
On considère la suite $u_0 = 1$ et $u_{n+1} = 1.2 \times u_n$. Déterminer le plus petit entier $n$ tel que $u_n > 100$. Donner le code Python correspondant.
Solution :
u = 1
n = 0
while u <= 100:
u = 1.2 * u
n = n + 1
print("n =", n, "et u =", u) # n = 24, u ≈ 119.6
Exercice 4 – Fibonacci (for + while combinés)
La suite de Fibonacci est définie par $F_0 = 1$, $F_1 = 1$, et $F_{n+2} = F_{n+1} + F_n$. Écrire un programme qui construit la liste des 15 premiers termes, puis un autre qui trouve le premier terme dépassant 1000.
Solution (liste des 15 termes) :
fib = [1, 1]
for i in range(2, 15):
fib.append(fib[-1] + fib[-2])
print(fib) # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
Solution (dépassement de 1000) :
a, b = 1, 1
n = 1
while b <= 1000:
a, b = b, a + b # décale d'un cran
n = n + 1
print("F_", n, "=", b) # F_16 = 1597