Vse vaje so na temo zank, pogojev znotraj zank in seznamov. Naloge so zložene po težavnosti. Najmanjši pozitivec in Indeks telesne teže sta preprosti vaji iz seznamov in iz razpakiranja terk. Največji skupni delitelj in najmanjši skupni večkratnik je vaja iz pisanja funkcij in telovadbe v zankah. Skoki, je v bistvu zelo preprosta, le malo jo je potrebno razmisliti. An, ban, pet podgan je spet vaja na temo seznamov, le da zahteva, da znate pametno brisati in skakati po seznamih. Borzni indeksi so precej podobni najmanjšemu pozitivcu. Najdaljše nepadajoče zaporedje ... je pa malo sitna, a koristna vaja iz natančnosti.

Rešitve preskusite na testih, ki so objavljeni na Učilnici (razen za Indeks telesne teže).

Najmanjši pozitivec

Napiši funkcijo min_plus(s), ki prejme seznam števil in vrne najmanjše pozitivno število v njem. Če v seznamu ni nobenega pozitivnega števila, naj funkcija vrne 0.

Indeks telesne teže

V tej nalogi bomo delali s seznami, ki vsebujejo terke s po tremi elementi, ki predstavljajo ime osebe, njeno težo in njeno višino, kot na primer

podatki = [ ["Ana", 55, 165], ["Berta", 60, 153], ]

Napiši funkcijo, ki kot argument prejme takšen seznam ter izpiše imena oseb in njihove indekse telesne teže.

Največji skupni delitelj in najmanjši skupni večkratnik

Napiši funkcijo gcd(a, b), ki prejme dve števili in vrne njun največji skupni delitelj. Pri reševanju smeš poiskati opis Evklidovega algoritma na spletu. Če boš poiskal(a) tudi rešitev naloge, pa se ob tem ne boš naučil(a) ničesar.

Poleg tega napiši funkcijo lcm(a, b), ki poišče najmanjši skupni večkratnik podanih števil. Pri tem naj kliče funkcijo gcd.

Skoki

Napišite funkcijo skoki(s), ki prepotuje podani seznam števil s. Recimo, da dobi kot argument seznam [3, 4, 0, 4, 2, 3]. Funkcija vedno začne na ničtem polju. Ta v našem primeru vsebuje 3, zato skoči na tretje polje. Na tretjem polju je 4, torej skoči na četrto polje. Vsebina četrtega polja je 2, zato skoči na drugo polje. To vsebuje 0: spet smo na začetku, zato končamo.

Funkcija naj kot rezultat vrne število skokov do vrnitve na polje 0; v gornjem primeru je to 4. Poleg tega naj pazi še na dve možnosti:

  • Če se slučajno zgodi, da kako polje, na katerega pride, vsebuje preveliko število, naj se funkcija ustavi in vrne -1. Če so v seznamu prevelike številke, vendar je pot ne pripelje nanje, ni nič narobe.
  • Če se funkcija zacikla – najpreprostejši primer je seznam [1, 1], kjer s prvega polja stalno skače na prvo polje – naj vrne -2.

Predpostaviti smete, da seznam ni prazen in vsebuje samo cela pozitivna števila.

Namig: če se vrnemo na začetno polje, za to potrebujemo največ toliko skokov, kolikor je dolg seznam. Primeri

>>> skoki([3, 4, 0, 4, 2, 3]) 4

>>> skoki([1, 1]) # stalno ponavlja polje 1 -2

>>> skoki([1, 2, 3, 4, 5, 3]) # ponavlja 4, 5, 3, 4, 5, 3, 4, 5, 3 ... -2

>>>skoki([1, 2, 3, 8]) # pride do 8 in "skoci ven" -1

>>>skoki([0]) 1

An, ban, pet podgan

Napiši funkcijo an_ban(imena), ki prejme seznam imen in jih "izšteva" z znano izštevanko (An ban, pet podgan, štiri miši, v uh' me piši, vija, vaja, ven.). Vsakič, ko izloči eno osebo, nadaljuje izštevanje pri naslednji. Funkcija naj vrne ime "zmagovalca"

Borzni indeksi

Imamo seznam, ki vsebuje vrednost borznih indeksov, začenši z dnevom 0. Napiši funkcijo borza, ki vrne dan, na katerega se je vrednost borznega indeksa najbolj povečala. Primer: če so vrednosti indeksa [1823, 1829, 1859, 1850, 1855], mora funkcija vrniti 2, saj so se vrednosti najbolj povečale na drugi dan (iz 1829 na 1859).

Predpostaviti smete, da se je indeks vsaj v enem od dni povečal.

Najdaljše nepadajoče zaporedje

Napišite funkcijo nepadajoce(s), ki vrne dolžino najdaljšega nepadajočega podzaporedja v seznamu števil, ki ga dobi kot argument. V, recimo, seznamu [1,2,3,2,3,4,5] sta dve nepadajoči zaporedji, [1,2,3] in [2,3,4,5], torej je odgovor 4. Seznam [1,2,6,8,10,1,1,1,1,1,1,0] vsebuje nepadajoča zaporedja [1,2,6,8,10], [1,1,1,1,1,1] in [0]. Odgovor je 6. Za seznam [1,4,6,2,3,4,7,1,4,5,8,2,4,1,4,5,5,6,8,7,3,5,5,3,5,7,1,2,2,5,7,9,9,9,1,2] mora funkcija vrniti 8.

Predpostaviti smete, da seznam ni prazen.

Последна промена: вторник, 18 февруари 2020, 13:01