Lov na zaklad
Priprava
Spodnja procedura je potrebna zato, da bo vaš izdelek možno avtomatsko testirati. Vaš program, testi.py, mora biti namreč v istem direktoriju kot poddirektorij "datoteke", ki vsebuje vse potrebne datoteke za reševanje naloge.
- Datoteko s testi skopirajte v direktorij, v katerem nameravate reševati nalogo (recimo /Users/petra/Documents/Programiranje/dn7-zaklad/, ali kjerkoli že).
- Svojo rešitev pišite v datoteko "testi.py" -- torej nad teste, ki so že v tej datoteki.
- Kot svoj izdelek oddajte samo datoteko "testi.py".
Skrivna sporočila
Prebrati morate pet skrivnih sporočil. Za vsako sporočilo vemo, kje se začne. Prvo, recimo, se začne v direktoriju zelje-testenine/luna-avtobus/blitva-drevo (znotraj poddirektorija datoteke - to morate sami dodati na začetek!), številka vrstice pa je 42 (vrstice bomo šteli od 0, ne od 1!).
V tem direktoriju je nekaj poddirektorijev in ena sama datoteka s končnico .txt (slučajno se imenuje otrok-lopar.txt). Če odpremo to datoteko in preberemo vrstico 42 (ker bomo vrstice šteli od 0, urejevalniki kot je PyCharm, če datoteko odpremo v njem, pa štejejo od 1, to vrstico tam vidimo kot 43. vrstico), najdemo:
N,reka-med/marelica-zvezda/grozdje-grozdje/kraljica-enorog,25
To pomeni, da je prva črka skrivnega sporočila N, naslednje sporočilo pa najdemo v direktoriju reka-med/marelica-zvezda/grozdje-grozdje/kraljica-enorog, zanimala nas bo vrstica 25.
V tem direktoriju poiščemo datoteko s končnico .txt. Imenuje se enorog-teta.txt in v 25. vrstici (26. v urejevalniku) najdemo
A,boj-princesa/trg-sosed/brokoli-rama,79
Drugi znak skrivnega sporočila je torej A, naslednje sporočilo pa najdemo v direktoriju boj-princesa/trg-sosed/brokoli-rama, vrstica 79.
Tako nadaljujemo, dokler ne pridemo do pike.
- Med znaki bomo našli tudi presledke. V tem primeru bo imela vrstica pred (prvo) vejico preseledek. (Torej: ne kličite
strip()!) - V vsakem direktoriju je natanko ena datoteka s končnico .txt. Njeno ime je naključno in nepomembno.
Naloga
Napišite funkcijo beri(direktorij, vrstica), ki prejme začetni direktorij in številko vrstice, ter vrne celotno skrito sporočilo kot niz znakov. Klic beri("datoteke/zelje-testenine/luna-avtobus/blitva-drevo", 42) bi morala vrniti niz "NA PLANINCAH SONČECE SIJE.", če bi bilo to prvo skrivno sporočilo. (Pa ni. :)
Priporočam vam (ni pa obvezno), da si poleg te funkcije napišete pomožno funkcijo, ki kot argument dobi direktorij in vrstico, kot rezultat pa vrne želeno vrstico (edine) tekstne datoteke v podanem direktoriju. Ali pa celo tri podatke iz te vrstice. Ni nujno, vendar bo vaš program na ta način veliko preglednejši.
Ker sem na predavanju stresal neke neslanosti o ljudožercih, moram vsaj za domačo nalogo pokazali malo več dobrega okusa. Skrivno sporočilo je limerik, katerega avtor je pokojni slovenski literarni zgodovinar in prevajalec Tone Pretnar.
Žal moram dodati, da bi možakar, ki ga omenja limerik, že kaki dve leti (pa še dve bo najbrž trajalo) lahko to počel le do Divače.
Test
- 27. november 2025, 19:11