59 votes

comment arrêter une boucle for

Je suis en train d'écrire un code pour déterminer si chaque élément de ma liste nxn est le même, c'est à dire [[0,0],[0,0]] retourne vrai mais [[0,1],[0,0]] renverra un message faux. Je pensais écrire un code qui s'arrête immédiatement lorsqu'il trouve un élément qui n'est pas le même que le premier élément, c'est-à-dire

n=L[0][0]
m=len(A)
for i in range(m):
 for j in range(m):
   if
    L[i][j]==n: -continue the loop-
   else: -stop the loop-

Je voudrais arrêter cette boucle si L[i][j]!==n et renvoie false. Sinon, il renvoie true. Comment dois-je m'y prendre pour mettre cela en œuvre ?

0voto

Pour ce faire, vous devez procéder de la manière suivante

n=L[0][0]
m=len(A)
for i in range(m):
    for j in range(m):
        if L[i][j]==n:
            //do some processing
        else:
            break;

-1voto

Baltasarq Points 5164

Pour sortir d'une boucle, vous devez utiliser l'instruction break.

n=L[0][0]
m=len(A)
for i in range(m):
 for j in range(m):
   if L[i][j]!=n:
       break;

Vous trouverez ici le manuel officiel de Python avec des explications sur break et continue, ainsi que sur d'autres instructions de contrôle de flux :

http://docs.python.org/tutorial/controlflow.html

MODIFIÉ : Comme l'a fait remarquer un commentateur, cela ne met fin qu'à la boucle intérieure. Si vous devez terminer les deux boucles, il n'y a pas de méthode "facile" (d'autres vous ont donné quelques solutions). Une possibilité serait de soulever une exception :

def f(L, A):
    try:
        n=L[0][0]
        m=len(A)
        for i in range(m):
             for j in range(m):
                 if L[i][j]!=n:
                     raise RuntimeError( "Not equal" )
        return True
    except:
        return False

-1voto

Pour arrêter votre boucle, vous pouvez utiliser pause con étiquette . Cela arrêtera votre boucle à coup sûr. Le code est écrit en Java mais l'approche est la même pour tous les langages.

public void exitFromTheLoop() {
    boolean value = true;
            loop_label:for (int i = 0; i < 10; i++) {
              if(!value) { 
                 System.out.println("iteration: " + i);
              break loop_label;
        }
    }
}   

}

-1voto

Je sais que cette question a été posée il y a longtemps, mais si cela peut aider quelqu'un d'autre, voici ma réponse :

Je trouve qu'il est plus facile de comprendre avec l'utilisation d'un alors que et il arrêtera les deux pour boucles de cette manière. Le code ci-dessous renvoie également les valeurs True/False demandées lorsque la fonction check_nxn_list() est appelé. Il se peut que certains paramètres doivent être ajoutés lors de l'appel de la fonction.

def check_nxn_list():
    state = True
    n=L[0][0]
    m=len(A)
    while state == True:
        for i in range(m):
            for j in range(m):
                if L[i][j]!=n:
                    state = False
        break
    return state

En pause à la fin de la alors que est nécessaire pour terminer la boucle même si État séjours Vrai .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X