Informatika2-2012/Gyakorlat11m

A MathWikiből
A lap korábbi változatát látod, amilyen Stma (vitalap | szerkesztései) 2012. május 1., 14:23-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
#!/usr/bin/env python
 
class MyNoneError(TypeError):
    pass
 
class Jegyzet(str, object):
    # def konstruktor atirasa
    # ebben az esetben felesleges, mert a string-tol szarmazik le
    # a string pedig eleve ami eleve egy sorozatot var parameternek
    #def __init__(self, s=[])
    #    self.__data__ = str(s)
    #pass
    def __init__(self, s = None):
        if not isinstance(s, str) or len(s) < 1:
            raise MyNoneError('nincs semmi feljegyezve')
        else:
            #super(self, str).__init__(self, s)
            str.__init__(self, s)
 
 
class Jegyzettomb(list, object):
    # mivel a lista leszarmazotja igy meg van valositva a
    # __len__, __getitem__, __iter__
    def __init__(self, s = None):
        if isinstance(s, str):
            self.append(s)
        elif isinstance(s, Jegyzettomb):
            self += s
        else:
            raise TypeError('a jegyzetet csak karaktersorozattal vagy letezo \
jegyzettombbel lehet letrehozni')
 
    # mivel a lista + operatora sorozatot var parameternek
    # azt felul kell definialni
    def __add__(self, j):
        if isinstance(j, Jegyzettomb):
            super(self, Jegyzettomb).__add__(self, j)
            #list.__add__(self, j)
        else:
            if isinstance(j, Jegyzet):
                self.append(j)
                return self
 
    # generator keszitese
    def create_gen(self):
        for i in self:
            yield i
 
    # kereses
    def find(self, s):
        index_lista = []
        for i in enumerate(self):
            if i[1].find(s) >= 0:
                index_lista.append(i)
        return index_lista
 
 
j1 = Jegyzet('vegyel legot')
j2 = Jegyzet('vegyel kubut')
j3 = Jegyzet('vegyel viragot')
 
jt1 = Jegyzettomb("vidd le a szemetet")
jt2 = Jegyzettomb(str(j1))
 
jt2 + j2 + j3
 
print '----------------------------------'
 
for i in jt2.create_gen():
    print i
 
print '----------------------------------'
jt1 += jt2
 
for i in jt1:
    print i
 
print '----------------------------------'
 
# ettol meghal a progi ha csak igy benthagyjuk
#jt3 = Jegyzettomb(5)
 
try:
    #jt4 = Jegyzettomb(5)
    j4 = Jegyzet()
except MyNoneError:
    print "Haha egy jegyzet letrehozasa sikertelen!"
except TypeError:
    print "Hat itt ez biztos hogy jegyzettomb hiba!"
finally:
    print "__END OF ERROR TEST__"
 
print '----------------------------------'
 
v = 'vegyel'
print '--- Kereses a "{0:s}" szora: ---'.format(v) 
for i in jt1.find('vegyel'):
    print '{0:d}:\t{1:s}'.format(i[0], i[1])
 
print '----------------------------------'
Személyes eszközök