Boucles bornées avec Python
Lorsque vous débutez avec Python, vous devez rapidement connaître les structures que sont les conditions (voir les conditions avec Python) et les boucles (itérations).
Vous le savez certainement, il existe deux sortes de boucle : celles qui fonctionnent avec while et qui se répètent tant qu’une instruction est vérifiée (voir les boucles while avec Python) et celles dont la structure se base sur l'instruction for et qui tournent un nombre de fois défini à l’avance.
Nous allons explorer ce second type.
Structure itérative
La variable est déclarée lors de l’instruction for. Pour une répétition de n fois, utilisez le mot-clé in et l’itérateur range(n). Attention, par défaut Python commence à compter à partir de zéro.
Vous pouvez intégrer une première valeur dans l’instruction range, ainsi qu’un pas. Nous le verrons dans l’exemple ci-dessous.
Exemple
Un capital dont le montant est saisi par l’utilisateur est rémunéré au taux annuel de \(2\%.\) Les intérêts sont composés. À combien s’élève ce capital au bout de dix ans ?
Le coefficient multiplicateur qui traduit une augmentation de \(2\%\) est 1,02.
La méthode la plus simple consiste à multiplier le capital de départ par ce coefficient élevé à la puissance 10. Comme le montre le programme suivant, une boucle se révèle inutile.
# Entrée
capital = float(input('capital : '))
# Traitement
capital = capital * 1.02 ** 10
# Sortie
print ('capital après 10 ans : ', round(capital,2))
Notez au passage la fonction round qui arrondit les valeurs. Ici, l’arrondi est à deux décimales c’est-à-dire au centime près.
Si l’utilisateur entre 10 000 il obtient ceci :
capital : 10000
capital après 10 ans : 12189.94
On peut aussi utiliser une structure itérative, avec une seconde variable que l’on nommera n et qui est définie à la volée.
# Entrée
capital = float (input('capital : '))
# Traitement et sortie
for n in range(0, 11, 1):
print(round(capital, 2))
capital = capital * 1.02
Remarquez les trois paramètres de l'instruction range. D’abord la première valeur de n, soit zéro puisque Python commence à compter à partir de 0 puis 11 car nous demandons dix valeurs en plus de zéro. Le même résultat aurait été obtenu avec range (1, 12, 1). Le dernier paramètre qui a pour valeur 1 est le pas. Ici, il est inutile de le préciser puisque par défaut il est de 1. Si nous avions indiqué range(0, 11, 2) la liste se serait arrêtée à 11040.81. On obtient aussi le même résultat avec range(11).
capital : 10000
10000.0
10200.0
10404.0
10612.08
10824.32
11040.81
11261.62
11486.86
11716.59
11950.93
12189.94
Attention à l’incrémentation ! Si vous écrivez le programme suivant…
for n in range(0, 11, 1):
print(round(capital, 2))
capital = capital * 1.02
… l’application du coefficient multiplicateur ne se fera qu’une fois les itérations terminées, c’est-à-dire que vous obtiendrez une suite de onze valeurs égales à 10000.0. Le résultat de la multiplication par 1,02 sera effectué ensuite mais non affiché.
Vous pouvez bien sûr améliorer le programme en indiquant l’année en face de chaque valeur du capital et en permettant à l’utilisateur de choisir une durée et un taux d’intérêt.
# Entrée
capital = float (input('capital : '))
n = int (input("nombre d'années : "))
i = float (input("taux d'intérêt en % : "))
# Traitement et sortie
for n in range(0, n + 1, 1):
print('année ', n, ' : ', round(capital, 2))
capital = capital * (1 + (i / 100))
Voir aussi les exemples en pages d'instruction input, de termes d’une suite avec calculatrice et fonctions avec Python ainsi que les exercices avec suites géométriques (niveaux première générale et terminales technologiques). Pour aller plus loin, voir les boucles imbriquées de l'exemple de liste avec Python (construction du triangle de Pascal). Plus ludique : un dessin avec Turtle.
Séquences
L’instruction for permet aussi de travailler sur des séquences de données (les plus simples étant des textes).
Soit le programme suivant :
texte = "SALUT"
for lettre in texte:
print (lettre)
La variable lettre, créée avec for, permet de balayer la variable texte du début à la fin.
L’état de sortie est le suivant :
S
A
L
U
T