Problème projet Python

lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    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
    1. 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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
  2. PierrotLeFou
     

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

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

    0
    1. 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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
      2. lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 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
  3. PierrotLeFou
     

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

    0
  4. PierrotLeFou
     

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

    0
    1. 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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. 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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
      2. lulu_0305 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

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

        0
  7. 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
    1. 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
  8. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      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