Executer des actions en cas d'erreurs

Résolu
Deadgame77 Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -  
Deadgame77 Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   2 485
 
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   Statut Membre Dernière intervention   11
 
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