Seznami

  1. Napiši funkcijo argmax(s), ki prejme seznam in vrne indeks največjega elementa seznama.
Rešitev
def argmax(s):
    max_i = None
    for i, stevilo in enumerate(s):
        if max_i == None or stevilo > s[max_i]:
            max_i = i
    return max_i
  1. Ugani, kaj mora narediti funkcija argmin(s) :) in jo napiši.
Rešitev
def argmin(s):
    min_i = None
    for i, stevilo in enumerate(s):
        if min_i == None or stevilo < s[min_i]:
            min_i = i
    return min_i
  1. Napiši funkcijo span(s), ki prejme seznam števil in vrne razliko med največjim in najmanjšim členom podanega zaporedja.
Rešitev
def span(s):
    return max(s) - min(s)
  1. Napiši funkcijo sami_sodi(s), ki vrne True, če seznam vsebuje sama soda števila in False, če vsebuje tudi kakšno liho. Če je seznam prazen, vrnemo True (saj ne vsebuje nobenega lihega).
Rešitev
def sami_sodi(s):
    for stevilo in s:
        if stevilo % 2 == 1:
            return False
    return True
  1. Napiši funkcijo sodi_lihi(s), ki vrne True, če so elementi na sodih indeksih sodi, na lihih pa lihi.
Rešitev
def sodi_lihi(s):
    for i, stevilo in enumerate(s):
        if stevilo % 2 != i % 2:
            return False
    return True

Dražba

  1. Napiši funkcijo ponudbe(ime_datoteke, predmet), ki prejme ime datoteke (lahko je "zapisnik.txt", lahko pa je tudi kaj drugega) in ime predmeta. Vrniti mora seznam vseh ponujenih cen za ta predmet.
Rešitev
def ponudbe(ime_datoteke, predmet):
    vse_cene = []
    for vrstica in open(ime_datoteke):
        trenutni_predmet, _, cena = vrstica.split(",")
        if trenutni_predmet == predmet:
            vse_cene.append(int(cena))
    return vse_cene
  1. Napiši funkcijo najboljsa_ponudba(ime_datoteke, predmet), ki vrne najvišjo ponujeno ceno za podani predmet.
Rešitev
def najboljsa_ponudba(ime_datoteke, predmet):
    return max(ponudbe(ime_datoteke, predmet))
  1. Napiši funkcijo stevilo_ponudb(ime_datoteke, predmet), ki vrne število ponudb za podani predmet.
Rešitev
def stevilo_ponudb(ime_datoteke, predmet):
    return len(ponudbe(ime_datoteke, predmet))
  1. Napiši funkcijo visanje(ime_datoteke, predmet), ki vrne razliko med najvišjo in najnižjo ponujeno ceno za podani predmet.
Rešitev
def visanje(ime_datoteke, predmet):
    vse_cene = ponudbe(ime_datoteke, predmet)
    return vse_cene[-1] - vse_cene[0]
  1. Napiši funkcijo ponudniki(ime_datoteke), ki vrne slovar, katerega ključi so imena oseb, ki so sodelovale na dražbi, pripadajoče vrednosti pa število ponudb, ki jih je dala ta oseba.
Rešitev
def ponudniki(ime_datoteke):
    osebe_ponudbe = defaultdict(int)
    for vrstica in open(ime_datoteke):
        predmet, oseba, cena = vrstica.split(",")
        osebe_ponudbe[oseba] += 1
    return osebe_ponudbe
Last modified: Wednesday, 6 November 2024, 3:56 PM