Created
May 28, 2020 18:37
-
-
Save brabemi/fa95da34ffd660ca083a3fa26a873228 to your computer and use it in GitHub Desktop.
PyLadies - Praha - jaro 2020 - Lekce 12 - Dědičnost
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Vozidlo: | |
def __init__(self, spz): | |
self.spz = spz.upper() | |
self.stav_nadrze = 0 | |
self.najete_km = 0 | |
def dojezd(self): | |
''' | |
Vrátí dojezd vozidla v km. | |
''' | |
return self.stav_nadrze / self.spotreba * 100 | |
def kontrolka_paliva(self): | |
return self.stav_nadrze < 0.1 * self.velikost_nadrze | |
def natankuj(self, litru): | |
volne_misto_v_nadrzi = self.velikost_nadrze - self.stav_nadrze | |
if litru > volne_misto_v_nadrzi: | |
self.stav_nadrze = self.velikost_nadrze | |
return volne_misto_v_nadrzi | |
else: | |
self.stav_nadrze += litru | |
return litru | |
def ujed(self, km): | |
maximalni_dojezd = self.dojezd() | |
if km > maximalni_dojezd: | |
self.najete_km += maximalni_dojezd | |
self.stav_nadrze = 0 | |
return maximalni_dojezd | |
self.najete_km += km | |
self.stav_nadrze -= (km / 100) * self.spotreba | |
return km | |
def __str__(self): | |
return f'{self.__class__.__name__} {self.spz}' | |
class Auto(Vozidlo): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 10 | |
self.velikost_nadrze = 50 | |
class SportovniAuto(Auto): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 15 | |
class SUVAuto(Auto): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 15 | |
self.velikost_nadrze = 70 | |
class Motorka(Vozidlo): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 5 | |
self.velikost_nadrze = 15 | |
class Autobus(Vozidlo): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 25 | |
self.velikost_nadrze = 400 | |
class Tank(Vozidlo): | |
def __init__(self, spz): | |
super().__init__(spz) | |
self.spotreba = 100 | |
self.velikost_nadrze = 600 | |
class ObecneVozidlo(Vozidlo): | |
def __init__(self, spz, spotreba, velikost_nadrze): | |
super().__init__(spz) | |
self.spotreba = spotreba | |
self.velikost_nadrze = velikost_nadrze | |
auto = Auto('1a10000') | |
print(auto.spz, auto.velikost_nadrze, auto.spotreba) # 1A10000 50 10 | |
moto = Motorka('2a10000') | |
print(moto.spz, moto.velikost_nadrze, moto.spotreba) # 2A10000 15 5 | |
bus = Autobus('3a10000') | |
print(bus.spz, bus.velikost_nadrze, bus.spotreba) # 3A10000 400 25 | |
tank = Tank('4a10T34') | |
sportak = SportovniAuto('5a1350Z') | |
terenak = SUVAuto('6a1J33P') | |
motokara = ObecneVozidlo('7a1KARA', 12, 25) | |
vozovy_park = [auto, moto, bus, tank, sportak, terenak, motokara] | |
for vozidlo in vozovy_park: | |
print(vozidlo.spz, vozidlo.stav_nadrze, vozidlo.kontrolka_paliva()) | |
auto2 = Auto('1B10000') | |
print(auto2.natankuj(20), auto2.stav_nadrze) # 20 20 | |
print(auto2.natankuj(20), auto2.stav_nadrze) # 20 40 | |
print(auto2.natankuj(25), auto2.stav_nadrze) # 10 50 | |
print(auto2.natankuj(25), auto2.stav_nadrze) # 0 50 | |
auto3 = Auto('1C10000') | |
print(auto3.natankuj(20), auto3.stav_nadrze, auto3.najete_km) # 20 20 0 | |
print(auto3.ujed(100), auto3.stav_nadrze, auto3.najete_km) # 100 10 100 | |
print(auto3.natankuj(20), auto3.stav_nadrze, auto3.najete_km) # 20 30 100 | |
print(auto3.ujed(1000), auto3.stav_nadrze, auto3.najete_km) # 300 0 400 | |
for km in range(2000): | |
for vozidlo in vozovy_park: | |
if vozidlo.kontrolka_paliva(): | |
vozidlo.natankuj(vozidlo.velikost_nadrze) | |
print( | |
f'Zastavuji a tankuji {vozidlo}, najeto {vozidlo.najete_km}') | |
vozidlo.ujed(1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment