Les boucles en Python :


Il existe deux sortes d'instructions pour réaliser des boucles :

La boucle "While" (tant que) :

Défintion et syntaxe

Le principe de la boucle while, c’est d’exécuter un bloc d’instructions tant que une condition donnée est vraie

Exemple :

x = 1
while x<5 :
        print (x)
        x = x + 1
print('Fini !')

Ici tant que la condition x<5 est respectée, on affiche la valeur de x puis on lui ajoute 1
Lorsque la condition n'est plus respectée (dans ce cas pour x=5) alors la boucle s'achève
On réalise donc la suite du programme et on affiche Fini !

Exemple : décomposition d'un nombre en ses symboles

Etude du problème

Décomposons le nombre 7843

Pour obtenir le chiffre (symbole) on utilisera :

    Une opération de division entière 7843 = 784 x 10 + 3

Pour les unités :
    7843%10=3 (3 est le reste)
    7843//10=784 (784 est le quotient)

Pour les dizaines :
    784%10=4 (4 est le reste)
    784//10=78 (78 est le quotient)

Pour les centaines :
    78%10=8 (8 est le reste)
    78//10=7 (7 est le quotient)

Résolution en utilisant la boucle While

nombre = int(input("Donnez-moi un nombre nombre entier"))
listeSymbole = []

while nombre != 0 :
    reste = nombre % 10
    nombre = nombre // 10
    #listeSymbole.append(reste) -> ne peut pas changer l'ordre
    listeSymbole = [reste] + listeSymbole
    print("Nombre =", nombre, " et reste =", reste)

En plus de dsécomposer le nombre et donner les unités, dizaines, centaines, ... par le biais des quotients et des restes comme vu précédement,
Si l'on entre le nombre 173 par exemple alors on aura le premier reste qui correspond au unité, le deuxième au dizaines,...
On obtiendra donc :
Nombre = 17 et reste = 3
Nombre = 1 et reste = 7
Nombre = 0 et reste = 1

La boucle "For" (pour) :

Lorsque l’on souhaite répéter un nombre donné de fois la même instruction ou le même bloc d’instructions, la commande for est la plus appropriée.

Exemple :

Admettons que l’on veuille afficher les carrés des entiers de 1 à 7 :. Voici ce que l’on peut faire.

    for i in range(1,8): (pour i allant de 1 à 7)
        print("i**2")

Prennons un autre exemple :
Calculons la somme des premiers entiers. Disons ici que l’on s’arrête à 30.

    S = 0
    for i in range(1, 31): # pour i allant de 1 à 30
        S = S + i
    print(S)

Exemple d'association des deux boucles :

nombre = input("Donnez-moi un nombre nombre entier")
nombre=int(nombre)
def decompNombre (nombre: int , base : int ) -> list :

    listeSymbole = []

    while nombre != 0 :
        reste = nombre % base
        nombre = nombre // base
        listeSymbole = [reste] + listeSymbole
        print("Nombre =", nombre, " et reste =", reste)
    return listeSymbole

for base in range (2,11) :
    print (nombre, " = en base", base, " : ")
    decompNombre(nombre, base)

Cet algorithme réutilise la boucle while vue tout à l'heure mais associe aussi un boucle for.
En effet on se sert de la variable nombre ainsi que la la fonction decompNombre pour convertir un nombre choisi vers une base différente grace à la boucle for.

Pour conclure :

Pour conclure nous pouvons dire que la boucle while sera plus adaptée lorsque la durée de la boucle est indéfinie. Elle peut être infinie auquel cas ous n'aurons jamais de résultat final
Tandis que la boucle for permet quand à elle de répondre à une demande carctérisé par une durée définie à l'avance. Elle peut elle aussi être infinie si l'intervalle choisi l'est aussi

Liens vers d'autres pages de mon site :