IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

comment écraser une condition


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut comment écraser une condition
    Bonjour,

    Je suis en auto-formation et par conséquent je m'amuse à modifier des codes existants. Ici en l’occurrence, il s'agit d'un jeu ou l'utilisateur doit deviner le nombre généré par le programme. Il n'a que 6 essais. J'aimerais qu'au 6ème essai il soit affiché : "Raté ! le nombre auquel je pensais était 8".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    import random 
     
    tentative = 0
     
    nom = input(("Bonjour ! Comment t'appelles-tu ?"))
     
    #number = random.randint(1,20)
     
    number=8
     
    print("Bien, " + nom +  ", je pense à un nombre entre 1 et 20.Quel est ce nombre ?")
     
    while tentative!=6:
     
        chiffre_devine=int(input())   
     
     
        if chiffre_devine < number:
            tentative=tentative+1
            print("trop petit")
            print("ceci est ton ",tentative,"essai")
            print("il ne te reste plus que",6-tentative,"coups" )
     
        if chiffre_devine > number:
            tentative=tentative+1
            print("trop grand")
            print("ceci est ton ",tentative,"essai")
            print("il ne te reste plus que",6-tentative,"coups" )
     
     
        if chiffre_devine == number:
            tentative = tentative+1
            print("Bravo, " , nom , ", tu as trouvé mon nombre en " , tentative , "coup")
     
     
            break
     
        if tentative==6:
            print("Raté ! le nombre auquel je pensais était " ,number )
    Pour l'exemple, je propose le chiffre un, 5 fois, puis quand j'arrive à mon 6ème essai, il s'affiche :

    "trop petit
    ceci est ton 6 essai
    il ne te reste plus que 0 coups
    Raté ! le nombre auquel je pensais était 8"

    Ce qui n'est pas normal, car je précise bien dans ma boucle que l'affichage doit se faire tant que la variable "tentative" est différente de 6.

    Je souhaiterai qu'il soit indiqué tout simplement après le 6ème essai :

    "Raté ! le nombre auquel tu pensais était 8".

    Vous me direz que c'est pas grave, mais je veux comprendre pourquoi ça ne fonctionne pas comme je veux, j'y ai bien passé au moins 3 heures en bidouillant, mais rien. Peut-être parce que je suis tête dans le guidon?

    Ai-je oublié quelque chose ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par floyd973 Voir le message
    Ai-je oublié quelque chose ?
    Python ne se trompe pas, s'il affiche 6, c'est que la variable vaut 6.
    Après la difficulté que vous avez est de relire votre code pas à pas et de visualiser le contenu de vos variables après chaque instruction. Au début, ce n'est pas évident et écrire çà sur une feuille de papier est fastidieux mais très instructif.
    L'autre intérêt est qu'une fois le problème mis en évidence, vous allez apprendre à écrire un code qui sera un peu plus lisible (au sens comprendre ce qu'il fait).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par floyd973 Voir le message
    (...) je veux comprendre pourquoi ça ne fonctionne pas comme je veux (...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while tentative!=6:
    (...)
        if tentative==6:
            print("Raté ! le nombre auquel je pensais était " ,number )
    ton if est pris dans le while qui lui justement s'arrête dès la 6e tentative, c'est donc un problème d'indentation

  4. #4
    Membre confirmé
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut
    j'ai essayé cela également, mais ça ne fonctionne pas. j'ai toujours les 3 lignes en rouge qui continuent d'apparaitre, j'obtiens donc ceci au bout du 6 ème essai erroné :

    "trop petit
    ceci est ton 6 essai
    il ne te reste plus que 0 coups

    Raté ! le nombre auquel je pensais était 8"

    Je souhaiterai que la partie en rouge n'apparaisse plus au ème essai et garder que la partie en bleu

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par floyd973 Voir le message
    Je souhaiterai que la partie en rouge n'apparaisse plus au ème essai et garder que la partie en bleu
    Si vous voulez qu'une séquence d'instructions comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            print("trop petit")
            print("ceci est ton ",tentative,"essai")
            print("il ne te reste plus que",6-tentative,"coups" )
    ne soit exécutée qu'à certaines conditions, il faut le faire explicitement avec un "if <condition>".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre confirmé
    Avatar de floyd973
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut
    Effectivement, je commence à mieux comprendre le fonctionnement des boucles. C'est on ne peut plus clair maintenant. Je demandais au programme de ne pas faire quelque chose que je lui avais demander de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import random 
     
    tentative = 0
     
    nom = input(("Bonjour ! Comment t'appelles-tu ?"))
     
    #number = random.randint(1,20)
     
    number=8
     
    print("Bien, " + nom +  ", je pense à un nombre entre 1 et 20.")
     
    while tentative<6 :
        #print("essaie de deviner le chiffre auquel je pense")
        chiffre_devine=int(input())   
     
     
        if chiffre_devine < number:
            tentative=tentative+1
            if tentative<6:  
                print("trop petit")
                print("ceci est ton ",tentative,"essai")
                print("il ne te reste plus que",6-tentative,"coups" )
     
        if chiffre_devine > number:
            tentative=tentative+1
            if tentative<6:
                print("trop grand")
                print("ceci est ton ",tentative,"essai")
                print("il ne te reste plus que",6-tentative,"coups" )
     
        if chiffre_devine==number:
            print("Bravo, " , nom , ", tu as trouvé mon nombre en " , tentative+1 , "coups")
     
            break
     
    if chiffre_devine!=number and tentative == 6 :
        print("Raté ! le nombre auquel je pensais était " ,number )
    Et je comprends beaucoup mieux l'importance de l'indentation. A une indentation près, nous sommes très rapidement à l'extérieur ou dans la boucle.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par floyd973 Voir le message
    Je demandais au programme de ne pas faire quelque chose que je lui avais demander de faire
    Eh oui, un programme ne fait que ce que vous avez demandé...
    Après, apprenez les bases, et à simplifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import random 
     
     
    MAX_TENTATIVES = 3
    tentative = 0
     
    nom = input(("Bonjour ! Comment t'appelles-tu ?"))
     
    #number = random.randint(1,20)
     
    number=8
     
    print("Bien, " + nom +  ", je pense à un nombre entre 1 et 20.")
     
    while tentative < MAX_TENTATIVES :
        #print("essaie de deviner le chiffre auquel je pense")
        chiffre_devine=int(input())   
     
        if chiffre_devine < number:
            print("trop petit")
        elif chiffre_devine > number:
            print("trop grand")
        else:
            print("Bravo, " , nom , ", tu as trouvé mon nombre en " , tentative+1 , "coups")
     
            break
        tentative += 1
        if tentative < MAX_TENTATIVES:
            print("ceci est ton ",tentative,"essai")
            print("il ne te reste plus que", MAX_TENTATIVES-tentative,"coups" )
    else:
        print("Raté ! le nombre auquel je pensais était " ,number )
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2007, 11h06
  2. Réponses: 16
    Dernier message: 06/04/2007, 13h36
  3. Réponses: 1
    Dernier message: 08/09/2006, 10h31
  4. Réponses: 9
    Dernier message: 01/06/2006, 14h12
  5. Comment créer une condition
    Par pierrot10 dans le forum ASP
    Réponses: 4
    Dernier message: 28/11/2005, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo