Preskoči na glavno vsebino
Učilnica FRI 25/26
  • Domov
  • Koledar
  • Več
Slovenščina ‎(sl)‎
English ‎(en)‎ Slovenščina ‎(sl)‎ Македонски ‎(mk)‎ Русский ‎(ru)‎ 한국어 ‎(ko)‎
Trenutno uporabljate gostujoči dostop
Prijavite se
Učilnica FRI 25/26
Domov Koledar
Razširi vse Skrči vse
  1. Nadzorna plošča
  2. pef
  3. Oblikovanje nizov in delo z datotekami
  4. Programabilni sesalci

Programabilni sesalci

Zahteve zaključka
Rok za oddajo: torek, 21. april 2026, 09.40

Najnovejši hit je programabilni sesalec (model PS132). Vanj lahko vstavimo SD kartico z datoteko, ki je lahko videti, na primer, tako:

>10
^5
V2
v1
E
<3
>5
V0
>8
E
V2
E
E
<1
  • >10 pomeni, da se sesalec premakne za 10 polj desno ... in tako naprej.
  • Poleg znaka v sesalec sprejme tudi V (veliko črko), ki (najbrž?) pomeni premik navzdol, čisto tako kot v.
  • Znak E pomeni, da se sesalec ustavi. Če sesalec ne naleti na E, pač izvede datoteko do konca.

V funkcijah, ki jih boste pisali, berite datoteke z zanko. Ne poskušajte jih prebrati v seznam (npr. list(open("pot.txt"))), saj je lahko datoteka tudi zeloooooo (točneje: neskončno) dolga.

Pri reševanju naloge vam utegneta priti prav dve metodi nizov: split() in strip().

Še en koristen namig: kaj izpiše program

f = open("planeti.txt")
for vrstica in f:
    print(vrstica)
    f.readline()

Poskusite. Pri reševanju boste potrebovali nekaj podobnega, samo ... malo več.

  1. Napiši funkcijo izvedi(ime_datoteke), ki prejme ime datoteke in vrne končni koordinati sesalca.

  2. Izkazalo se je, da smo spregledali nekaj v dokumentaciji: znak V ne pomeni pomika navzdol temveč preskok določenega števila vrstic datoteke. Tako V2 pomeni, da preskočimo naslednji dve vrstici. Če imamo program

    >5
    V2
    <1  
    E
    >4
    

    bo sesalec preskočil dve vrstici, namreč <1 in E, torej naredi tole:

    >5  gre desno za 5, na (5, 0)
    V2  preskoči naslednji dve vrstici, torej <1 in E
    <1  to vrstico ignorira
    E   tudi to ignorira
    >4  gre desno za 4, na (9, 0)
    

    Poleg tega se je izkazalo, da sesalec podpira komentarje: v vsaki vrstici lahko ukazu sledi presledek in nato poljubno besedilo, ki ga sesalec ignorora. Gornji zapis je torej veljaven program.

    Tule je še ena zanimivost: program

    >5
    V20
    <2
    

    bo deloval, saj sesalec preskoči naslednjih 20 vrstic, čeprav jih v datoteki ni toliko. Sesalec torej konča pot na (5, 0).

    Napišite funkcijo izvedi2(ime_datoteke), ki izvaja datoteke v tem formatu, torej:

    • Vnnn pomeni, da program preskoči naslednjih nnn vrstic (kjer je nnn poljubno število).
    • Ukazom lahko sledijo komentarji, ki se začnejo s presledkom in jih sesalec ignorira.
  3. Če se vam zdi, da je to preskakovanje nesmiselno, prav tako pa je nesmiselno, da se sesalec ustavi ob nekem E, namesto da bi tu preprosto končali datoteko, imate prav.

    Zato napišite funkcijo ocisti(vhodna_datoteka, izhodna_datoteka), ki prejme ime vhodne datoteke in v izhodnno datoteko zapiše samo vrstice (vključno z morebitnimi komentarji), ki jih sesalec dejansko izvede. Vrstice, ki jih sesalec preskoči, ne zapiše, prav tako na piše vrstic, ki sledijo po tem, ko se sesalec že ustavi.

    Če je vhodna datoteka

    >5
    V2  Preskoči naslednji dve vrstici
    V2
    E
    <3  Gre levo
    E   Konča
    >100
    

    potem bo izhodna datoteka vsebovala samo

    >5
    <3  Gre levo
    

Testi

  • testi.py testi.py
    14. april 2026, 20:21
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo
Stran poganja Moodle
Obvestilo o avtorskih pravicah