Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de comptage de points

Sujet résolu
    17 novembre 2014 à 11:23:59

    Bonjour à tous,

    Je suis (très) débutant en python et je ne comprend pas pourquoi mon programme ne compte pas les points de mon jeux. Je m'explique:

    Le programme affiche un nombre aléatoire de 1 à 100, puis l'utilisateur entre le résultat de ce nombre fois 1.5 (Exemple: le programme m'affiche 100, alors j'inscrit 150), ensuite l'utilisateur recommence 5 fois. À la fin, l'utilisateur connais son score sur 5, mon problème est qu'il est toujours indiqués 0 poins sur 5. Pouvez-vous m'aider?

    Merci d'avance.

    Voici le code:

    # -*-coding:Latin-1 -*
    import os
    from random import randrange
    
    Points = 0
    i = 0
    continuer_partie = True
    
    print("Test des 100 premiers Black-Jack en 5 questions")
    print(" ")
    while continuer_partie:
    
    	while i < 5:
    
    		Question = randrange(101)
    		print(Question)		
    		Reponse = input("Réponse")
    		if Reponse == (Question * 1.5):
    			Points += 1
    			i += 1
    			continue	
    		else:
    			i += 1
    			continue
    	else:
    		continuer_partie = False
    else:		
    	print(Points, "points sur 5")
    
    
    os.system("pause")



    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2014 à 12:25:58

      Vérifie déjà si tu passe dans ton if ou dans ton else : if..... print(bonne réponse) else ..... print(mauvaise réponse).

      Si tu passes toujours dans le else malgré des réponses théoriquement justes, c'est que ton test Reponse == (Question*1.5) ne fonctionne pas comme tu l'espères.

      • Partager sur Facebook
      • Partager sur Twitter
      "On ne remplace pas des plombs sautés avant de savoir pourquoi ils ont sauté." 2001 l'odyssée de l'espace, Arthur C. Clarke
      Anonyme
        17 novembre 2014 à 12:50:58

        Salut mat2538,<br/> Le problème est que tu passes quoi qu'il arrive dans le else. Cela est dû au fait que tu essaie de comparer une chaîne de caractère Reponse à un nombre Question * 1.5. En effet la fonction input renvoie une chaîne de caractère. Il y a deux solutions pour résoudre ce problème:

        • Soit tu convertis Question * 1.5en chaîne de caractère avec la fonction str comme ça: str(Question * 1.5) ligne 18;
        • Soit tu convertis Reponse en nombre entier avec la fonction int de la même manière (int(Reponse)) ligne 18. Je te conseille la première option car elle te permettra d'éviter quelques problèmes si l'utilisateur n'entre pas un nombre comme demandé ;).
          Edit: Orthographe + Markdown fait des siennes

        -
        Edité par Anonyme 17 novembre 2014 à 13:01:30

        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2014 à 23:44:06

          Salut AlphaZeta,

          Merci pour la réponse rapide. Je ne suis pas très doué. J'ai fais la modification comme suit, mais sa n'à pas marcher:

          # -*-coding:Latin-1 -*
          import os
          from random import randrange
          
          Points = 0
          i = 0
          continuer_partie = True
          
          print("Test des 100 premiers Black-Jack en 100 questions")
          print(" ")
          
          while continuer_partie:
          
          	if i < 5:
          
          		Question = randrange(101)
          		print(Question)		
          		Reponse = input(" Réponse: ")
          		Reponse = int(Reponse)
          		if Reponse == (Question * 1.5):
          			Points += 1
          			i += 1
          			continue	
          		else:
          			i += 1
          			continue
          	else:
          		continuer_partie = False
          else:		
          	print(Points, "points sur 50")
          
          
          os.system("pause")



          • Partager sur Facebook
          • Partager sur Twitter
            18 novembre 2014 à 0:57:42

            Bonsoir,

            Reponse apparaît pour la première fois en ligne 18, dans l'instruction  Reponse = input("Reponse; ")

            Et Reponse est initialisée à ce moment là comme une chaine

            Et Reponse restera une chaine jusqu'à la fin du programme, quoi que tu fasses.

            Si tu veux convertir Reponse en nombre, tu dois introduire une nouvelle variable, en ligne 19 : reponse2 = int(reponse) puis comparer Reponse2 avec Question.

            Une bonne habitude est de préfixer les noms de variable :

            sReponse  : s comme String

            iReponse , iQuestion : i comme integer

            bContinuer_Partie : b comme booleen

            • Partager sur Facebook
            • Partager sur Twitter
              18 novembre 2014 à 3:50:52

              Bonsoir,

              Merci pour vos réponses rapide, voici le résultat:

              # -*-coding:Latin-1 -*
              import os
              from random import randrange
              import time
              
              Points = 0
              i = 0
              continuer_partie = True
              
              print("Test de calcul des Black-Jack")
              print(" ")
              
              nombre_de_tour = input("Nombre de tours:")
              nombre_de_tour = int(nombre_de_tour)
              sequence_de_black_jack = input("Jouer pour les Black-Jack de 1 à:")
              sequence_de_black_jack = int(sequence_de_black_jack)
              
              while continuer_partie:
              	if i < nombre_de_tour:
              
              		debut = time.time()
              		Question = randrange(sequence_de_black_jack)
              		print(Question)		
              		Reponse = input(" Réponse: ")
              		Reponse = float(Reponse)
              		if Reponse == (Question * 1.5):
              			Points += 1
              			i += 1
              			continue	
              		else:
              			i += 1
              			continue
              	else:
              		fin = time.time()
              		continuer_partie = False
              		print(Points, "sur", nombre_de_tour)
              		print("En", (debut - fin), "secondes")
              
              
              os.system("pause")



              -
              Edité par mat2538 18 novembre 2014 à 3:54:46

              • Partager sur Facebook
              • Partager sur Twitter

              Problème de comptage de points

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown