Python fehler suchen?

class Mitarbeiter:
    def __init__(self, name, gehalt, einstiegsjahr):
        self.name = name
        self.gehalt = gehalt
        self.einstiegsjahr = einstiegsjahr


def __str__(self):
    return 'Mitarbeiter {} {}' .format(self.name + ': Gehalt ', self.gehalt + ', beschäftigt seit ' + str(self.einstiegsjahr))
def gehalt_erhoehen(self, prozent):
    prozent = prozent/1
    if isinstance(prozent, (float)):
        alt = self.gehalt
        neu = self.gehalt * (100 + prozent)/100
        self.gehalt = neu
        print('Gehalt von', alt, 'auf', neu, ' um ', prozent, 'Prozent geändert')
        return True
    else:
        print('Gehalt wurde nicht geändert')
        return False

class Angestellter(Mitarbeiter): '''Ein Angestellter kann maximal Hierarchiestufe 5 bekleiden''' def __init__(self, name, gehalt, einstiegsjahr, hierarchie = 1): Mitarbeiter.__init__(self, name, gehalt, einstiegsjahr) self.hierarchiestufe = hierarchie if self.hierarchiestufe > 5: self.hierarchiestufe = 5

def __str__(self):
    return print(Mitarbeiter), ' Hierarchiestufe ', str(self.hierarchiestufe)

def befoerderung(self):
    '''Bei einer Beförderung wird die Hierarchiestufe um 1 erhöht (max 5) und das Gehalt
    um 200 erhöht'''
    if self.hierarchiestufe <= 5:
        self.gehalt += 200
        self.hierarchiestufe += 1
        print(self.name, 'wurde befördert')
    else:
        print(self.name, 'war schon auf Stufe 5')

class Manager(Mitarbeiter): '''Ein Manager hat eine Sekretärin/einen Sekretär''' def __init__(self, name, gehalt, einstiegsjahr, sekretaerin): Mitarbeiter.__init__(self, name, gehalt, einstiegsjahr) if isinstance(sekretaerin, Mitarbeiter): self.sekretaerin = sekretaerin

def __str__(self):
    m = Mitarbeiter.__str__(self) + ' Sekretärin: '
    if self.sekretaerin is not None:
        m = m + self.sekretaerin.name
    else:
        m = m + 'unbesetzt'
    return m

def gehalt_erhoehen(self, prozent):
    '''Ein Manager bekommt bei einer Gehaltserhöhung einen zusätzlichen Bonus
    von 1/2 Prozent für jedes Dienstjahr'''
    p = (2018 - self.einstiegsjahr)* 0.5
    Mitarbeiter.gehalt_erhoehen(self, p)

def test(): huber = Mitarbeiter('Hannes Huber', '4300', 2010) maier = Angestellter('Martin Maier', '2100', 2017, 5) gruen = 'Gundula Grün' pichler = Manager('Peter Pichler', '4300', 2013, gruen) moser = Angestellter('Martha Moser', '2000', 2007, 2)

meine_mitarbeiter = {'Huber': huber,
                     'Maier': maier,
                     'Grün': gruen,
                     'Pichler': pichler,
                     'Moser': moser}

print('Alle Mitarbeiter ausgeben:')
for ma in meine_mitarbeiter:
    print(meine_mitarbeiter[ma])
print('\nAllgemeine Gehaltserhöhung um 2%:')
for ma in meine_mitarbeiter:
    meine_mitarbeiter[ma].gehalt_erhoehen(2)
    print(meine_mitarbeiter[ma])
print('\nAllgemeine Beförderung:')
for ma in meine_mitarbeiter:
    meine_mitarbeiter[ma].befoerderung()
    print(meine_mitarbeiter[ma])

test()

Ich finde den Fehler nicht. er gibt immer noch Fehler aus

Python, hilferuf
2 Antworten
python fehler finden?
class Mitarbeiter:
    def __init__(self, name, gehalt, einstiegsjahr):
        self.name = name
        self.gehalt = gehalt
        self.einstiegsjahr = einstiegsjahr

    def __str__(self):
        return 'Mitarbeiter {} {}' .format(self.name + ': Gehalt ', self.gehalt + ', beschäftigt seit ' + str(self.einstiegsjahr))
    def gehalt_erhoehen(self, prozent):
        prozent = prozent/1
        if isinstance(prozent, (float)):
            alt = self.gehalt
            neu = self.gehalt * (100 + prozent)/100
            self.gehalt = neu
            print('Gehalt von', alt, 'auf', neu, ' um ', prozent, 'Prozent geändert')
            return True
        else:
            print('Gehalt wurde nicht geändert')
            return False


class Angestellter(Mitarbeiter):
    '''Ein Angestellter kann maximal Hierarchiestufe 5 bekleiden'''
    def __init__(self, name, gehalt, einstiegsjahr, hierarchie = 1):
        Mitarbeiter.__init__(self, name, gehalt, einstiegsjahr)
        self.hierarchiestufe = hierarchie
        if self.hierarchiestufe > 5:
            self.hierarchiestufe = 5

    def __str__(self):
        return print(Mitarbeiter), ' Hierarchiestufe ', str(self.hierarchiestufe)

    def befoerderung(self):
        '''Bei einer Beförderung wird die Hierarchiestufe um 1 erhöht (max 5) und das Gehalt
        um 200 erhöht'''
        if self.hierarchiestufe <= 5:
            self.gehalt += 200
            self.hierarchiestufe += 1
            print(self.name, 'wurde befördert')
        else:
            print(self.name, 'war schon auf Stufe 5')


class Manager(Mitarbeiter):
    '''Ein Manager hat eine Sekretärin/einen Sekretär'''
    def __init__(self, name, gehalt, einstiegsjahr, sekretaerin):
        Mitarbeiter.__init__(self, name, gehalt, einstiegsjahr)
        if isinstance(sekretaerin, Mitarbeiter):
            self.sekretaerin = sekretaerin

    def __str__(self):
        m = Mitarbeiter.__str__(self) + ' Sekretärin: '
        if self.sekretaerin is not None:
            m = m + self.sekretaerin.name
        else:
            m = m + 'unbesetzt'
        return m

    def gehalt_erhoehen(self, prozent):
        '''Ein Manager bekommt bei einer Gehaltserhöhung einen zusätzlichen Bonus
        von 1/2 Prozent für jedes Dienstjahr'''
        p = (2018 - self.einstiegsjahr)* 0.5
        Mitarbeiter.gehalt_erhoehen(self, p)


def test():
    huber = Mitarbeiter('Hannes Huber', '4300', 2010)
    maier = Angestellter('Martin Maier', '2100', 2017, 5)
    gruen =  'Gundula Grün'
    pichler = Manager('Peter Pichler', '4300', 2013, gruen)
    moser = Angestellter('Martha Moser', '2000', 2007, 2)

    meine_mitarbeiter = {'Huber': huber,
                         'Maier': maier,
                         'Grün': gruen,
                         'Pichler': pichler,
                         'Moser': moser}

    print('Alle Mitarbeiter ausgeben:')
    for ma in meine_mitarbeiter:
        print(meine_mitarbeiter[ma])
    print('\nAllgemeine Gehaltserhöhung um 2%:')
    for ma in meine_mitarbeiter:
        meine_mitarbeiter[ma].gehalt_erhoehen(2)
        print(meine_mitarbeiter[ma])
    print('\nAllgemeine Beförderung:')
    for ma in meine_mitarbeiter:
        meine_mitarbeiter[ma].befoerderung()
        print(meine_mitarbeiter[ma])


test()

Fehler, programmieren, Python, hilferuf
1 Antwort