Comment arrêter boucle for en python
Résolu/Fermé
ClaraLau25
Messages postés
4
Date d'inscription
lundi 19 décembre 2022
Statut
Membre
Dernière intervention
19 décembre 2022
-
Modifié le 19 déc. 2022 à 11:47
ClaraLau25 Messages postés 4 Date d'inscription lundi 19 décembre 2022 Statut Membre Dernière intervention 19 décembre 2022 - 19 déc. 2022 à 13:24
ClaraLau25 Messages postés 4 Date d'inscription lundi 19 décembre 2022 Statut Membre Dernière intervention 19 décembre 2022 - 19 déc. 2022 à 13:24
A voir également:
- Arreter une boucle for python
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Citizen code python avis - Accueil - Outils
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
- Idm for mac - Télécharger - Téléchargement & Transfert
2 réponses
jee pee
Messages postés
40515
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 décembre 2024
9 441
Modifié le 19 déc. 2022 à 12:08
Modifié le 19 déc. 2022 à 12:08
Bonjour,
D'abord il doit y avoir la logique de ton programme. Est-ce qu'avec les paramètres il existe une situation où il s'arrête seul ?
Après break fonctionne. Mais seulement pour un niveau. Où voulais-tu le placer ? Il n'y a pas de break pour n niveaux imbriqués.
Il faut alors pratiquer autrement. Comme mettre tout ton code dans une fonction, et remplacer break par return. Ou gérer un flag avec une boucle while.
def maFonction(): for g in range (4): pg2=np.zeros([l,c]) for i in range(l): for j in range (c): nbv=nb_voisins(pg,i,j) if pg[1,3]==1 and pg[2,3]==1 and (nbv>=1): pg2[i,j]=1 #arrondissement ayant des habitants malades pg2[0,3]=0 #arrondissement mer pg2[0,0]=0 #arrondissment sans habitant pg2[2,1]=0 #arrondissement mer pg2[1,1]=0 #arrondissement mer pg2[0,1]=0 #arrondissement mer if ...... return affichage (pg2) pg=pg2 flag = True while flag: for g in range (4): pg2=np.zeros([l,c]) for i in range(l): for j in range (c): nbv=nb_voisins(pg,i,j) if pg[1,3]==1 and pg[2,3]==1 and (nbv>=1): pg2[i,j]=1 #arrondissement ayant des habitants malades pg2[0,3]=0 #arrondissement mer pg2[0,0]=0 #arrondissment sans habitant pg2[2,1]=0 #arrondissement mer pg2[1,1]=0 #arrondissement mer pg2[0,1]=0 #arrondissement mer if ...... flag = False affichage (pg2) pg=pg2
PS : pour afficher du code, il faut utiliser l’icône spécialisée <>, et donner le langage, Python, pour la coloration syntaxique.
Salut, une manière très élégante de sortir de boucles imbriquées est d'utiliser le else du for (ou while).
Exemple simple :
.
for i in range(10): print(i) for j in range(10): if i * j == 21: print('ok', i, j) break else: continue break
.
On peut le faire autant de fois qu'il n'y a de profondeurs.
.
for i in range(10): for j in range(10): print(i, j) for k in range(10): if i * j * k == 105: print('ok', i, j, k) break else: continue break else: continue break
ClaraLau25
Messages postés
4
Date d'inscription
lundi 19 décembre 2022
Statut
Membre
Dernière intervention
19 décembre 2022
19 déc. 2022 à 13:24
19 déc. 2022 à 13:24
merci pour votre réponse, j'ai réussis à faire le code,
bonne journée!
19 déc. 2022 à 12:23
Bonjour, merci pour votre retour rapide
Effectivement il existe un paramètre ou il s'arrête seul : quand toutes les cases sont égales à 1.
Pour break j'ai voulu le placer dans la boucle, c'est surement pour cela que ça ne marchait pas.
J'ai essayé avec les méthodes que vous m'avez donnés mais je n'y arrive toujours pas, il doit y avoir un problème dans mon raisonnement ..
l=5
c=4
pg=initialisation_arrondissement(l,c)
affichage(pg)
def maFonction():
for g in range (4):
pg2=np.zeros([l,c])
for i in range(l):
for j in range (c):
nbv=nb_voisins(pg,i,j)
if pg[1,3]==1 and pg[2,3]==1 and (nbv>=1):
pg2[i,j]=1 #arrondissement ayant des habitants malades
pg2[0,3]=0 #arrondissement mer
pg2[0,0]=0 #arrondissment sans habitant
pg2[2,1]=0 #arrondissement mer
pg2[1,1]=0 #arrondissement mer
pg2[0,1]=0 #arrondissement mer
if pg2[i,j]==1 and pg2[0,3]==0 and pg2[0,0]==0 and pg2[2,1]==0 and pg2[1,1]==0 and pg2[0,1]==0:
return
affichage (pg2)
pg=pg2
19 déc. 2022 à 12:49
Il te manque juste l'appel de la fonction ;-) la déclaration d'une fonction ne l'exécute pas. Et surtout pour une présentation claire, on ne déclare pas une fonction au milieu du corps principal du programme, mais tout au début.
PS BIS : pour afficher du code, il faut utiliser l’icône spécialisée <>, et donner le langage, Python, pour la coloration syntaxique.
19 déc. 2022 à 13:24
Merci j'ai trouvé comment faire :-)
Bonne journée !