# En versjon av koden uten kommentarer ligger under! # Og et annet løsningsforslag uten bruk av .readline() og .readlines() ligger nederst! def les_oppmote(filnavn): # Åpner filen fil = open(filnavn) # Bruker .readline() for å kun lese første linje i filen, .strip() for å fjerne \n, og .split() for å splitte opp linja # 'grupper' settes altså til å være en liste grupper = fil.readline().split(";") # Bruker .readlines() for å lese inn de resterende linjene (oppmøtet til gruppene for hver uke) uker = fil.readlines() # Lukker filen fil.close() # Finner oppmøte uke 11 ved å slå opp på indeks 10 (11. element) og splitter for å få en liste med antall oppmøtte på de forskjellige gruppene oppmote_uke11 = uker[10].split(";") # Oppretter en tom ordbok som skal holde på gruppene og hvor mange som møtte opp i uke 11 oppmote_uke11_ordbok = {} # Itererer over indeksene i listen med grupper for i in range(len(grupper)): # Legger til element i ordboken der gruppenummer er nøkkelverdi og antall oppmøtte er innholdsverdi oppmote_uke11_ordbok[grupper[i]] = int(oppmote_uke11[i]) # Husk å typekonvertere til int! # Oppretter en tom liste som skal holde på gruppene som har 20 eller fler oppmøtte grupper20 = [] # For-løkke som itererer gjennom gruppene i ordboka, sjekker om verdien er 20 eller høyere og legger isåfall til i lista for gruppe in oppmote_uke11_ordbok: if oppmote_uke11_ordbok[gruppe] >= 20: grupper20.append(gruppe) # Returnerer lista med grupper return grupper20 # Lagrer returverdien av funksjonskallet i en variabel og printer deretter ut en beskrivende utskriftssetning med variabelen grupper = les_oppmote("oppmøte_in1000.txt") print(f"Gruppene som har 20 eller flere oppmøtte i uke 11 er: {grupper}") """""" # Koden over, bare uten kommentarer:) def les_oppmote(filnavn): fil = open(filnavn) grupper = fil.readline().split(";") uker = fil.readlines() fil.close() oppmote_uke11 = uker[10].split(";") oppmote_uke11_ordbok = {} for i in range(len(grupper)): oppmote_uke11_ordbok[grupper[i]] = int(oppmote_uke11[i]) grupper20 = [] for gruppe in oppmote_uke11_ordbok: if oppmote_uke11_ordbok[gruppe] >= 20: grupper20.append(gruppe) return grupper20 grupper = les_oppmote("oppmøte_in1000.txt") print(f"Gruppene som har 20 eller flere oppmøtte i uke 11 er: {grupper}") """""" # Alternativ løsning uten å bruke.readline() og .readlines()! def les_oppmote(filnavn): fil = open(filnavn) teller = 0 grupper = [] antall = [] liste_bra_grupper = [] for linje in fil: if teller== 0: grupper = linje.strip().split(";") if teller == 3: antall = linje.strip().split(";") teller+=1 for i in range(len(antall)): if int(antall[i]) >= 20: liste_bra_grupper.append(grupper[i]) return(liste_bra_grupper) les_oppmote("oppmøte_in1000.txt")