Løsningsforslag 8

Oppgave 1
def shopping_list_to_dict(shopping_list_as_string):
    shopping_list = {}
    for line in shopping_list_as_string.split("\n"):
        if not line:
            continue
        num, item = line.split()
        shopping_list[item] = int(num)
    return shopping_list
Oppgave 2

#Fra lab 6 oppgave 2 V23
def kmers(dna, k):
    kmers = []
    n = len(dna)
    for i in range(n-k+1):
        kmer = dna[i:i+k]
        kmers.append(kmer)
    
    return kmers

def kmercount(seq,k):
    ret = {}
    k_list = kmers(seq,k)
    for k in k_list:
        ret[k] = k_list.count(k)
    return ret
Oppgave 3
def værvarsel(city,weather_stations):
    r = ""
    temp = weather_stations[city]["Temperatur"]
    nedbør = weather_stations[city]["Nedbør"]
    retning = weather_stations[city]["Vindretning"]
    hastighet = weather_stations[city]["Vindkast"]


    r += f"Ifølge yr vil temperaturen i {city} være rundt {temp} grader i dag.\n"
    r += f"Det vil også være en nedbørsmengde på opptil {nedbør} mm i løpet av ett døgn.\n"
    r += f"Vinden vil komme fra {retning} og kan nå vindkast på opptil {hastighet} m/s.\n"
    return r
Oppgave 4
def key_value_getter(d):
    r = ""
    r += "Dictionary keys:\n"
    for k in d:
        r += f"{k}\n"

    r += "Dictionary values:\n"
    for v in d.values():
        r += f"{v}\n"

    r += "Dictionary keys/values:\n"
    for k,v in d.items():
        r += f"{k} {v}\n"
    
    return r
Oppgave 5

def word_comparison(a,b):
    s_1 = set(a)
    s_2 = set(b)
    
    snitt = set.intersection(s_1,s_2)
    u_1 = s_1 - s_2
    u_2 = s_2 - s_1
    
    return {
        "In common": snitt,
        "Unique to first word": u_1,
        "Unique to second word": u_2
    }
Bonus 1 & 2

#Bonus 2
def addToInventory(inv:dict,loot:list):
    for item in loot:
        inv[item] = inv.get(item,0) +1
    return inv

#Bonus 1
def displayInventory(stuff):
    t = 0
    r = ""
    r += "Inventory:\n"
    for k,v in stuff.items():
        t += v
        r += f"{v} {k}\n"
    r += str(t)
    return r


inv = {"gold coin": 42, "rope": 1}
dragonLoot = ["gold coin", "dagger", "gold coin", "gold coin", "ruby"]
inv = addToInventory(inv, dragonLoot)

print(displayInventory(inv))