Exception dans un IF
Résolu
biche_35
Messages postés
39
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis un peu embêter sur un programme que je cherche à faire...
J'ai une boucle de cette forme :
Actuellement ce script fonctionne nikel hors mis dans une situation. Quand ma boucle va tourner, il tombera une seul fois sur addresses ='any'.
Cela provoque un problème car any ne contient pas 8 caractère (str(addresses)[8:]).
Je possède donc une erreur de ce type : IndexError: string index out of range
Avez vous une idée pour gérer ce 'any'
Merci d'avance de vos conseils
Je suis un peu embêter sur un programme que je cherche à faire...
J'ai une boucle de cette forme :
for addresses in bigip1_obj.get_list(): s_addresses = str(addresses)[8:] g_list = bigip1_obj.get_traffic_group(virtual_addresses = [s_addresses]) s_liste = str(g_list) if (s_addresses[10:] > 128 and s_liste[-2] == '1'): print ("Pour la virtuelle portant l'IP %s, le traffic group correspondant n'est pas bon" %(s_addresses)) else: print("Pour la virtuelle portant l'IP %s, le traffic group correspondant est bon" %(s_addresses))</code>
Actuellement ce script fonctionne nikel hors mis dans une situation. Quand ma boucle va tourner, il tombera une seul fois sur addresses ='any'.
Cela provoque un problème car any ne contient pas 8 caractère (str(addresses)[8:]).
Je possède donc une erreur de ce type : IndexError: string index out of range
Avez vous une idée pour gérer ce 'any'
Merci d'avance de vos conseils
A voir également:
- Exception dans un IF
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- A java exception has occurred ✓ - Forum Minecraft
- If exist ✓ - Forum Autoit / batch
- Problème d'installation java - Forum Logiciels
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Windows 11
13 réponses
Salut,
Merci de ton aide déjà ;)
Voci donc ma nouvelle boucle aprés modification :
Mon traitement commence et au bout de la 5ème valeur de s_adrdresses, j'ai le message d'erreur suivant :
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
NameError: name 's_liste' is not defined
Un problème d'indentation peut ètre??
Encore merci
Merci de ton aide déjà ;)
Voci donc ma nouvelle boucle aprés modification :
for addresses in bigip3_obj.get_list(): try: s_addresses = str(addresses)[8:] except IndexError: g_list = bigip3_obj.get_traffic_group(virtual_addresses = [s_addresses]) s_liste = str(g_list) print s_addresses[7] if (s_addresses[7] == '2' and s_liste[-2] == '2' and s_addresses != 'any'): print ("Pour la virtuelle portant l'IP %s, le traffic group correspondant n'est pas bon" %(s_addresses)) else: print("Pour la virtuelle portant l'IP %s, le traffic group correspondant est bon" %(s_addresses))
Mon traitement commence et au bout de la 5ème valeur de s_adrdresses, j'ai le message d'erreur suivant :
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
NameError: name 's_liste' is not defined
Un problème d'indentation peut ètre??
Encore merci
Non, c'est un problème dans le sens où tu crées ta variable s_liste que dans le cas où tu vois la valeur 'any'.
La solution est de placer avant le try ta variable s_liste à la valeur None
La solution est de placer avant le try ta variable s_liste à la valeur None
s_liste = None
try:
# ....
Donc tu suggère de faire ça :
Je test et je te tiens au courant.
Encore merci ;)
for addresses in bigip3_obj.get_list(): s_liste = 'None' try: s_addresses = str(addresses)[8:] except IndexError: g_list = bigip3_obj.get_traffic_group(virtual_addresses = [s_addresses]) s_liste = str(g_list) print s_addresses[7] if (s_addresses[7] == '2' and s_liste[-2] == '2' and s_addresses != 'any'): print ("Pour la virtuelle portant l'IP %s, le traffic group correspondant n'est pas bon" %(s_addresses)) else: print("Pour la virtuelle portant l'IP %s, le traffic group correspondant est bon" %(s_addresses))
Je test et je te tiens au courant.
Encore merci ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Malheureusement, je retombe sur mon problème initial avec un "IndexError: string index out of range" lorsque s_addresses = any
Tu as vraiment un problème avec l'indentation :)
Non testé, mais ça a déjà plus de gueule...
for addresses in bigip3_obj.get_list():
s_liste = 'None'
try:
s_addresses = str(addresses)[8:]
except IndexError:
g_list = bigip3_obj.get_traffic_group(virtual_addresses = [s_addresses])
s_liste = str(g_list)
print s_addresses[7]
if (s_addresses[7] == '2' and s_liste[-2] == '2' and s_addresses != 'any'):
print ("Pour la virtuelle portant l'IP %s, le traffic group correspondant n'est pas bon" %(s_addresses))
else:
print("Pour la virtuelle portant l'IP %s, le traffic group correspondant est bon" %(s_addresses))
Non testé, mais ça a déjà plus de gueule...
Effectivement, je suis encore un peu débutant sous Pyhton (je commence depuis cette semaine :) )
Toujours le même problème. J'obtiens un IndexError: string index out of range.
Vois pas pourquoi ce str(addresses)[8:] est si bloquant que ça...
Toujours le même problème. J'obtiens un IndexError: string index out of range.
Vois pas pourquoi ce str(addresses)[8:] est si bloquant que ça...
Non il n'est pas bloquant à cet endroit, il faut que tu places dans ton bloc try, tous ce qui pourrait poser problème en rapport avec ton 'any'...
Je ferais cela de cette façon
Je ferais cela de cette façon
for addresses in bigip3_obj.get_list():
s_liste = 'None'
try:
s_addresses = str(addresses)[8:]
print s_addresses[7]
if (s_addresses[7] == '2' and s_liste[-2] == '2'):
print ("Pour la virtuelle portant l'IP %s, le traffic group correspondant n'est pas bon" %(s_addresses))
else:
print("Pour la virtuelle portant l'IP %s, le traffic group correspondant est bon" %(s_addresses))
except IndexError:
g_list = bigip3_obj.get_traffic_group(virtual_addresses = [s_addresses])
s_liste = str(g_list)
# dans le cas d'any, on en fait quoi?
Dans le cas d'any, je propose qu'on ne fasse rien ;)
Je ne sais pas si ta question est directe ou si c'est juste un fail dans tes balises /code
Je ne sais pas si ta question est directe ou si c'est juste un fail dans tes balises /code
Pour info, ça fonctionne ;)
Peux tu m'expliquer ce que tu fais aprés ton except IndexError:
Je ne connais pas trop la construction du try/except
Préfère comprendre plutôt que de faire un simple Copy/Cut
Peux tu m'expliquer ce que tu fais aprés ton except IndexError:
Je ne connais pas trop la construction du try/except
Préfère comprendre plutôt que de faire un simple Copy/Cut
Le bloc try-except, c'est pour dire
J'essaie
...
...
...
excepté dans le cas où l'index dépasse la taille de la chaine je fais
...
...
...
try -> essayé
except -> excepté
J'essaie
...
...
...
excepté dans le cas où l'index dépasse la taille de la chaine je fais
...
...
...
try -> essayé
except -> excepté