» »

[python] drevesa

[python] drevesa

memnon ::

zivjo, imam sicer preprosto nalogo iz dreves ki pa mi povzroča kar nekaj tezav.
Dan imam razred drevo, ki predstavlja dvojisko drevo:
class Drevo:

    def __init__(self, *args, **kwargs):
        if args:
            self.prazno = False
            self.vsebina = args[0]
            self.levo = kwargs.get('levo', Drevo())
            self.desno = kwargs.get('desno', Drevo())
        else:
            self.prazno = True

    def __repr__(self, zamik = ''):
        if self.prazno:
          return 'Drevo()'.format(zamik)
        elif self.levo.prazno and self.desno.prazno:
          return 'Drevo({1})'.format(zamik, self.vsebina)
        else:
          return 'Drevo({1},\n{0}      levo = {2},\n{0}      desno = {3})'.\
            format(
              zamik,
              self.vsebina,
              self.levo.__repr__(zamik + '             '),
              self.desno.__repr__(zamik + '              ')
            )

    def __eq__(self, other):
        return ((self.prazno and other.prazno) or
                (not self.prazno and not other.prazno and
                 self.vsebina == other.vsebina and
                 self.levo == other.levo and
                 self.desno == other.desno))


razredu moram dodati metodo, ki vrne vsoto vseh stevil v drevesu. jaz sem napisal:
def vsota(self):
    if self.prazno==True: return 0
    else:
        vsota=self.vsebina+vsota(self.levo)+vsota(self.desno)
        return vsota

ampak to ne dela. Napaka, ki jo dobim je: AttributeError: 'Drevo' object has no attribute 'vsota'.
hvala za pomoč.

Genetic ::

Sicer ne govorim Pythona, ampak namesto
vsota=self.vsebina+vsota(self.levo)+vsota(self.desno)
daj
vsota=self.vsebina+self.levo.vsota+self.desno.vsota

Hm, pa se popravek: vsota uporabljas kot ime metode in kot vmesno variablo, ki ni deklarirana.
Naredi tako:
return self.vsebina+self.levo.vsota+self.desno.vsota

Zgodovina sprememb…

  • spremenil: Genetic ()

memnon ::

hvala, ampak se vedno ne dela.

sedaj imam takole:
def vsota(self):
    if self.prazno==True: return 0
    else:
        return self.vsebina+self.levo.vsota()+self.desno.vsota()

Zgodovina sprememb…

  • spremenil: memnon ()

Spura ::

In kje imas ti to funkcijo vsota? Aja vidim da imas kot dodatek. Seveda, ce si jo deklariral kot metodo brez parametrov.

Zgodovina sprememb…

  • spremenil: Spura ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

python-rabim pomoč

Oddelek: Programiranje
162773 (1003) rnla1973
»

Težava pri pogoju razredu [Python]

Oddelek: Programiranje
5805 (599) wungad
»

Python - težava s slovarji - vnos

Oddelek: Programiranje
51294 (1116) RatedR
»

Predstavitev dvojiškega drevesa z seznamom

Oddelek: Programiranje
141935 (1535) ktka
»

[Python]Naloga z razredi in dedovanjem

Oddelek: Programiranje
101147 (899) ktka

Več podobnih tem