6. Zadaci

6.1. Zadaci iz poglavlja "Osnove programiranja" (1. poglavlje)

6.1.1. Zadaci iz poglavlja "Jednostavni tipovi podataka" (1.5. poglavlje)

Zadatak 1. Ispišite jednu rečenicu po izboru.

Zadatak 2. U varijablu broj1 pohranite cjelobrojni tip podatka vrijednosti 15 i ispišite ju.

Zadatak 3. U varijablu broj2 pohranite realni tip podatka vrijednosti 5.05 i ispišite ju.

Zadatak 4. U varijablu broj3 pohranite realni tip podatka vrijednost -7.89 i ispišite ju.

Zadatak 5. U varijablu niz1 pohranite niz znakova 'Nitko ne očekuje španjolsku inkviziciju.' i ispišite ju.

Zadatak 6. U varijablu niz2 pohranite niz znakova '5.05' i ispišite ju.

Zadatak 7. U varijablu niz3 pohranite prazan niz znakova i ispišite ju.

Zadatak 8. Indeksirajte prvi znak varijable niz1.

Zadatak 9. Indeksirajte posljednji znak varijable niz1.

Zadatak 10. Indeksirajte podniz '.05' varijable niz2.

Zadatak 11. U varijablu niz4 pohranite niz znakova 'ime\tprezime\tadresa' i ispišite ju.

Zadatak 12. U varijablu niz5 pohranite niz znakova 'prvi red\ndrugi red\n3. red\n'.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.1.2. Zadaci iz poglavlja "Operatori" (1.7. poglavlje)

Zadatak 13. Provjerite je li varijabla broj2 veća od varijable broj1.

Zadatak 14. Podijelite vrijednost varijable broj1 sa 2 te ispišite novonastalu realnu vrijednost.

Zadatak 15. Izračunajte ostatak dijeljenja vrijednosti varijable broj1 sa 2.

Zadatak 16. Provjerite je li izraz (6+5)%3 jednak izrazu 1+5/3.

Zadatak 17. Provjerite je li izraz 2**3 različit od izraza 116/14.5.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.1.3. Zadaci iz poglavlja "Rad s nizovima znakova" (1.9. poglavlje)

Zadatak 18. Ispišite poruku na ekran 'Rezultat dijenjenja iz 14. zadatka je 7.5, a cijeli dio tog izraza je 7.'. Brojčane vrijednosti ispišite iz objekta odnosno varijable broj1. Za ispis druge vrijednosti trebate funkcijom promijeniti tip podatka.

Zadatak 19. U jednu varijablu pohranite svoju godinu rođenja, a u drugu varijablu prošlu godinu. Ispišite poruku 'Prošle ste godine navršili godina: x'. Na mjestu znaka 'x' trebate izračunati broj godina pomoću varijabli. Na kraju promijenite vrijednost varijable rođenja te ponovite ispis.

Zadatak 20. Izračunajte duljinu varijable niz4 te vrijednost ispišite u obliku poruke.

Zadatak 21. Provjerite sadrži li varijabla niz5 paran broj znakova.

Zadatak 22. Provjerite nalazi li se znak 'g' u varijabli niz1.

Zadatak 23. Provjerite nalazi li se podniz 'jo' u varijabli niz1.

Zadatak 24. Ispišite varijablu niz4 velikim slovima.

Zadatak 25. U varijabli niz1 zamijenite znak 'k'sa znakom 'K'.

Zadatak 26. Iz varijable niz5 uklonite bjeline s početka i kraja niza.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.1.4. Zadaci iz poglavlja "Rad s listama" (1.10. poglavlje)

Zadatak 27. Iz varijable niz1 stvorite listu odvajanjem elemenata razmakom ' '.

Zadatak 28. Pohranite vrijednost iz prethodnog zadatka u varijablu lista. Stvorite novi niz iz varijable lista spajanjem elemenata prelaskom u novi red \n.

Zadatak 29. Iz varijable niz4 stvorite listu odvajanjem elemenata tabulatorom '\t'.

Zadatak 30. U varijablu lista1 pohranite listu ['jedan','dva','tri'].

Zadatak 31. U varijablu lista2 pohranite listu s četiri elementa različitih tipova podataka.

Zadatak 32. U varijablu lista3 pohranite praznu listu.

Zadatak 33. Iz varijable lista1 indeksirajte prvo slovo posljednjeg elementa.

Zadatak 34. U varijablu lista4 spojite varijable lista1 i lista2 te izračunajte duljinu novonastale liste.

Zadatak 35. Iz varijable lista2 promijenite predzadnji element liste.

Zadatak 36. U varijablu lista1 dodajte elemente 4 te 'pet'.

Zadatak 37. U varijablu lista1 dodajte na predzadnje mjesto element 'uljez'.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.1.5. Zadaci iz poglavlja "Kontrola tijeka" (1.11. poglavlje)

Zadatak 38. U varijablu ime pohranite svoje ime. Ispišite poruku na ekran ovisno o tome sadrži li ime paran ili neparan broj znakova (npr. “Ime Maja sadrži paran broj znakova”).

Zadatak 39. Ispišite poruku počinje li ime samoglasnikom ili suglasnikom. Isto učinite s posljednjim slovom imena.

Zadatak 40. Prođite kroz sva slova imena i izračunajte broj samoglasnika.

Zadatak 41. Izračunajte omjer suglasnika i samoglasnika (broj_suglasnika/broj_samoglasnika).

Zadatak 42. Definirajte listu brojčanih vrijednosti od 3 do 6 i izračunajte sumu tih vrijednosti (iteriranjem kroz listu).

Zadatak 43. Izračunajte sumu parnih brojčanih vrijednosti.

Zadatak 44. Izračunajte sumu vrijednosti djeljivih s 3.

Zadatak 45. Definirajte listu nizova znakova. Stvorite novi niz znakova koji sadrži prvi znak svakog elementa liste. Na primjer, iz liste ['dan','mjesec','godina'], niz znakova je 'dmg'.

Zadatak 46. Stvorite novi niz znakova koji sadrži:

1. prvi znak elementa liste ako je duljina elementa parna, odnosno
2. posljednji znak elementa liste ako je duljina elementa neparna. Na primjer, iz liste `['dan','mjesec','godina']`, niz znakova je `'nmg'`.

Zadatak 47. Stvorite novu listu koja sadrži samo elemente originalne liste čija je duljina veća od 3.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.2. Zadaci iz poglavlja "Rad s datotekama" (2. poglavlje)

Zadatak 48. Pročitajte sadržaj datoteke datoteka.txt. Izračunajte duljinu teksta.

Zadatak 49. Izračunajte koliko redova ima datoteka.txt.

Zadatak 50. Izračunajte koliko ima samoglasnika, a koliko suglasnika u datoteci datoteka.txt.

Zadatak 51. Ispišite posljednji znak svakog reda u datoteci datoteka.txt.

Zadatak 52. Zapišite proizvoljan tekst od više redaka bez dijakritičkih znakova u neku datoteku (Python kodom, dakle funkcijom open() itd.) te potom pročitajte taj tekst iz datoteke i izračunajte njegovu duljinu.

Proučite sadržaj datoteke primjer.txt (najbolje pomoću programa Notepad++). predstavlja uzorak rezultata označavanja podataka studenata na kolegiju "Odabrana poglavlja obrade prirodnog jezika". Drugi stupac datoteke predstavlja identifikator korisnika, treći stupac o tome je li točan odgovor unaprijed znan (1 je istina, 0 laž) te četvrti podatak je li taj odgovor točan (1 je ponovno istina, 0 laž). Sljedeće zadatke rješavajte na ovoj datoteci.

Zadatak 53. Izračunajte broj odgovora u uzorku. Broj odgovora jednak je broju redova u datoteci.

Zadatak 54. Izračunajte broj odgovora u uzorku za koje je odgovor unaprijed znan. Iteriranjem kroz datoteku, brojač povećajte za 1 ako treći stupac ima vrijednost 1.

Zadatak 55. Izračunajte broj točnih odgovora za koje je odgovor unaprijed znan. Iteriranjem kroz datoteku, brojač povećajte za 1 ako treći stupac ima vrijednost 1 i ako četvrti stupac ima vrijednost 1.

Zadatak 56. Izračunajte postotak točnih odgovora. Iteriranjem kroz datoteku, izračunajte broj svih odgovora (redovi u datoteci) i broj točnih odgovora (četvrti stupac ima vrijednost 1). Ispišite postotak točnih odgovora.

Zadatak 57. Izračunajte postotak točnih odgovora korisnika s identifikatorom 9 s obzirom na njegove sve odgovore.

Proučite sadržaj datoteka hr.txt i en.txt. Datoteke su kodirane UTF-8 oblikom kodiranja, jedna predstavlja uzorak teksta pisanog hrvatskim, druga uzorak teksta pisanog engleskim jezikom. Sljedeće zadatke radite nad tim podacima.

Zadatak 58. Tekst iz datoteke hr.txt pročitajte i dekodirajte te prvih 1000 znakova zapišite u datoteku hr_iso_1000.txt koristeći ISO-8859-2 kodiranje te u datoteku hr_utf_1000.txt koristeći UTF-8 kodiranje. Izračunajte broj znakova bez dekodiranja u obje nove datoteke te provjerite je li on identičan. Ponovite isto, no ovaj put dekodirajući tekst.

Zadatak 59. Dalje radite nad datotekama hr.txt i en.txt. Izračunajte broj redaka u svakoj od datoteka iteriranjem kroz svaki red.

Zadatak 60. Izračunajte broj znakova u svakoj od datoteka. Pazite da ispravno dekodirate tekst prije izračuna njegove duljine.

Zadatak 61. Izračunajte broj znakova razmaka i prelazaka u novi red te pretpostavite broj riječi u svakom dokumentu. Izračun broja traženih znakova provedite iteriranjem kroz svaki znak.

Zadatak 62. Izračunajte procjenu prosječne duljine riječi u svakom uzorku ((broj_znakova-broj_rijeci)/broj_rijeci).

Zadatak 63. Izračunajte broj pojava svakog samoglasnika u svakom od tekstnih uzoraka. Izvršite cijeli izračun jednom iteracijom po datoteci kroz svaki znak pojedinog niza znakova.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.3. Zadaci iz poglavlja "Regularni izrazi" (3. poglavlje)

Zadatke rješavajte na datotekama hr.txt i en.txt.

Zadatak 64. Regularnim izrazom izračunajte broj pojava samoglasnika u svakoj datoteci.

Zadatak 65. Regularnim izrazom izračunajte broj pojava jednog ili više samoglasnika u svakoj datoteci.

Zadatak 66. Regularnim izrazom izračunajte broj pojava znamenki u svakoj datoteci.

Zadatak 67. Regularnim izrazom izračunajte broj pojava jedne ili više znamenki u svakoj datoteci.

Zadatak 68. Regularnim izrazom izračunajte broj riječi u svakoj od datoteka, sve znakove prethodno pretvorite u mala slova.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.4. Zadaci iz poglavlja "Rječnici" (4. poglavlje)

Zadatke rješavajte na datotekama hr.txt i en.txt.

Zadatak 69. Stvorite prazni rječnik, pridružite mu više parova (ključ, vrijednost) različitih tipova podataka. Ispišite sve ključeve te potom sve vrijednosti iz stvorenog rječnika.

Zadatak 70. Izračunajte broj pojava svakog samoglasnika u datoteci hr.txt te u datoteci en.txt.

Zadatak 71. Izračunajte dvije frekvencijske distribucije znakova, jednu za datoteku hr.txt, drugu za datoteku en.txt.

Zadatak 72. Ispišite na ekran dvadeset najfrekventnijih znakova iz svakog od rječnika iz prethodnog zadatka s pripadajućim frekvencijama. Usporedite distribucije.

Zadatak 73. Ispišite sve znakove iz hrvatske distribucije koji su među 20 najčešćih, a nisu među 20 najčešćih engleskih. Inicijaliziraj listu 20 najčešćih znakova u hrvatskom jeziku. Iteriranjem kroz frekvencijsku distribuciju hrvatskih znakova, u listu dodajte prvih 20 znakova iz sortirane frekvencijske distribucije. Isto napravite i za 20 najčešćih znakova u engleskom jeziku. Zatim, iteriranjem kroz listu 20 najčešćih znakova u hrvatskom jeziku, provjerite nalazi li se u listi 20 najčešćih znakova u engleskom jeziku. Ako se ne nalazi, ispišite znak. Isto učinite i iteriranjem kroz listu 20 najčešćih znakova u engleskom jeziku.

Zadatak 74. Izračunajte frekvencijsku distribuciju riječi u svakoj od datoteka koristeći regularne izraze i rječnike.

Zadatak 75. Ispišite 20 najčešćih riječi u svakoj od datoteka. O kakvim se riječima radi?

Zadatak 76. U svakoj od datoteka izračunajte tzv. omjer broja različnica (različitih riječi u tekstu) i pojavnica (riječi u tekstu). Broj različnica možete dobiti računanjem duljine rječnika izračunatog u prethodnom zadatku. U kojem je jeziku taj omjer veći? Zašto?

Rješenja zadataka možete naći ovdje: Zadaci - rješenja

6.5. Zadaci iz poglavlja "Funkcije" (5. poglavlje)

Funkcije rješavajte u zasebnoj datoteci funkcije.py, a ostale zadatke u tekstnoj datoteci. Kod koji nije dio funkcija pišite u glavnom programu (unutar selekcije if __name__=='__main__':).

Zadatak 77. Napišite funkciju uvecaj_za_jedan() koja kao argument prima brojčanu vrijednost te vraća tu vrijednost uvećanu za 1. Provjerite funkciju u glavnom programu.

Zadatak 78. Napišite funkciju je_li_duljina_parna() koja kao argument prima iterabilni objekt (niz znakova, listu, rječnik) te vraća logičku vrijednost je li duljina parna ili ne. Provjerite funkciju u glavnom programu nad nizom znakova, listom i rječnikom.

Zadatak 79. Napišite funkciju broj_samoglasnika() koja kao argument prima Unicode niz znakova te vraća broj samoglasnika u nizu znakova. Provjerite funkciju u glavnom programu.

Zadatak 80. Napišite funkciju frekvencijska_distribucija() koja kao argument prima sekvencu te vraća rječnik koji predstavlja frekvencijsku distribuciju događaja iz sekvence.

Zadatak 81. Napišite funkciju sortiraj_distribuciju() koja kao argument prima rječnik te vraća listu parova tog rječnika sortiranu prema drugoj vrijednosti unazadno.

Zadatak 82. Napišite funkciju opojavnici() koja kao argument prima Unicode niz znakova, a vraća listu pojavncia. Isprobajte funkciju u glavnom programu.

Zadatak 83. U glavnom programu uključite modul funkcije. Pomoću funkcije frekvencijska_distribucija() izračunajte frekvencijsku distribuciju znakova pretvorenih u mala slova iz datoteka hr.txt i en.txt. Ispišite sortirane distribucije te uočite razlike u frekvenciji znakova svakog jezika.

Zadatak 84. Izračunajte frekvencijsku distribuciju pojavnica pretvorenih u mala slova iz datoteka hr.txt i en.txt. Ispišite prvih 50 zapisa sortirane distribucije. O kakvim se riječima radi?

Zadatak 85. Izračunajte na temelju svake sortirane distribucije pojavnica iz prošlog zadatka koliki postotak pojavnica u tekstu tvori 20% najčešćih razčičnica. Izračunajte koliko riječi čini 20% različnica te broj pretvorite u cijeli broj. To će biti broj puta koliko će se vršiti iteracija. Iteriranjem kroz sortiranu frekvencijsku distribuciju pojavnica (za već utvrđeni broj puta), zbrojite vrijednosti. Za rezultat, dobiveni broj podijelite sa sveukupnim brojem pojavnica.

Rješenja zadataka možete naći ovdje: Zadaci - rješenja