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. pn
  3. Funkcije
  4. Družabno omrežje dražbe

Družabno omrežje dražbe

Zahteve zaključka
Rok za oddajo: sreda, 19. november 2025, 11.00

Naloga vsebuje teste. Naloga je rešena samo, če prestane vse teste. Poglej navodila za poganjanje testov.

Seznami

  1. Napiši funkcijo unikati(s), ki prejme seznam in vrne seznam, ki vsebuje iste elemente kot s, v enakem vrstnem redu, vendar brez ponovitev. Funkcija ne sme spreminjati podanega seznama, temveč mora vrniti novega.

    Klic unikati(["Ana", "Ana", "Berta", "Cilka", "Ana", "Berta", "Berta", "Berta", "Ema", "Dani", "Cilka"]) vrne ["Ana", "Berta", "Cilka", "Ema", "Dani"].

  2. Napiši funkcijo skupnih(s, t), ki prejme dva seznama in vrne število skupnih elementov. Morebitne ponovljene elemente mora ignorirati.

    Klic skupnih(["Ana", "Berta", "Ana", "Ana", "Cilka"], ["Cilka", "Dani", "Ana", "Ana"]) vrne 2, ker imate seznama dva skupna elementa (Ano in Cilko). To, da se Ana ponovi večkrat, ga ne zmede.

  3. Napiši funkcijo vseh(s, t), ki vrne število vseh elementov, ki se pojavijo v s ali t (ali v obeh).

    Klic skupnih(["Ana", "Berta", "Ana", "Ana", "Cilka"], ["Cilka", "Dani", "Ana", "Ana"]) vrne 4, ker se v podanih seznamih pojavljajo 4 različna imena.

Procesiranje seznamov

  1. Napiši funkcijo preberi_datoteko(ime_dat), ki prejme ime datoteke, podobne tem, s kakršnimi smo delali doslej. Razlika je le v tem, da nimamo nujno natančno treh stolpcev - lahko jih je tudi več ali manj. Funkcija mora vrniti seznam seznamov. Vsak element vrnjenega seznama je vrstica, ki vsebuje podatke iz vrstice.

    Če datoteka kolesa.txt vsebuje

    Cube,12,51,212
    Cube,15,76,135
    Canyon,12,77,235
    Scott,35,124,4316
    

    mora klic preberi_datoteko("kolesa.txt") vrniti [['Cube', '12', '51', '212\n'], ['Cube', '15', '76', '135\n'], ['Canyon', '12', '77', '235\n'], ['Scott', '35', '124', '4316\n']].

    (Ne vznemirjaj se zaradi \n v zadnjih elementih.)

    Nasvet: funkcija je zelo preprosta. V seznam trpaj, kar ti vrača split.

  2. Napiši funkcijo filtriran(s, stolpec, vrednost), ki prejme seznam, kakršnega vrača prejšnja funkcija in vrne nov seznam, ki vsebuje samo tiste elemente, ki imajo v podanem "stolpcu" stolpec (se pravi: na podanem indeksu) vrstici podano vrednost.

    Recimo, da imamo seznam

    s = [["Ana", 5, 9, "Berta"],
         ["Cilka", 5, 12, "Berta"],
         ["Ana", 5, 9, "Cilka"],
         ["Berta", 5, 1, "Ana"]]
    

    Klic filtriran(s, 0, "Ana") vrne seznam, ki vsebuje le tiste elemente seznama s, ki imajo v ničtem elementu niz "Ana". Rezultat klica je torej

    [["Ana", 5, 9, "Berta"],
     ["Ana", 5, 9, "Cilka"]]
    

    Klic filtriran(s, 3, "Berta") vrne

    [["Ana", 5, 9, "Berta"],
     ["Cilka", 5, 12, "Berta"]]
    

    Klic filtriran(s, 1, 5) vrne kar celoten seznam, saj imajo na prvem mestu slučajno vsi ravno 5.

  3. Napiši funkcijo izlusci(s, stolpec), ki vrne vse vrednosti, ki se pojavijo v podanem "stolpcu". Vrednosti morajo nastopati v originalnem vrstnem redu.

    Če je s seznam iz prejšnjega primera, potem klic izlusci(s, 0) vrne ["Ana", "Cilka", "Ana", "Berta"]. Klic izlusci(s, 1) vrne [5, 5, 5, 5]. Klic izlusci(s, 3) vrne ["Berta", "Berta", "Cilka", "Ana"].

Dražba

Čestitam, prišli ste do sem, programiranja je zdaj skoraj konec. Če boste pametni, boste poslej samo klicali funkcije, ki ste jih napisali doslej.

  1. Napiši funkcijo predmeti(ime_dat, oseba), ki prejme ime datoteke z zapisnikom dražbe in ime neke osebe. Vrniti mora seznam vseh predmetov, za katere se je zanimala ta oseba.

  2. Napiši funkcijo osebe(ime_dat, predmet), ki prejme ime datoteke z zapisnikom in ime predmeta. Vrniti mora osebe, ki so se zanimale za ta predmet.

  3. Napiši funkcijo podobnost_oseb(ime_dat, oseba1, oseba2). Ta prejme ime datoteke z zapisnikom in imeni dveh oseb. Vrniti mora podobnost oseb. Podobnost oseb je definirana kot število predmetov, za katere sta se zanimali obe osebi, deljenemu s številom predmetov, za katere se je zanimala ena ali druga ali obe. (Glej Jaccardov index).

    Klic podobnost_oseb("zapisnik.txt", "Cilka", "Ema") vrne 0.5. Cilka je hotela ['pozlačen dežnik', 'kip', 'srebrn jedilni servis'], Ema pa ['Meldrumove vaze', 'kip', 'srebrn jedilni servis']. Skupna predmeta sta 2 (kip in servis), vseh predmetov, za katere sta se zanimali (ena ali druga ali obe), pa 4. Funkcija vrne 2 / 4, torej 0.5.

  4. Napiši funkcijo podobnost_predmetov(ime_dat, predmet1, predmet2), ki prejme ime datoteke in imeni dveh predmetov. Vrniti mora podobnost predmetov. Ta je enaka številu oseb, ki so se zanimale za oba predmeta, deljenemu s številom oseb, ki so se zanimale za vsaj enega.

Priporočilni sistem (Dodatna, neobvezna naloga)

Neobvezno, vendar preprosto, sploh, če uporabite funkcijo argmax, ki smo jo napisali na predavanju. Kar skopirajte jo v datoteko s svojim programom.

  1. Napiši funkcijo priporoci_predmet(ime_dat, predmet), ki prejme ime datoteke in ime nekega predmeta. Vrne naj predmet, ki je najbolj podoben temu predmetu. (Seveda je vsak predmet najbolj podoben samemu sebi; vrniti mora naslednji najpodobnejši predmet.)

  2. Napiši funkcio priporoci_prijatelja(ime_dat, oseba), ki prejme ime datoteke in ime osebe ter vrne najbolj podobno osebo.

Testi

Poberite spodnjo datoteko s testi in jo poženite, recimo v PyCharmu. Nato svoje funkcije pišite na vrh te datoteke. Na koncu oddajte celotno datoteko (s testi ali brez, vseeno je.)

  • testi.py testi.py
    14. november 2025, 19:44
Trenutno uporabljate gostujoči dostop (Prijavite se)
Pridobi mobilno aplikacijo
Stran poganja Moodle
Obvestilo o avtorskih pravicah