Pb exceptions Python
Gvrt85
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 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
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
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