class Znesek:
    '''Objekti hranijo določen nenegativen znesek v €
       Znesek zaokrožimo na cente!
    '''
    def __init__(self, koliko = 0.0):
        if koliko < 0:
            raise ValueError('Znesek je negativen')
        self._evri = int(koliko)
        kolikoc = (koliko - self._evri)*100
        kolikoc = int(kolikoc + 0.5)
        self._centi = kolikoc % 100
        self._evri += kolikoc // 100
        
        
    def __str__(self):
        return '{0}€ {1:2d}c'.format(self._evri, self._centi)
    
    # "GET" metode - povpraševanje po podatkih
    def kaksen_znesek(self):
        return (self._evri, self._centi)
    
    def evri(self):
        return self._evri
        
    def centi(self):
        return self._centi
    
    def znesek_v_centih(self):
        return self._evri * 100 + self._centi
    
    # "SET" metode - spreminjanje podatkov
    
    def dodaj_cente(self, koliko_centov):
        '''Znesku dodamo koliko_centov centov'''
        if koliko_centov < 0:
            raise ValueError('Ne moremo dodati neg. st. centov')
        novi_centi = self._centi + koliko_centov
        self._centi = novi_centi % 100
        self._evri += novi_centi // 100
        
    def spremeni(self, koliko):
        '''Znesek nastavimo na novo vrednost koliko'''
        if koliko < 0:
            raise ValueError('Znesek je negativen')
        self._evri = int(koliko)
        kolikoc = (koliko - self._evri)*100
        self._centi = int(kolikoc + 0.5) % 100
        self._evri += kolikoc // 100
        
    def dodaj_evre(self, koliko):
        '''Znesku dodamo koliko evrov'''
        if koliko < 0:
            raise ValueError('Ne moremo dodati neg. st. evrov')
        self._evri += koliko     

    def dodaj(self, koliko, centi = None):
        if koliko < 0:
           raise ValueError('Ne moremo dodati neg. st.')
        if centi is None:
            # metodo smo poklicali le z enim parametrom
            if isinstance(evri) is not float: # en parameter mora biti obvezno dec. število
                raise ValueError('Napačni podatki')
            evri = int(koliko)
            centi = int((koliko - evri) * 100 + 0.5)
        else:
            if not (0 <= centi <= 99):
               raise ValueError('Napačni podatki')
            if isinstance(evri) is not int: # če sta dva paramtera, morata biti obvezno oba int
                raise ValueError('Napačni podatki')
            evri = koliko
            
        centi += self._centi
        self._centi = centi % 100
        self._evri = self._evri + evri + centi // 100
       
        

    