Skip to content

Instantly share code, notes, and snippets.

@brabemi
Created May 28, 2020 18:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brabemi/fa95da34ffd660ca083a3fa26a873228 to your computer and use it in GitHub Desktop.
Save brabemi/fa95da34ffd660ca083a3fa26a873228 to your computer and use it in GitHub Desktop.
PyLadies - Praha - jaro 2020 - Lekce 12 - Dědičnost
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