Problème projet Python
Bonjour, j'essaye actuellement d'apprendre le langage python et avec ça je créer quelques petits programmes.
Jai un problème avec celui là: ici le programme nous demande d'entrer un chiffre et si on entre une lettre il nous dit que ce n'est pas bon et retiré un essaie.
Il s'arrête bien une fois le chiffre mis mais il ne sarrete pas lorsque le nombre d'essais et en dessous de 1...
Pourriez vous regarder et me dire qu'est ce que vous en pensez et m'aider à résoudre ce problème ?
print("")
print("")
print("")
print("")
print("Verifcation que vous n'êtes pas un robot")
print("")
print("")
print("")
print("")
testchiffre = 1
essaie = 3
while essaie >= 1 :
while testchiffre == (1):
testchiffredeux = input("Veuillez entrer un chiffre : ")
try:
testchiffre = int(testchiffredeux)
except:
essaie = essaie - 1
print("Raté, il vous reste", str(essaie), "essaie(s)")
print("")
print("")
print("")
print("ok, vous n'êtes pas un robot")
print("")
print("")
print("")
print("")
quit()
quit()
7 réponses
-
Voici le code dont je parle (désolé, je ne peux pas colorer à cause de ma synthèse vocale)
-
essai = 3
while essai >= 1:
try:
nombre = int(input("Entrez un nombre "))
essai = -1 # Ne s'exécute pas s'il y a erreur.
except ValueError:
print("Nombre invalide")
essai -= 1
if essai >= 0:
print("Vous n'avez pas saisi de nombre valide")
else:
print("Vous avez saisi le nombre", nombre)-
Contributeur
Je pense que c'est plus facile à comprendre en ajoutant une variable qui indique si un nombre a été rentré:
essai = 3 recu_nombre = False while essai >= 1 and not recu_nombre: try: nombre = int(input("Entrez un nombre ")) recu_nombre = True # Ne s'exécute pas s'il y a erreur. except ValueError: print("Nombre invalide") essai -= 1 if not recu_nombre: print("Vous n'avez pas saisi de nombre valide") else: print("Vous avez saisi le nombre", nombre)
-
-
Il y a en fait deux problème dans ce petit bout de code.
+ Comment s'arranger pour sortir de la boucle intérieure sans tester si la valeur est 1 ?
+ Comment sortir de la boucle extérieure?
Si on pouvait dire au début que le nombre n'est "pas un nombre" et pouvoir le tester, on aurait réglé une partie du problème.
Mais, ça devient plus compliqué. Ça se fait en une boucle, crois-nous!Je t'ai dit qu'on pouvait mettre autre chose entre le try et le except si ça marche.
C'est en partie là le truc si tu tiens à tes deux boucles.
-
Tu n'as pas répondu à ma question. Quel sera le test de la boucle intérieure si je veux entrer le nombre 1 ?
Ça se fait effectivement avec deux boucles mais c'est un peu plus tordu.
-
-
Contributeur@lulu_0305
Es-tu conscient que ces boucles sont imbriquées? As-tu fait d'autres exercices avec des boucles imbriquées?
-
@yg_be
Euh, je ne sais pas vraiment ce que c'est ????
-
-
Et si tu n'avais qu'une seule boucle while, ça ressemblerait à quoi?
-
-
Contributeur@lulu_0305
Eh bien, si tout fonctionne avec deux boucles, tant mieux.
-
-
Astuce: tu peux exécuter autre chose entre le try et le except si la conversion fonctionne.
-
Comment réussis-tu à sortir de ta boucle intérieure?
Comment je fais si je veux entrer le chiffre 1 comme valeur?
-
-
Contributeur@lulu_0305
Le mode debug ne t'a pas permis de comprendre ce qui se passe? Ajoute alors des print() pour comprendre ce que fait le programme que tu as écrit.
Tu n'as pas expliqué ce que tu souhaitais obtenir après trop d'essais.
-
@yg_be
Ba simplement j'aimerais juste que lorsque essaie = 0 le programme s'arrête... Mais je vais regarder avec les print().
-
-
Contributeur
Si tu veux comprendre ce que fait le programme que tu as écrit, ajoute des print() en début et en fin de chaque boucle.
-
-
Contributeur@lulu_0305
As-tu pu vérifier si le code testait la valeur de "essaie"?
-