0
votes

Comment sauter sur n'importe quelle valeur qui n'est pas dans une plage de la boucle

J'essaie de créer 3 imbriquées pour des boucles et de sauter toutes les valeurs qui ne sont dans aucune des boucles. J'ai essayé différentes manières mais que je n'ai pas encore eu beaucoup de succès. Voici la boucle:

for industry in string.ascii_uppercase:
for code in range(1, 99):
    if code == 3:
        continue
    for year in range(1998, 2019):
        createCSV(industry, code, year)


4 commentaires

Vous voulez probablement un essayer et sauf instruction.


On dirait que vous savez clairement quelles valeurs sont invalides, alors pourquoi ne pas les stocker dans un définir , puis vérifier le confinement en boucle?


Savez-vous d'avance sur les valeurs valides / invalides?


@pstatix ​​et carciaGenicate Je ne sais pas quelles sont les valeurs manquantes mais je peux comprendre cela. Cependant, cela prendrait du temps et la liste manquante serait trop longue pour que je cherche un moyen plus efficace de le faire.


3 Réponses :


-3
votes

Vous pouvez vérifier contre NULL in Python :

 for industry in string.ascii_uppercase:
 for code in range(1, 99):
   if code is None:
     continue
 for year in range(1998, 2019):
   createCSV(industry, code, year)


1 commentaires

Cela ne fonctionnera pas car code ne sera pas Aucun lors de l'itération de la plage. L'OP indique qu'ils savent quelles valeurs ils doivent sauter, ne pas tester pour la nullité.



0
votes

Une manière possible pourrait être avec un ESSAYER / SAUF Clause: xxx

dans lequel vous pouvez toujours remplacer l'exception générique avec la classe d'exception spécifique que votre CreateCSV La fonction augmente. Si vous savez, par exemple, que CreateCSV augmentera un ValueError lorsqu'un code non valide est fourni en tant qu'argument d'entrée, puis remplacer sauf exception : avec sauf valideError: . Cela aidera à éviter des pièges potentiels (voir ici pour plus d'informations ).

Cependant, si possible, je recommanderais à la place:

  • récupérez une iéreuse avec seulement le code valide à l'avance, puis en boucle sur ceux-ci, ou
  • Modifier le code de programmation de CreateCSV de telle sorte qu'il ne casse pas quand un code non valide est fourni.

0 commentaires

1
votes

Si vous savez déjà quelles valeurs provoque une erreur, évitez de boucler sur eux.

for industry in string.ascii_uppercase:
    for code in range(1, 99):
        for year in range(1998, 2019):
            try:
                createCSV(industry, code, year)
            except: # mention specific exception if you can
                print("Skipping Industry-",industry," Code-",code," Year-",year)


0 commentaires