Turbo kolesar
1. Premik in lokacija
Napišite razred Kolesar. Ta naj ima
- konstruktor (
__init__(self)), ki naredi, kar je potrebno, da bo razred deloval; - metodo
premik(self, smer), ki prejme niz smer, ki je lahko"<",">","^"ali"v"in premakne kolesarja za eno polje levo, desno, gor ali dol in - metodo
lokacija(self), ki vrne trenutne koordinate (x, y) kolesarja.
Kolesar je v začetku na lokaciji (0, 0). Koordinatni sistem je obrnjen tako, da premik gor (^) zmanjša y.
ana = Kolesar()
ana.premik(">")
print(ana.lokacija())
ana.premik("^")
print(ana.lokacija())
izpiše
(1, 0)
(1, 1)
2. Prevozi
Kolesarju dodajte metodo prevozi(pot), ki prejme pot oblike, na primer, 5<3^2^8>2<2v. Pot, torej je sestavljena iz zaporedja števk (enomestnih številk) in znakov, ki kažejo smer. Dobivši niz iz primera mora kolesar petkrat levo, trikrat gor, dvakrat gor, osemkrat desno, dvakrat levo in dvakrat gor.
Nasvet: metoda prevozi naj kliče metodo premik.
ana = Kolesar()
ana.premik(">")
ana.prevozi("7^4<")
ana.premik(">")
print(ana.lokacija())
izpiše (2, -7).
3. Razdalja
Kolesarju dodajte metodo razdalja(), ki vrne prevoženo razdaljo.
ana = Kolesar()
ana.premik("<")
ana.premik("<")
ana.prevozi("2>")
print(ana.razdalja())
izpiše 4 (čeprav je Ana po vsem tem dejansko na (0, 0)).
4. Turbo
Kolesarju dodajte metodi vkljuci_turbo() in izkljuci_turbo(). Ko je "turbo" vključen, so vsi premiki (prek metode premik in prevozi) podvojeni: ko ga premaknemo za eno polje, se premakne za dve. Ker turbo.
Će pokličemo vkljuci_turbo takrat, ko je ta že prižgan, se ne zgodi nič.
ana = Kolesar()
ana.vkljuci_turbo()
ana.premik(">") # po tem je na (2, 0)
ana.premik("v") # po tem je na (2, 2)
ana.premik("v") # po tem je na (2, 4)
ana.izkljuci_turbo()
ana.premik("^") # po tem je na (2, 3)
print(ana.lokacija())
izpiše (2, 3).
Turbo velja tudi za prevozi:
ana = Kolesar()
ana.vkljuci_turbo()
ana.prevozi("1v3>")
print(ana.lokacija())
izpiše (2, 6), saj vsak premik dol in desno šteje dvojno.
5. Varni turbo
Zaradi evropskih predpisov se mora turbo samodejno izključiti po petih premikih. Naredite, da bo tudi vaš razred Kolesar skladen z evropsko zakonodajo.
ana = Kolesar()
ana.vkljuci_turbo() # turbo bo prižgan 5 premikov
ana.premik(">") # po tem je na (2, 0); turbo bo še 4 premike
ana.prevozi("2v") # po tem je na (2, 4); turbo bo še 2(!) premika
ana.prevozi("3v2<") # pot tem je na (0, 9).
# Turbo je veljal samo za prva dva premika dol
# tretji dol in in oba levo sta bila brez turba
Še vedno velja: če pokličemo vkljuci_turbo takrat, ko je ta že prižgan, se ne zgodi nič! Števec se ne resetira na 5 premikov, temveč teče naprej. Če bi v gornjem primeru pred zadnji prevozi dodali ponoven vkljuci_turbo, se ne bi nič spremenilo, turbo bi bilo še vedno vključen samo za naslednja dva premika.
Testi
- 5. januar 2026, 20:14