Exception dans un IF
Résolu/Fermé
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
-
Modifié par biche_35 le 10/12/2013 à 10:01
Utilisateur anonyme - 10 déc. 2013 à 18:08
Utilisateur anonyme - 10 déc. 2013 à 18:08
A voir également:
- Exception dans un IF
- Une exception non gérée s'est produite dans votre application - Forum Word
- If exist ✓ - Forum Autoit / batch
- 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
- L'exception exception logicielle inconnue 0xe0000008 ✓ - Forum PC fixe
13 réponses
Utilisateur anonyme
10 déc. 2013 à 14:10
10 déc. 2013 à 14:10
try:
s_addresses = str(addresses)[8:]
except IndexError:
# traitement au cas où on a le terme 'any'
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 14:22
10 déc. 2013 à 14:22
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
Utilisateur anonyme
10 déc. 2013 à 15:46
10 déc. 2013 à 15:46
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:
# ....
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
Modifié par biche_35 le 10/12/2013 à 16:39
Modifié par biche_35 le 10/12/2013 à 16:39
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
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 16:41
10 déc. 2013 à 16:41
Malheureusement, je retombe sur mon problème initial avec un "IndexError: string index out of range" lorsque s_addresses = any
Utilisateur anonyme
Modifié par fred1599 le 10/12/2013 à 17:10
Modifié par fred1599 le 10/12/2013 à 17:10
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...
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 17:18
10 déc. 2013 à 17:18
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...
Utilisateur anonyme
Modifié par fred1599 le 10/12/2013 à 17:26
Modifié par fred1599 le 10/12/2013 à 17:26
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?
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 17:27
10 déc. 2013 à 17:27
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
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 17:30
10 déc. 2013 à 17:30
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
Utilisateur anonyme
10 déc. 2013 à 17:39
10 déc. 2013 à 17:39
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é
biche_35
Messages postés
34
Date d'inscription
mercredi 4 décembre 2013
Statut
Membre
Dernière intervention
1 août 2017
10 déc. 2013 à 17:51
10 déc. 2013 à 17:51
Et ben chapeau !!!
Merci de ton aide et de tes explications.
J'ai grâce à toi quelque chose qui fonctionne à merveille et j'ai accessoirement réussi à faire mon premier code Python (avec un peu d'aide) ;)
A bientôt pour une nouvelle question :D
Problème résolu
Merci de ton aide et de tes explications.
J'ai grâce à toi quelque chose qui fonctionne à merveille et j'ai accessoirement réussi à faire mon premier code Python (avec un peu d'aide) ;)
A bientôt pour une nouvelle question :D
Problème résolu