Problème projet Python

lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -

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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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.

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Oui et je suis passer en débug mais j'arrive pas régler le fait que lorsque que essaie=0 le programme se stop.

Enfaite ça continue même en dessous ça passe a -1 et etc...

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

As-tu pu vérifier si le code testait la valeur de "essaie"?

0
PierrotLeFou
 

Comment réussis-tu à sortir de ta boucle intérieure?

Comment je fais si je veux entrer le chiffre  1  comme valeur?

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Justement, si on ne mets que des mauvaises réponse, j'aimerai que le programme se termine lorsque que essaie = 0

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

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.

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Ba simplement j'aimerais juste que lorsque essaie = 0 le programme s'arrête... Mais je vais regarder avec les print().

0
PierrotLeFou
 

Astuce: tu peux exécuter autre chose entre le try et le except si la conversion fonctionne.

0
PierrotLeFou
 

Et si tu n'avais qu'une seule boucle while, ça ressemblerait à quoi?

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Je ne peux pas j'ai besoin des 2 boucles parce que sinon ça ne fait pas la vérification si c'est bon ou pas.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Eh bien, si tout fonctionne avec deux boucles, tant mieux.

1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PierrotLeFou
 

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.

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

La première boucle vérifie (normalement, ce qui apparemment ici ne marche pas) que essaie est supérieur à 1 et la 2eme test si notre notre réponse est convertible en int()

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Es-tu conscient que ces boucles sont imbriquées?  As-tu fait d'autres exercices avec des boucles imbriquées?

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Euh, je ne sais pas vraiment ce que c'est ????

0
PierrotLeFou
 

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.

0
lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 

Enfaite, je ne comprend pas vraiment ce que tu veux faire ????

Peut tu illustrer avec un bout de code svp ?

0
PierrotLeFou
 

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)

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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)
0