Pb exceptions Python
Gvrt85
Messages postés
5
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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())
A voir également:
- Pb exceptions Python
- Citizen code python avis - Accueil - Outils
- Auth & init ratelimit exceptions ✓ - Forum Instagram
- \R python ✓ - Forum Python
- Citizen code python solution - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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.
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.
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.
moi je ferais ainsi, cela me semble plus facile à comprendre:
je ne comprends pas ta phrase "Entrer un chiffre ne gêne pas le programme pourtant la condition est saisie": quelle condition?
x = str(x)
N'est ce pas un test qui rejette les entiers?
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