Commit 1d1804e0 by Patryk Czarnik

Pracownik2

parent 572f29cb
'''
Zaimplementuj klasę Pracownik umożliwiającą rejestrowanie czasu
pracy oraz wypłacanie pensji na podstawie zadanej stawki
godzinowej. Jeżeli pracownik będzie pracował więcej niż 8 godzin
(podczas pojedynczej rejestracji czasu) to kolejne godziny policz
jako nadgodziny (z podwójną stawką godzinową).
Przykład użycia:
>>> p = Pracownik('Jan', 'Nowak', 100.0)
>>> p.praca(6)
>>> p.praca(4)
>>> p.wyplata()
1000.0
>>> p.wyplata()
0.0
>>> p.praca(10)
>>> p.wyplata()
1200.0
'''
class Pracownik:
def __init__(self, imie, nazwisko, stawka):
self.imie = imie
self.nazwisko = nazwisko
self.stawka = stawka
self.kasa = 0
def praca(self, godziny):
if godziny > 8:
self.kasa += 8 * self.stawka
self.kasa += (godziny - 8) * 2 * self.stawka
else:
self.kasa += godziny * self.stawka
def wyplata(self):
try:
return self.kasa
finally:
self.kasa = 0
def test_jedna_praca():
p = Pracownik('Jan', 'Nowak', 100.0)
p.praca(6)
wynik = p.wyplata()
assert wynik == 600
def test_suma_prac():
p = Pracownik('Jan', 'Nowak', 100.0)
p.praca(6)
p.praca(4)
wynik = p.wyplata()
assert wynik == 1000
def test_nadgodziny():
p = Pracownik('Jan', 'Nowak', 100.0)
p.praca(10)
p.praca(5)
wynik = p.wyplata()
assert wynik == 1700
def test_zero():
p = Pracownik('Jan', 'Nowak', 100.0)
p.praca(10)
p.praca(5)
wynik1 = p.wyplata()
# w tym teście nie sprawdzamy wartości pierwszej wypłaty - tym zajmują się inne testy
wynik2 = p.wyplata()
# w tym teście sprawdzamy, czy kolejna wypłata daje zero
assert wynik2 == 0
def main():
p = Pracownik('Jan', 'Nowak', 100.0)
p.praca(6)
p.praca(4)
wynik = p.wyplata()
print(wynik)
wynik = p.wyplata()
print(wynik)
p.praca(10)
wynik = p.wyplata()
print(wynik)
if __name__ == '__main__':
main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment