Maison >développement back-end >Tutoriel Python >Faire le point sur les idées pour interrompre plusieurs boucles en Python
I. Sortir d'une seule boucle
Quel que soit le langage de programmation, il peut être nécessaire de sortir du boucle, comme lors d'une énumération. Elle se termine lorsqu'un nombre qui satisfait à la condition est trouvé. Sortir d'une seule boucle est très simple, comme :
for i in range(10): if i > 5: print i break
Cependant, nous devons parfois sauter de plusieurs boucles, et break ne peut sortir que d'une seule boucle, comme :
for i in range(10): for j in range(10): if i+j > 5: print i,j break
Ce code n'est pas On dit qu'il s'arrête lorsqu'un groupe de i+j > 5 est trouvé, mais 10 groupes sont trouvés en continu, car break ne sort que de la boucle for j in range (10). Alors, comment pouvons-nous sortir de la catégorie multi-pondérée ? Prenez note ici.
Recommandations associées : "Tutoriel Python"
II Sortir de plusieurs boucles
En fait, la syntaxe standard. de Python est qu'il ne prend pas en charge le saut de plusieurs boucles, vous ne pouvez donc utiliser que certaines techniques. Les idées générales sont les suivantes : écrire en tant que fonction, utiliser un produit cartésien et utiliser le débogage.
Bien sûr, l'idée la plus courante est d'utiliser la notation variable
def f(): flag = 0 for i in range(10): for j in range(i): if i+j>5: print i,j flag = 1 break if flag == 1: break if __name__ == "__main__": f()
pour écrire une fonction
En Python, la fonction s'arrêtera lorsqu'elle atteint l'instruction return. , vous pouvez donc utiliser cette fonctionnalité pour écrire des fonctions en tant que fonctions pour terminer plusieurs boucles.
Par exemple :
def work(): for i in range(10): for j in range(10): if i+j > 5: return i,j print work()
Utiliser un produit cartésien
L'idée de cette méthode est que puisque je peux sortir d'une seule boucle, Je vais réécrire les boucles multiples Pour une seule boucle, vous pouvez utiliser la fonction produit cartésien product dans itertools, par exemple :
from itertools import product for i,j in product(range(10), range(10)): if i+j > 5: print i,j break
Utiliser le mode débogage
Le cartésien La méthode product est très intelligente et très simple, mais elle ne peut être utilisée que lorsque les collections de chaque boucle sont indépendantes. Si chaque niveau de boucle est étroitement lié au niveau précédent, cette technique ne peut pas être utilisée. À ce stade, vous pouvez utiliser la première méthode et l'écrire sous forme de fonction. De plus, vous pouvez également utiliser le mode débogage. Cela profite du principe de sortie dès qu'une erreur se produit en mode débogage et masque une erreur.
class Found(Exception): pass try: for i in range(10): for j in range(i): #第二重循环跟第一重有关 if i + j > 5: raise Found except Found: print i, j
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!