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

Gecko59146 -  
jee pee Messages postés 41520 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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
si tu veux progresser, je pense préférable de commencer par des programmes plus simples.
0
M3NSONG3 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention   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
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
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
M3NSONG3 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention   162 > jee pee Messages postés 41520 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
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > M3NSONG3 Messages postés 615 Date d'inscription   Statut Membre Dernière intervention  
 
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