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 :

débutante:problème dans un script de jeu,inventé


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    invalide
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : invalide
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut débutante:problème dans un script de jeu,inventé
    j'essaye de mettre en pratique le peu que j'ai appris et cela en faisant un jeu du vrai/faux(ne faite pas attention aux bêtes questions c'est juste pour avoir une base..),tout va bien sauf la fin,j'aimerai lorsque toutes les réponses sont fausses qu'il affiche une expression supplémentaire aux vrai/faux,j'ai essayer plusieurs combinaisons évidemment car sinon où serait le plaisir!! mais là je calle et comme j'apprends sans prof je me présente à vous avec toute mon ignorance,voici le petit script que j'ai développé,ensuite je vous mettrai la partie qui me pose problème en espérant votre concoure pour le résoudre(j'utilise IDLE).
    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
    a="vous jouez aux vrai/faux\n"
    print (a)
    print ("question 1:)
    question1= input('\n quel est le jour de votre rencontre?: \n')
    b='22'
    c='vous avez gagné\n'
    d='vous avez perdu\n'
    if question1==b:
        print(c)
    else:
        print(d)
    print('question 2:')
    question2=input('\n quelle est la couleur de la twingo?: \n')
    e='rouge'
    if question2==e:
        print(c)
    else:
        print(d)
    jusque la tout va bien même si je suis sûr qu'il y a moyen de synthétiser les formules en associant a,b,c,...= ...
    mais bon, ça fonctionne donc je suis déjà satisfaite pour le moment seulement lorsque j'ajoute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(b,e==d):
        print('vous êtes nul')
    else:
        print('vous êtes fort')
    j'ai essayé plusieurs indentations,d'autres codes,pas moyen, d'avoir: si toutes les réponses sont bonnes d'afficher 'vous êtes fort' et quand tout est faux avoir 'vous êtes nul'

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Voici un exemple que vous pourrez étudier :

    Code python : 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
    # -*- coding: utf-8 -*- 
     
    questions = []
    questions.append({'phrase' : 'Quel est le jour de votre rencontre?', 'reponse' : '22'})
    questions.append({'phrase' : 'Quelle est la couleur de la twingo?',  'reponse' : 'rouge'})
     
    def pose_question(question) :
    	if raw_input(question['phrase'] + '\n') == str(question['reponse']) :
    		print 'Bien !'
    		return 1
    	else :
    		print 'Mauvaise réponse'
    		return 0
     
    def game() :
    	score = 0
    	print "Vous jouez aux vrai/faux\n "
     
    	for question in questions : 
    		score += pose_question(question)
     
    	if score == 0 :
    		print 'Vous avez tout faux !'
    	else :
    		if score == len(questions) :
    			print 'Vous êtes un champions !'
     
    game()

    Si vous avez des questions, n'hésiter pas.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    Votre code pose plusieurs problèmes:
    ligne 3:
    Ici, les guillemets ne sont pas fermés, donc Python considère que la ligne n'est pas terminée!!

    D'autre part, il manque un petit truc important en tout début de script. Il est souvent préférable d'indiquer le jeu d'encodage des caractères. Ceci se fait en ajoutant en première ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: UTF-8 -*-
    De même pour éviter des problèmes si la machine que vous utilisez est munies de plusieurs versions de Python (ou simplement pour limiter le script à une seule version de Python), il est intéressant d'insérer en première ligne (obligatoirement) le chemin de l'interpréteur Python (attention cela peut varier: je suis sous linux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/python3
    # -*- coding: UTF-8 -*-
    Ensuite, en ce qui concerne votre question à proprement parler:
    Citation Envoyé par labelgikaine Voir le message
    j'aimerai lorsque toutes les réponses sont fausses qu'il affiche une expression supplémentaire aux vrai/faux
    Et bien il suffit de reprendre vos deux conditions précédentes et de les combiner afin de déterminer si elles sont fausses toutes les deux!
    Pour cela il faut que la première soit fausse et que la deuxième soit fausse!
    Pour cela Python utilise un mot clef "and":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> a = 1
    >>> b = 2
    >>> if a==1 and b==2:
    	print("oui a vaut 1 et b vaut 2")
     
    oui a vaut 1 et b vaut 2
    >>> a = 3
    >>> b = 2
    >>> if a==1 and b==2:
    	print("oui a vaut 1 et b vaut 2")
     
     
    >>>
    De la même manière, vous pouvez dans votre script, utiliser ce "and" à la fin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if question1!=b and question2!=e:
        print("vous êtes nul")
    else:
        print("vous êtes fort")
    Attention cependant: ici la condition n'est vraie que si les deux réponses sont fausses en même temps!!
    Si au moins l'une des deux réponses est vérifiée alors c'est la partie "else" qui sera parcourue!!

    Toute dernière petite chose: il serait bien d'aérer un peu le script et de rajouter un ou deux commentaires (afin que le code soit plus facilement compréhensible par n'importe qui et par vous aussi, dans quelques mois, lorsque vous vous replongerez dedans!! :-) )

    Clodion

    PS: N'oubliez pas non plus de bien continuer sur votre lancée avec des noms de variables explicites telles que "question1" et "question2" et évitez les "a, b, c, d et e"!! :-)
    Ici à la place de "b" et de "e", "rep1" et "rep2" seraient plus parlant!

  4. #4
    Futur Membre du Club
    Femme Profil pro
    invalide
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : invalide
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    clodion:

    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
    #-*- coding: UTF-8 -*-
    #!/usr/bin/python3.2
    titre="vous jouez aux vrai/faux\n\n"         #titre du jeu
    print(titre)
    print ('question 1: ')                     #question 1
    question1=input('\n quel est le jour de votre rencontre?: \n')
    rep1= '22'                                #réponse a trouver
    c='vous avez gagné\n'                  #quand la réponse est bonne
    d='vous avez perdu\n'                  #quand la réponse est mauvaise
    if question1==rep1:                       #si la réponse est bonne
        print(c)                           #afficher:vous avez gagne
    else:                                  #sinon afficher:vous avez perdu
        print(d)
    print('\n question 2: ')                 #question 2
    question2=input ('\n quelle couleur est la renaud twingo?: \n')
    rep2= 'rouge'                             #réponse a trouver
    if question2==rep2:                       #si la réponse est bonne
        print(c)                           #afficher:vous avez gagne
    else:   
        print(d)                           #sinon afficher:vous avez perdu
        if question1!=rep1 and question2!=rep2:
            print ('\n vous etes nul')
        if question1==rep1 and question2==rep2:
            print ('\n vous êtes fort')
    j'ai tenu compte de vos conseils concernant les explications de script et d'une meilleur nomination des variables mais lorsque j'exécute le script et que toutes les réponses sont fausses il me mets 'vous êtes nul' après 'vous avez perdu'.
    par contre lorsque toute les réponses sont bonnes il n'inscrit pas 'vous êtes fort' j'ai essayé avec le mot clé: ELSE au lieu de IF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if question1!=rep1 and question2!=rep2:
            print('\n vous êtes nul')
        else:
            print('\n vous êtes fort')
    mais il me mettait 'vous êtes fort' alors qu'1 des réponses était fausse

  5. #5
    Futur Membre du Club
    Femme Profil pro
    invalide
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : invalide
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut débutante:problème dans un script de jeu,inventé
    merci golgotha, il y a des mots clés que je ne connais pas encore mais je vais profiter de ton script pour les apprendre donc je vais prendre un peu de temps avant de pouvoir en parler mais je fais ça ces jour-ci et encore merci à tous

  6. #6
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonsoir,
    Citation Envoyé par labelgikaine Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if question2==rep2:                       #si la réponse est bonne
        print(c)                           #afficher:vous avez gagne
    else:   
        print(d)                           #sinon afficher:vous avez perdu
        if question1!=rep1 and question2!=rep2:
            print ('\n vous etes nul')
        if question1==rep1 and question2==rep2:
            print ('\n vous êtes fort')
    (ce sont les lignes 21 à 24 de votre code précédent)
    Si l'on suit pas-à-pas le code:
    Si question2 est la bonne réponse alors j'affiche c (gagné)
    Sinon (ie: ce n'est pas la bonne réponse) alors j'affiche d (perdu) puis je continue en évaluant: Si la question1 n'est pas bonne et que la question2 n'est pas bonne…

    Je vous laisse continuer le raisonnement!! :-)
    Oui?

    En fait la petite erreur de votre code est que la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if question1!=rep1 and question2!=rep2:
            print ('\n vous etes nul')
        if question1==rep1 and question2==rep2:
            print ('\n vous êtes fort')
    est indentée au même niveau que le "else" précédent!!!
    Cela signifie donc que ce morceau de code est évalué (exécuté) par Python uniquement lorsque la réponse2 n'est pas vraie (donc que vous avez donné la mauvaise réponse). Si la réponse2 est vraie (bonne réponse) alors ce code n'est jamais exécuté par Python.

    Ce qui signifie que votre script tourne parfaitement, et avec le résultat escompté si vous remettez l'indentation à zéro pour cette dernière partie (lignes 22 à 25 ci-dessous):
    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 -*-
    #!/usr/bin/python3.2
    titre="vous jouez aux vrai/faux\n\n"         #titre du jeu
    print(titre)
    print ('question 1: ')                     #question 1
    question1=input('\n quel est le jour de votre rencontre?: \n')
    rep1= '22'                                #réponse a trouver
    c='vous avez gagné\n'                  #quand la réponse est bonne
    d='vous avez perdu\n'                  #quand la réponse est mauvaise
    if question1==rep1:                       #si la réponse est bonne
        print(c)                           #afficher:vous avez gagne
    else:                                  #sinon afficher:vous avez perdu
        print(d)
    print('\n question 2: ')                 #question 2
    question2=input ('\n quelle couleur est la renaud twingo?: \n')
    rep2= 'rouge'                             #réponse a trouver
    if question2==rep2:                       #si la réponse est bonne
        print(c)                           #afficher:vous avez gagne
    else:   
        print(d)                           #sinon afficher:vous avez perdu
     
    if question1!=rep1 and question2!=rep2: # les deux réponses sont fausses
        print('\n vous etes nul')          
    if question1==rep1 and question2==rep2: # les deux réponses sont exactes
        print('\n vous êtes fort')
    Oui?

    Si vous avez un problème avec l'indentation sous Python, n'hésitez pas à le dire car c'est fondamental (et ce n'est pas bien compliqué)!!

    PS: je me suis permis d'enlever aussi les espaces devant les parenthèses des deux fonctions "print" de la fin (c'est plus lisible lorsque le nom de la fonction et les arguments ne sont pas séparés). :-)

    Clodion

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

Discussions similaires

  1. [PHP-JS] problème dans mon script
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 08h57
  2. problème dans mon script
    Par kawther dans le forum Langage
    Réponses: 1
    Dernier message: 21/03/2007, 16h40
  3. [débutant] problème dans le cours de S.Tahe
    Par olivier57b dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 19/02/2007, 13h56
  4. [MySQL] Problème dans mon script de pagination
    Par speedylol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2005, 19h37
  5. [Débutant] Probléme dans applet
    Par brionne dans le forum Applets
    Réponses: 1
    Dernier message: 29/08/2005, 11h53

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