Problème projet Python

Fermé
lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022 - 10 nov. 2022 à 19:07
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 - 12 nov. 2022 à 10:30

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 Ambassadeur 1 554
10 nov. 2022 à 20:23

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
10 nov. 2022 à 21:21

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 09:22

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

0

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 09:55

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 10:29

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022 > yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024
11 nov. 2022 à 11:19

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

0
PierrotLeFou
11 nov. 2022 à 04:47

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

0
PierrotLeFou
11 nov. 2022 à 14:51

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

0
lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 16:19

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 17:35

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

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 19:07

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > lulu_0305 Messages postés 9 Date d'inscription jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 19:24

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022 > yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024
11 nov. 2022 à 20:48

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

0

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 jeudi 10 novembre 2022 Statut Membre Dernière intervention 11 novembre 2022
11 nov. 2022 à 20:47

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

Peut tu illustrer avec un bout de code svp ?

0
PierrotLeFou
12 nov. 2022 à 02:33

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 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554
12 nov. 2022 à 10:30

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