Pb exceptions Python
Gvrt85
Messages postés
5
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis débutant et quelque chose doit surement m'échapper à propos du codage des exceptions.
Je souhaite faire compléter une liste de mots de huit lettres ou moins par l'utilisateur. Pour cela j'utilise la fonction input et souhaite lever les exceptions au cas où l'utilisateur ne rentre pas un mot mais des chiffres ou bien un mot supérieur à 8 lettres.
Le problème que je rencontre est que quoiqu'il arrive (exceptions ou non) la fonction input s’exécute 2 fois et seul la seconde fois peut entrer dans ma liste si elle répond aux critères. Autant dire un résultat hasardeux. J'ai beaucoup cherché sur le web sans trouver quelle grossière erreur je fais dans mon codage.
Voici mon code:
Je suis débutant et quelque chose doit surement m'échapper à propos du codage des exceptions.
Je souhaite faire compléter une liste de mots de huit lettres ou moins par l'utilisateur. Pour cela j'utilise la fonction input et souhaite lever les exceptions au cas où l'utilisateur ne rentre pas un mot mais des chiffres ou bien un mot supérieur à 8 lettres.
Le problème que je rencontre est que quoiqu'il arrive (exceptions ou non) la fonction input s’exécute 2 fois et seul la seconde fois peut entrer dans ma liste si elle répond aux critères. Autant dire un résultat hasardeux. J'ai beaucoup cherché sur le web sans trouver quelle grossière erreur je fais dans mon codage.
Voici mon code:
#Création de la liste
word_list = ["anaconda", "girafe", "rouge", "vert", "jaune"]
#Création de la fonction pour ajouter des mots dans la liste
def add_word():
x = None
while x == None:
try:
x = str(input("Veuillez entrer un mot de huit lettres ou moins svp :) -->"))
assert len(x) <= 8
except ValueError:
print("Un mot innoncent pas un nombre!")
x = None
except AssertionError:
x = None
print("Veuillez entrer un mot de huit lettres ou moins pls")
return x
add_word()
word_list.append(add_word())
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
tu n'as pas précisé "python" comme langage quand tu as utilisé les balises de code.
es-tu certain d'avoir correctement aligné le second print?
je pense que quelque chose t'échappe dans l'appel des fonctions.
ton observation "quoiqu'il arrive (exceptions ou non) la fonction input s’exécute 2 fois et seul la seconde fois peut entrer dans ma liste si elle répond aux critères" est très correcte.
le code fait précisément cela, et c'est ce que tu lui demandes de faire. regarde bien ce que tu as écrit.-
Bonjour, merci pour ta réponse.
Si je comprends bien, je dois effacer la ligne qui appel la fonction seul pour au final l appeler uniquement au moment de la écriture dans la liste?
Ce que je ne saisi pas, c'est pourquoi mes exceptions ne s applique jamais... Entrer un chiffre ne gêne pas le programme pourtant la condition est saisie et fait appel à une erreur classique.
Je me remets sur le code de suite mais j'ai toujours le sentiment que quelque chose de évident m echappe. -
-
-
-
Effectivement c'est la partie déconnante de mon code...
J'ai tenu compte des conseils précédemment postés et tout fonctionne excepté ceci.
Dans un exercice précédent j'ai utiliser le code
try: x = int(x)
pour pouvoir rejeter les entiers, je pensais obtenir l'effet inverse en utilisant le code avec str(x), mais visiblement je dois réfléchir autrement
-