Débutant / Faire fonctionné prog + erreur ...

Gecko59146 -  
jee pee Messages postés 9458 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis débutant en python , et j'ai trouvé intéressant un programme que j'ai trouvé sur internet . Mais , je n'arrive pas a le faire fonctionné , de plus j'ai l'impression qu'il comporte des erreurs ... Le but du programme : c'est un jeu entre 2 joueurs , ils mettent pseudo et on des vies . Le but étant de trouver un nombre aléatoire entre 1 et 100 choisis par la calculatrice qui dit moins on plus et le nombres de vie pour chaque joueur .
Pourriez-vous m'aider ?
import random
class joueurs : 
  def __init__(self, vies , pseudo):
    self.vies = vies
    self.pseudo = pseudo 

  def jouer(self):
    appreciation = "?"
    n = (0,100)
    while self.vies >0:
      message = appreciation +" -- " + self.pseudo + ":" + str(self.vies) + "vies restantes. Nombre choisi: " 
      var = input(message)
      var = int(vars)
      if var < n :
        appreciation = "trop bas"
        print(vies, var, appreciation)
      else :
        appreciation = "trop haut"
        print(vies, var , appreciation)
      if var == n:
        appreciation = "bravo !"
        print(vies , var , appreciation)
        break 

      self.vies -=1 

# Initialisation des deux joueurs
j1 = joueurs(10, "joueur 1")
j2 = joueurs(10, "joueur 2")

# j1 et j2 jouent
j1.jouer()
j2.jouer()

# Nombre de vies restantes à chaque joueur 
print("Nombre de vies restantes à chaque joueur")
print(j1.pseudo + ":" + str(j1.vies) + "restantes")
print(j2.pseudo + ":" + str(j2.vies) + "restantes")

# Résultat de la partie 
print("Résultat de la partie")
if j1.vies < j2.vies :
  print(j1.pseudo + "a gagné la partie")
elif j1.vies == j2.vies :
  print("match ,nul")
else: print(j2.pseudo + "a gagné la partie")


Merci par avance

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    si tu veux progresser, je pense préférable de commencer par des programmes plus simples.
    0
  2. M3NSONG3 Messages postés 670 Statut Membre 162
     
    Salut !

    Alors oui y'a des erreurs... Et oui effectivement si tu débutes en Python... Commencé par quelques choses avec des classes c'est pas fou comme idée.

    Si tu veux quand même corriger le code...
    -Des noms de variables sont erronées (exemple : vies au lieu de self.vies, vars au lieu de var...)
    -Le nombre généré aléatoirement.. Bah c'est pas un nombre mais c'est un tuple et c'est pas aléatoire...
    Si tu veux quand même une version corrigée, je te laisse comparer la tienne et celle-ci :
    import random
    
    
    class Joueurs:
        def __init__(self, vies, pseudo):
            self.vies = vies
            self.pseudo = pseudo
    
        def jouer(self):
            appreciation = "?"
            n = random.randint(0, 100)
            print(n)
            while self.vies > 0:
                message = appreciation + " -- " + self.pseudo + ":" + str(self.vies) + "vies restantes. Nombre choisi: "
                var = input(message)
                var = int(var)
                if var < n:
                    appreciation = "trop bas"
                    print(self.vies, var, appreciation)
                else:
                    appreciation = "trop haut"
                    print(self.vies, var, appreciation)
                if var == n:
                    appreciation = "bravo !"
                    print(self.vies, var, appreciation)
                    break
    
                self.vies -= 1
    
            # Initialisation des deux joueurs
    
    
    j1 = Joueurs(10, "joueur 1")
    j2 = Joueurs(10, "joueur 2")
    
    # j1 et j2 jouent
    j1.jouer()
    j2.jouer()
    
    # Nombre de vies restantes à chaque joueur 
    print("Nombre de vies restantes à chaque joueur")
    print(j1.pseudo + ":" + str(j1.vies) + "restantes")
    print(j2.pseudo + ":" + str(j2.vies) + "restantes")
    
    # Résultat de la partie 
    print("Résultat de la partie")
    if j1.vies < j2.vies:
        print(j1.pseudo + "a gagné la partie")
    elif j1.vies == j2.vies:
        print("match ,nul")
    else:
        print(j2.pseudo + "a gagné la partie")
    


    Je suis normalement pas fan de commenter un poste pour dire à quelqu'un "laisse c'est trop dur" comme c'est un forum d'entre-aide... Mais je devais te le dire quand même !

    Bon courage !
    0
    1. jee pee Messages postés 9458 Date d'inscription   Statut Modérateur Dernière intervention   10 013
       
      salut,
      je rajouterais il faudrait mettre le test
      if var == n
      avant le
      if var < n 
      puisque l'égalité est aussi comprise dans le
      else
      .
      0
      1. M3NSONG3 Messages postés 670 Statut Membre 162 > jee pee Messages postés 9458 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Exacte, sinon le else est aussi pris en compte... Merci beaucoup ! Ca m'apprendra à vouloir corriger sans tester !
                    if var < n:
                        appreciation = "trop bas"
                        print(self.vies, var, appreciation)
                    else:
                        appreciation = "trop haut"
                        print(self.vies, var, appreciation)
                    if var == n:
                        appreciation = "bravo !"
                        print(self.vies, var, appreciation)
                        break

        à changer en :
                    if var < n:
                        appreciation = "trop bas"
                        print(self.vies, var, appreciation)
                    elif var == n:
                        appreciation = "bravo !"
                        print(self.vies, var, appreciation)
                        break
                    else:
                        appreciation = "trop haut"
                        print(self.vies, var, appreciation)


        Encore désolé pour l'erreur !
        0
      2. jee pee Messages postés 9458 Date d'inscription   Statut Modérateur Dernière intervention   10 013 > M3NSONG3 Messages postés 670 Statut Membre
         
        Et en fin le test pour savoir qui a gagné n'est pas dans le bon sens.

        Ce devait être un exercice où il faut trouver les 7 erreurs ;-)
        0