Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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 :
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







