Riešenie 14. cvičenia


  1. Riešenie:

    class Cas:
        def __init__(self, hodiny, minuty):
            self.hodiny = hodiny
            self.minuty = minuty
    
        def vypis(self):
            print(f'čas je {self.hodiny}:{self.minuty:02}')
    

  1. Riešenie:

    class Cas:
        def __init__(self, hodiny, minuty):
            self.hodiny = hodiny
            self.minuty = minuty
    
        def vypis(self):
            print(f'čas je {self.hodiny}:{self.minuty:02}')
    
        def str(self):
            return f'{self.hodiny}:{self.minuty:02}'
    

  1. Riešenie:

    class Cas:
        def __init__(self, hodiny, minuty):
            self.hodiny = hodiny
            self.minuty = minuty
    
        def vypis(self):
            print(f'čas je {self.hodiny}:{self.minuty:02}')
    
        def str(self):
            return f'{self.hodiny}:{self.minuty:02}'
    
        def pridaj(self, hodiny, minuty):
            self.hodiny += hodiny + (self.minuty+minuty) // 60
            self.minuty = (self.minuty+minuty) % 60
    

  1. Riešenie:

    def neskor(cas, hodiny, minuty):
        novy = Cas(cas.hodiny, cas.minuty)
        novy.pridaj(hodiny, minuty)
        return novy
    

    alebo:

    def neskor(cas, hodiny, minuty):
        novy = Cas(hodiny, minuty)
        novy.pridaj(cas.hodiny, cas.minuty)
        return novy
    

  1. Riešenie:

    zoznam = [Cas(8, 10)]
    for i in range(14):
        zoznam.append(neskor(zoznam[-1], 0, 50))
    for c in zoznam:
        print(c.str(), end=' ')
    

    alebo:

    cas = Cas(8, 10)
    zoznam = [cas]
    for i in range(14):
        cas = neskor(cas, 0, 50)
        zoznam.append(cas)
    for c in zoznam:
        print(c.str(), end=' ')
    

  1. Riešenie:

    class Zlomok:
        def __init__(self, citatel, menovatel):
            self.citatel, self.menovatel = citatel, menovatel
    
        def vypis(self):
            print(f'zlomok je {self.citatel}/{self.menovatel}')
    

  1. Riešenie:

    class Zlomok:
        def __init__(self, citatel, menovatel):
            self.citatel, self.menovatel = citatel, menovatel
    
        def vypis(self):
            print(f'zlomok je {self.citatel}/{self.menovatel}')
    
        def str(self):
            return f'{self.citatel}/{self.menovatel}'
    
        def float(self):
            return self.citatel / self.menovatel
    

  1. Riešenie:

    class Body:
        def __init__(self):
            self.body = 0
    
        def pridaj(self):
            self.body += 1
    
        def uber(self):
            self.body -= 1
    
        def kolko(self):
            return self.body
    

  1. Riešenie:

    class Subor:
        def __init__(self, meno_suboru):
            self.meno = meno_suboru
            with open(meno_suboru, 'w'):
                pass
    
        def pripis(self, text):
            with open(self.meno, 'a') as subor:
                print(text, file=subor)
    
        def vypis(self):
            with open(self.meno) as subor:
                for riadok in subor:               # môže byť aj print(subor.read())
                    print(riadok, end='')
    

  1. Riešenie:

    class Zoznam:
        def __init__(self):
            self.zoznam = []
    
        def pridaj(self, prvok):
            if prvok not in self.zoznam:
                self.zoznam.append(prvok)
    
        def vyhod(self, prvok):
            if prvok in self.zoznam:
                self.zoznam.remove(prvok)
    
        def je_v_zozname(self, prvok):
            return prvok in self.zoznam
    
        def vypis(self):
            print('zoznam:', ', '.join(self.zoznam))
    

  1. Riešenie:

    class TelefonnyZoznam:
        def __init__(self):
            self.zoznam = []
    
        def vypis(self):
            for meno, telefon in self.zoznam:
                print(f'{meno}: {telefon}')
    
        def pridaj(self, meno, telefon):
            for i in range(len(self.zoznam)):
                if self.zoznam[i][0] == meno:
                    self.zoznam[i] = meno, telefon
                    return
            self.zoznam.append((meno, telefon))
    

  1. Riešenie:

    import tkinter
    
    class Okno:
        def __init__(self, text):
            self.canvas = tkinter.Canvas(height=100)
            self.canvas.pack()
            self.id = self.canvas.create_text(190, 50, text=text, font='arial=50')
    
    
        def zmen(self, text):
            self.canvas.itemconfig(self.id, text=text)
    
        def farba(self, farba):
            self.canvas.itemconfig(self.id, fill=farba)
    
    okno = Okno('ahoj')
    okno.farba('red')
    okno.zmen('Python')
    okno2 = Okno('hello')
    okno2.farba('green')