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

Python Discussion :

jeu ni oui ni non


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut jeu ni oui ni non
    Bonjour,

    je dois faire le jeu ni oui ni non mais le programme ne veux pas s'arrêter quand il y a oui ou non. Pouvez-vous m'aider s'il vous plait.

    import random
    question1= "Comment t'appelles-tu?"
    print(question1)
    réponses1=["Pierre", "Valentin", "Clément", "Théo", "Jennifer", "Julie", "Clémence", "Pauline", "c’est un secret", "ça ne te regarde pas", "comme ton frère"]
    un_element1 = random.choice(réponses1)
    print("Je m'appelle",un_element1)
    if un_element1=="non":
    print("perdu")
    elif un_element1=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

    if un_element1!="oui"or"non":
    question2= "Où habites-tu?"
    print(question2)
    réponses2=["à côté de chez toi", "à New-York", "à Paris", "à Riom"]
    un_element2 = random.choice(réponses2)
    print("J'habite",un_element2)
    if un_element2=="non":
    print("perdu")
    elif un_element2=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

    question3= "Aimes-tu le sport?"
    print(question3)
    réponses3=["Je déteste", "J’adore", "Pourquoi pas", "oui", "non", "j’en pratique", "ce n’est pas ma tasse de thé"]
    un_element3 = random.choice(réponses3)
    print(un_element3)
    if un_element3=="non":
    print("perdu")
    elif un_element3=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

    if un_element3!="oui"or"non":
    question4= "Es-tu en couple?"
    print(question4)
    réponses4=[ "J’ai une copine", "Je suis marié", "je suis célibataire", "de temps en temps", "je viens de rompre", "oui", "non"]
    un_element4 = random.choice(réponses4)
    print(un_element4)
    if un_element4=="non":
    print("perdu")
    elif un_element4=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

    if un_element4!="oui"or"non":
    question5= "Aimes-tu les légumes?"
    print(question5)
    réponses5=["Seulement les verts", "je préfère les fruits", "seulement en soupe", "Beurk !", "oui", "non", "peut-être"]
    un_element5 = random.choice(réponses5)
    print(un_element5)
    if un_element5=="non":
    print("perdu")
    elif un_element5=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

    question6= "Es-tu déjà allé à Las Vegas?"
    print(question6)
    réponses6=["C’est une très belle ville", "j’aimerais y aller jouer au casino", "oui", "non", "j’adore leur excentricité"]
    un_element6 = random.choice(réponses6)
    print(un_element6)
    if un_element6=="non":
    print("perdu")
    elif un_element6=="oui":
    print("perdu")
    else:
    print("continuons le jeu")

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    tous les trucs comme ça c'est pas bon ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if un_elementN!="oui"or"non":
    c'est pas la bonne façon d'écrire la condition que tu veux.

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Bonjour,

    Sans insérer ton code avec les balises adéquates (bouton #) on ne peut savoir si ton problème résulte d'une mauvaise utilisation des boucles if, ou si (comme je l'ai supposé) tu souhaite trouver une méthode pour interrompre le programme dans le cas ou un "oui" ou un "non" apparait.

    Je te propose l'idée suivante (basée uniquement sur la question 1):

    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
    # -*- coding:Utf-8 -*-
     
    import random
    import sys
     
     
    # QUESTIONS
    question1= "Comment t'appelles-tu?"
    reponses1=["Pierre", "Valentin", "Clément", "Théo", "Jennifer", "Julie",  
               "Clémence", "Pauline", "c’est un secret", "ça ne te regarde pas",
               "comme ton frère", "non"]
     
     
    # QUESTION 1
    print(question1)
    un_element1 = random.choice(reponses1)
    print("Je m'appelle",un_element1)
    if un_element1=="non":
        print("perdu")
        sys.exit()
    elif un_element1=="oui":
        print("perdu")
        sys.exit()
    else:
        print("continuons le jeu")
    J'ai légérement modifié ton code. L'idée réside dans l'utilisation de la méthode "exit()" du module "sys". Si "oui" ou "non" est trouvé, alors le programme s'arrête grâce à sys.exit().

    Toutes les questions peuvent être gérées de la même façon, autant de blocs que de questions.


    Ju

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    Citation Envoyé par Julien N Voir le message
    J'ai légérement modifié ton code. L'idée réside dans l'utilisation de la méthode "exit()" du module "sys". Si "oui" ou "non" est trouvé, alors le programme s'arrête grâce à sys.exit().

    Toutes les questions peuvent être gérées de la même façon, autant de blocs que de questions.


    Ju
    sys.exit() c'est pas beau, python a déjà une fonction exit() qui est builtin.

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 48
    Par défaut
    Edit : Grillé

    Bonjour,

    Pour la première étape, je vais me permettre de citer un membre du forum :

    Pour être lisible, il faudrait que ton code soit entre balises code. Pour cela, édite ton post, sélectionne le code et clique sur l'icône #.
    ca aide à voir l'indentation, et puis ca pique moins

    Pour ta question maintenant :

    Si le programme ne s'arrête pas, ce n'est pas vraiment sa volonté propre, un programme ne veut rien (dieu merci).

    Simplement, je ne vois nul part un endroit ou tu lui aurais indiqué qu'il devait s'arrêter. Donc comment le lui dire ? Et ou le lui demander ?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour,

    Tout d'abord, lorsque tu poste du code, il faut utiliser la balise prévue à cet effet. Python étant un langage basé sur l'indentation, il est capital de respecter
    celle-ci.

    Ensuite, je vois beaucoup de code inutile dans ton programme. En effet, pourquoi répéter en ligne les même instruction alors qu'il est si simple d'utiliser
    des tableaux et une boucle. Je n'ai même pas vu d'instruction permettant d'ignorer la suite en cas ou le programme a perdu.

    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
    40
    41
    42
    43
    44
     
    #!/usr/bin/env python
    # -*- coding:UTF-8  -*-
     
    """
        Jeu : ni oui ni non
     
    """
    from __future__ import print_function
    from __future__ import division
     
    import random
     
     
     
    def main():
        questions = [
            u"Comment t'appelles-tu ?",
            u"Où habites-tu ?",
            u"Aimes-tu le sport ?",
            u"Es-tu en couple ?",
            u"Aimes-tu les légumes ?",
            u"Es-tu déjà allé à Las Vegas?"]
        reponses=[
            [u"Pierre", u"Valentin", u"Clément", u"Théo", u"Jennifer", u"Julie", u"Clémence", u"Pauline", u"c’est un secret", u"ça ne te regarde pas", u"comme ton frère"],
            [u"à côté de chez toi", u"à New-York", u"à Paris", u"à Riom"],
            [u"Je déteste", u"J’adore", u"Pourquoi pas", u"oui", u"non", u"j’en pratique", u"ce n’est pas ma tasse de thé"],
            [u"J’ai une copine", u"Je suis marié", u"je suis célibataire", u"de temps en temps", u"je viens de rompre", u"oui", u"non"],
            [u"Seulement les verts", u"je préfère les fruits", u"seulement en soupe", u"Beurk !", u"oui", u"non", u"peut-être"],
            [u"C’est une très belle ville", u"j’aimerais y aller jouer au casino", u"oui", u"non", u"j’adore leur excentricité"]]
        # La finction zip permet de mettre deux liste "côte à côte" sous forme d'une liste de tuple
        for question,choix in zip(questions,reponses):
            print(question)
            reponse = random.choice(choix)
            print(reponse)
            if reponse.lower() in (u'oui',u'non'):
                print(u'perdu')
                break
            else:
                print(u'continuons le jeu')
     
     
    if __name__ == '__main__':
        main()
    N'est-ce pas plus clair et plus simple ainsi ?

    Autre chose, précise toujours la version de python avec laquelle tu travaille et, le cas échéant, le système d'exploitation même si, ici, ce dernier n'est pas important.

    Dans ton cas, au vu des instructions, je présume que tu travaille en python 3.x. Auquel cas, dans mon code, tu laisse tomber les u devant les chaînes unicode et les instruction from future.

  7. #7
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    sys.exit() c'est pas beau, python a déjà une fonction exit() qui est builtin.
    Exact.

    La solution de chticricri est encore plus élégante.


    Ju

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 067
    Par défaut
    Citation Envoyé par Julien N Voir le message
    Exact.

    La solution de chticricri est encore plus élégante.


    Ju
    mais le "else" ne sert à rien et je pense qu'un dictionnaire est plus approprié.

  9. #9
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut Merci
    Merci à tous. Pour des programmeurs je suis sûre que la solution de chticricri est la meilleure mais comme on doit expliquer notre programme à l'oral pour le bac je ne serais pas très à l'aise avec donc je vais choisir la solution de Julien N qui ne modifie pas notre structure principal du programme. Par contre savez-vous comment on pourrais lancer les questions une par une ?

    Encore merci

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Yaka transformer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    print(question1)
    un_element1 = random.choice(reponses1)
    print("Je m'appelle",un_element1)
    if un_element1=="non":
        print("perdu")
        sys.exit()
    elif un_element1=="oui":
        print("perdu")
        sys.exit()
    else:
        print("continuons le jeu")
    En une fonction valide_qr(question, reponses) qui retourne True ou False.
    Ce qui permet de séparer: 'perdu' => on sort, 'gagne' => on continue (peut etre).
    - W
    PS: Et je m'abstiens de coder a votre place car "apprendre a programmer" est un exercice qui suppose votre participation "active".
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Appartenir oui ou non à un domaine windows
    Par liliprog dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 07/12/2005, 17h02
  2. "MODALE" Oui ou Non en VBA ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 3
    Dernier message: 08/11/2005, 14h08
  3. Message avec un bouton "oui" et "non"
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2004, 15h50
  4. [Pervasive SQL]Migration oui ou non?
    Par nenex dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 02/11/2004, 17h03
  5. Conception de Base de données (AutoIncrément oui ou non)
    Par matgel dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 16/04/2004, 08h47

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