Ignorer les itérations en Python


159

J'ai une boucle en cours, mais il y a la possibilité que des exceptions soient levées à l'intérieur de la boucle. Cela arrêterait bien sûr mon programme tous ensemble. Pour éviter que j'attrape les exceptions et les gère. Mais alors le reste de l'itération s'exécute même si une exception s'est produite. Y a-t-il un mot-clé à utiliser dans ma except:clause pour simplement ignorer le reste de l'itération actuelle?


4
Je ne vois pas comment la réponse acceptée (utilisation continue) intercepte les exceptions, mais elle a été acceptée. Par conséquent, la question est vraiment, vraiment déroutante.
S.Lott

@ S.Lott Je n'ai pas besoin du mot-clé pour attraper l'exception, je parlais juste du flux général du code total.
The.Anti.9

@ The.Anti.9. Quoi? Vous avez d'abord dit "Je veux attraper les exceptions". Vous dites maintenant "Je n'ai pas besoin du mot clé pour détecter l'exception". Pourriez-vous clarifier cela d'une manière ou d'une autre?
S.Lott

1
@ S.Lott. Je n'ai pas besoin d'attraper l'exception avec le mot-clé, il doit juste y avoir un essai, sauf une déclaration dans le code ....
The.Anti.9

1
J'ai reformulé la question pour qu'elle corresponde mieux à la réponse acceptée.
jilles de wit

Réponses:


381

Vous cherchez à continuer .


31
Cela doit être l'une des réponses SO les plus succinctes que j'ai jamais vues!
Austin A

70
La vraie question: est-ce que sortir du «g» dans «lookin» Pythonic?
Mason Gardner

50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue

17

Quelque chose comme ça?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()

1
Modifié pour utiliser continuer plutôt que passer.
jilles de wit

16

Exemple pour Continue:

number = 0

for number in range(10):
   number = number + 1

   if number == 5:
      continue    # continue here

   print('Number is ' + str(number))

print('Out of loop')

Production:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 6 # Note: 5 is skipped!!
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop


5

Pour ce cas d'utilisation spécifique, l'utilisation try..except..elseest la solution la plus propre, la elseclause sera exécutée si aucune exception n'a été déclenchée.

REMARQUE: la elseclause doit suivre toutes les exceptclauses

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.