Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 30-11-2023 13:03:09

BillyJC
Membre
Inscription : 14-07-2022
Messages : 10

Comprendre les structures de boucles Python : distinguer les boucles

Dans mon parcours de programmation Python, je suis aux prises avec les nuances des différentes structures de boucles et je cherche à clarifier les distinctions entre les boucles for et while. Voici un extrait de code illustrant leur utilisation :

# Example using for loop
for i in range(5):
    print("Iteration using for loop:", i)

# Example using while loop
j = 0
while j < 5:
    print("Iteration using while loop:", j)
    j += 1
 

Bien que les deux boucles semblent capables d’obtenir des résultats similaires, quelles sont les principales différences entre les boucles for et while en Python ? Bien que j'essaie également d'apprendre de plusieurs sites, dans quels scénarios une structure de boucle serait-elle préférée à l'autre, et y a-t-il des considérations de performances ou des conventions de codage à prendre en compte lors du choix entre elles ? De plus, pouvez-vous partager des informations sur les aspects de lisibilité et de maintenabilité de l’utilisation des boucles for et while dans le code Python ?

Hors ligne

#2 30-11-2023 15:20:05

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Comprendre les structures de boucles Python : distinguer les boucles

Bonjour,

Une des plus "évidentes" est déjà que la boucle for, gérant son compteur, et que le début for i in range (début, fin, pas) étant implémenté nativement (et écrit en C), devrait être plus rapide (conditionnel : à vérifier avec des tests à grande étendues).
Avec une boucle while, tu dois gérer ton compteur hors gestion native...

D'autre part, on dit qu'on utilise for lorsque le paramètre fin est connu et que while s'utilise avec une condition d'arrêt, sur la même ligne, qui peut être une plage de valeurs...

Un autre emploi de la boucle for est par exemple, lorsque tu parcours une Liste avec cette syntaxe :
for j, element in enumerate(Liste):
où j est l'index de element, et element est Liste[j]
souvent bien pratique...

A noter que les boucles for et while peuvent être toutes deux interrompues  par l'instruction break en cas de certaine condition remplie en cours de fonctionnement :

for j in range(a,b):
    ..........
    if condition remplie:
        break
 

Je reprends tout à l'heure...

@+

Hors ligne

#3 30-11-2023 20:26:18

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 17 385

Re : Comprendre les structures de boucles Python : distinguer les boucles

Re,

On peut aussi utiliser la boucle for pour parcourir une liste :

L=[3,2,"z",12]
for element in L:
    print(element, end=" ")

Sortie :

3 2 z +

ou une chaîne :


S="hklm23"
for element in S:
    print(element, end=" ")

Sortie :

h k l m 2 3

C'est faisable aussi avec while, mais il faut gérer un compteur et connaître la longueur de la liste ou de la chaîne (pour ne pas risquer l'erreur index out of range)...
C'est donc moins direct.

@+

Hors ligne

#4 30-11-2023 20:59:57

Glozi
Invité

Re : Comprendre les structures de boucles Python : distinguer les boucles

Bonjour,
À la réponse de Yoshi je rajouterais les éléments suivants :
Lorsqu'on se demande "est ce que j'utilise une boucle for ou while ?" il faut voir je pense que la philosophie derrière les deux boucles est différente.

La boucle for est utilisée essentiellement pour effectuer une tache un nombre fixé de fois (ce nombre fixé peut évidemment être une variable du programme mais il est connu AVANT qu'on commence la boucle for). Ainsi la boucle for est particulièrement adaptée pour explorer les listes, les tableaux, les chaînes de caractères élément par élément etc...

La boucle while est plus générale au sens ou elle peut facilement implémenter une boucle for, comme tu l'as remarqué, en incrémentant soi-même une variable. Si, comme dans ton exemple, une boucle while peut être remplacée par une boucle for, je conseille de le faire (c'est souvent plus clair de voir une boucle for qu'une boucle while). Mais la boucle while a une force que ne possède pas directement la boucle for, c'est que la condition d'arrêt peut être quelconque. Ainsi on n'est pas obligé de savoir à l'avance combien de fois la boucle while va être exécutée alors qu'on commence cette boucle. Cette force peut également être un danger (il faut se méfier des boucles while dites infinies...)

Exemples où on préfère une boucle while :
- écrire une fonction qui prend un nombre $n$ en entier et affiche successivement les différents termes de la suite de Syracuse partant de $n$ jusqu'à qu'on tombe sur $1$ (la conjecture dit que quelque soit $n>0$ passé en entrée alors on n'aura pas de boucle infini).
- écrire une fonction qui demande à l'utilisateur un nombre jusqu'à que ce dernier soit entre $1$ et $12$ (mois de naissance).
- écrire une fonction qui demande un code secret à l'utilisateur jusqu'à ce que ce code soit bon (éventuellement en indiquant à l'utilisateur $+$ ou $-$)
- écrire une fonction qui fait avancer un cavalier au hasard sur un échiquier jusqu'à ce qu'il ait parcouru toutes les cases.
- etc...

Bref, je te conseille d'utiliser la boucle for tant que c'est adapté au problème. Mais des fois, tu vas te rendre compte qu'une boucle for ne fait pas l'affaire car tu ne sais pas combien de fois tu vas devoir itérer le code et donc une boucle while sera mieux adaptée.

PS : il est préférable d'utiliser une condition bien écrite dans la boucle while plutôt que d'utiliser le mot clef "break" à tout bout de champ.

Bonne journée

#5 01-12-2023 07:08:59

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Comprendre les structures de boucles Python : distinguer les boucles

Bonjour

Comme te l'a dit Yoshi , tout dépend de ce que tu vas demander à ton programme ... la boucle for ou while dépend de ça et non l'inverse...

il y aura de grande différence de rapidité dans l'exécution du programme... Tu sites Syracuse effectivement tu ne sais pas lorsque tu vas atteindre la boucle 4,2,1

mais exécute un crible de nombres premiers , tu connais la limite donc la boucle for serra privilégié ...etc

(personnellement je m'en suis rendu compte , lorsqu'il m'a fait les programmes...)

C'est bien la question que tu as posée et demandé une réponse ... Or si tu connais la différence ... alors quel est le but de ta question ?

Ps (tien je viens de remarquer que l'heure est toujours +1 , heure d'été .. ?

Dernière modification par LEG (01-12-2023 07:27:39)

Hors ligne

#6 01-12-2023 19:27:44

Dalal
Membre
Inscription : 14-09-2023
Messages : 57

Re : Comprendre les structures de boucles Python : distinguer les boucles

Bonsoir,

Vous avez déjà poster sur ce site hier à 11h54:
https://www.webrankinfo.com/forum/t/com … le.201496/
Et vous postez sur ce forum hier à 13h03 soit 1h et 9 minutes plus tard parce que personne ne vous à répondu.

Dernière modification par Dalal (01-12-2023 19:29:27)

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
cinq plus quinze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums