Les boucles for avec Python

Boucles bornées avec Python

Lorsque vous débutez avec Python, vous devez rapidement connaître les structures que sont les conditions (voir la page 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 la page 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 la fonction 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.

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 ce 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 l’exemple en page termes d’une suite avec calculatrice.

 

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

 

Python et tortue