Python: name is not defined

Fermé
golum - 25 avril 2004 à 21:20
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 25 avril 2004 à 22:32

Salut tout le monde,
Chuis débutant en Python; je suis en train de coder le jeu Tours d'hanoi et g trouvé un pbl pour la source suivante, il me dit lors de l'affectation de la variable jeu que 'clHanoiTxt is not defined.
Pourriez vs m'aider.
Merci

import string 
import hanoi 

class  clHanoiTxt :
  def __init__ ( self,hauteur ) :
   self.hauteur = hauteur
   self.hanoi = hanoi.clHanoi(hauteur)
  def ReprDisque( self, taille ) :
   if ( taille == 0 ) :
    return "!"
   s = "="*taille
   return "<"+s+"!"+s+">"
 
  def AfficherJeu (self) :
   largeur_max = len(self.ReprDisque(self.hauteur))+2
   print (string.center("o",largeur_max)+" ")*3
   etages = range(1,self.hauteur+1)
   etages.reverse()
   for disque in etages :
    for tour in self.hanoi.tours :
     taille = tour.disque(disque)
     repr = self.ReprDisque(taille)
     print string.center(repr, largeur_max),
     print
     print(" "*largeur_max+" ")*3

  h = int(raw_input("Nombre de disques?"))
  jeu = clHanoiTxt(h)
  jeu.AfficherJeu()

1 réponse

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 662
25 avril 2004 à 22:32
D'après ce que je vois, au niveau indentation, jeu = clHanoiTxt(h) est au même niveau que def __init__

Donc pour Python, les 3 dernière lignes de ton programme font partie de ta classe.
Il faut qu'ils soient en début de ligne.

Pense à bien indenter ton code (utiliser 4 ou 8 espaces).
Là on distingue difficile les blocs, ce qui mène rapidement à des erreurs.

import string 
import hanoi 

class  clHanoiTxt :
    def __init__ ( self,hauteur ) :
        self.hauteur = hauteur
        self.hanoi = hanoi.clHanoi(hauteur)

    def ReprDisque( self, taille ) :
        if ( taille == 0 ) :
            return "!"
        s = "="*taille
        return "<"+s+"!"+s+">"

    def AfficherJeu (self) :
        largeur_max = len(self.ReprDisque(self.hauteur))+2
        print (string.center("o",largeur_max)+" ")*3
        etages = range(1,self.hauteur+1)
        etages.reverse()
        for disque in etages :
            for tour in self.hanoi.tours :
                taille = tour.disque(disque)
                repr = self.ReprDisque(taille)
                print string.center(repr, largeur_max),
                print
                print(" "*largeur_max+" ")*3

h = int(raw_input("Nombre de disques?"))
jeu = clHanoiTxt(h)
jeu.AfficherJeu()
3