Executer des actions en cas d'erreurs

Résolu/Fermé
Deadgame77 Messages postés 121 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 24 octobre 2016 - Modifié par Deadgame77 le 27/03/2016 à 19:38
Deadgame77 Messages postés 121 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 24 octobre 2016 - 28 mars 2016 à 17:48
Bonjour,

Voici mon problème : Alors je demande un truc au hasard ( x=input() ) sauf que mon but est d'obtenir au final un nombre (en int ou float).

Je pourrais simplement écrire x=int(input()) ou x=float(input()) mais si la personne qui exécute le programme tape une lettre par exemple, une erreur apparaît et le programme plante.

J'aimerais donc savoir si il y a un moyen pour que si ce qui est entré n'est pas un nombre, le programme demande de nouveaux x et ça en boucle jusqu’à obtenir un int ou un float.

J'ai bien trouver un moyen de redemander x dans le cas ou x est un str mais en redemandant x=input(), j'obtiens automatiquement un str et si je met x=int/float(input()), le programme plante si ce n'est pas un nombre qui est entré.
J'avais réussi avec la commande try mais au final, je redemandais une valeur de x, a l’intérieur du try et rien ne changeait.

Ce que je cherche, c'est donc une commande du type de except mais qui puisse être utilisée en plein milieu du programme afin que la conversion de x (si x est str) en int, si ca sort une erreur, soit interprétée de telle manière que x soit redemander en int ou float.

Voila si ça existe, je vous serais gré de connaitre une telle commande :)

2 réponses

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
28 mars 2016 à 06:02
Salut
montres-nous ton code avec le try/except (utilise le bouton Code).
Tu devrais faire ta boucle à l'extérieur du try/except.
0
Deadgame77 Messages postés 121 Date d'inscription mercredi 30 janvier 2013 Statut Membre Dernière intervention 24 octobre 2016 11
28 mars 2016 à 17:48
Bon en fait j'ai trouver j'ai fait :
boucle=True #pour generer une boucle infinie
>>> while boucle==True:
	try:
		x=int(x)
		boucle=False
	except ValueError:
		x=input("Choisissez une autre valeur")
0