Bonjour tout le monde
Je suis en train de tourner en rond... je cherche à vérifier que l'utilisateur entre bien un nombre dans une variable, et je veux qu'il n'entre qu'un nombre, pas autre chose, alors j'ai fais ça:
choix=0
while choix==0:
nb_car = int(raw_input("Entrez le nombre de caracteres du mdp a generer : "))
if type(nb_car) != int:
print("Entrez un nombre.")
else:
choix=1
Le problème, c'est que si j'entre des lettres, ça plante, tout simplement. C'est ennuyeux :- )
Si quelqu'un a une astuce à me passer... ça serait sympa
Hum...
je suis allé voir sur google, et après ça j'essaye ça:
while choix==0:
raw_input("Entrez le nombre de caracteres du mdp a generer : ")
try:
int(nb_car)
choix=1
break
except ValueError:
print("Entrez un nombre.")
Donc je teste si je peux transformer ma variable nb_car en entier, et si c'est possible, la variable choix vaut 1.
Le truc, c'est que si j'entre un nombre, j'ai le droit à "Entrez un nombre". Donc j'ai une boucle infinie...
Je suis un peu perdu là...
Edit: ooooh je viens de voir que j'ai fais une grosse boulette, 2sc je corrige ça
try et except servent à donner à la machine des instructions à exécuter en cas d'erreur dans le bloc "try" (si qqn a une explication plus claire, je prends.)
while True: # ne te prends pas la tête avec ce genre de variable
try:
nb_car = int(raw_input("Entrez le nombre de caracteres du mdp a generer : ") # il faut quand même assigner le résultat du raw_input à une variable
break
except:
print "veuillez entrer un nombre"
pass
explication :
soit l'utilisateur rentre une variable de type int, auquel cas, break permet de sortir de la boucle.
sinon, un dit à python d'ignorer l'erreur, retour au début.
choix=0
while choix==0:
nb_car=raw_input("Entrez le nombre de caracteres du mdp a generer : ")
try:
int(nb_car)
choix=1
break
except ValueError:
print("Entrez un nombre.")
devient
while True:
try:
nb_car=int(raw_input("Entrez le nombre de caracteres du mdp a generer : "))
break
except ValueError:
print("Entrez un nombre.")
l'intérêt est surtout dans l'utilisation de True au lieu de <choix>.
ça économise une variable globale, et t'évite de devoir la remettre à 0 à chaque fois
note :
uiliser while 1: est valable aussi
si tu as vraiment besoin de la variable choix, tu peux aussi écrire:
while not choix: #(tant que choix est faux --> qu'il vaut 0)
pas mal
elle sort de la lib standard cette fonction ?
(ça peut servir, j'ai hésité à proposer un truc de ce genre, mais sans cette fonction, ça aurait probablement faux)
j'ai un exercice en python sous la version 3 qui me demande de limiter les chiffres d'un nombre avec la fonction input().
Pour être plus clair, un utilisateurs choisis combien de chiffre comportera le nombre , exemple 3 chiffre, c'est a dire que le nombre sera compris entre 100 et 999. Ensuite je dois proposer a l'utilisateurs de choisir chaque chiffre (exemple:7,8,9 pour que s'affiche le nombre 789).
Et ensuite faire une condition pour vérifier si c'est un nombre pair ou impair, cela n'est pas compliquer.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Pas d'aide concernant le code par MP, le forum est là pour ça :)