Maison >développement back-end >Tutoriel Python >Faire le point sur les idées pour interrompre plusieurs boucles en Python

Faire le point sur les idées pour interrompre plusieurs boucles en Python

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼avant
2019-09-26 17:37:092225parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer