Øvelse 3 – Oppgave 1
Oppgave 1
a)
Skriv et program som utfører følgende pseudokode:
- Initier en tom liste Li
- Hent inn et element fra bruker (0-100)
- Legg elementet i listen Li
- Finn lengden på Li
- Hvis det er mindre enn 10 elementer i Li, be om et nytt element
- Når det er 10 elementer i Li skal det ikke bes om flere
- Print Li til konsoll med en beskrivende tekst
- Regn ut gjennomsnittet av de tre høyeste elementene i Li:Sorter den opprinnelige lista Li
- Hent ut de tre siste elementene og legg de i en ny liste Lu
- Fjern disse tre elementene fra lista LiTips: Her kan det være lurt å printe listene for å sjekke at alt er riktig
- Pluss 10 til hvert av de resterende elementene i lista Li
- Sjekk om noen av de nye elementene i Li nå er høyere eller lik noen av elementene du la i liste Lu
- Hvis noen av elementene var høyere, legg dem også til i liste Lu og fjern dem fra LiTips: bruk en nøstet for-loop for å gå gjennom Lu og Li
- Print ut gjennomsnittet av Lu, og det høyeste og laveste tallet i Li
Løsningsforslag
Li = list([]) # Initier en tom liste Li antall = 0 # Initier counter for antall tall while len(Li) <= 9: # Kjør koden under så lenge det er mindre enn eller 9 tall nyttTall = int(input('Skriv et tall (0-100): ')) # Ta inn et tall fra bruker Li.append(nyttTall) # Legg tallet til i lista antall += 1 # Øk counter med 1 print('Du skrev tallene: ', Li) Li.sort() # Sorter lista (stigende) print('Li sortert:', Li) Lu = Li[-3:] # Hent de siste tre tallene i den sorterte lista Li = Li[0:-3] # Hent alle tallene i lista untatt de tre siste print('Li:', Li) print('Lu:', Lu) for num in range(len(Li)): # Gå gjennom Li for å plusse 10 på hvert tall Li[num] += 10 print('Li +10:', Li) for j in Lu: # Ytre loop: gå gjennom Lu for i in Li: #Indre loop: for hvert tall i Lu, gå gjennom alle tallene i Li if i >= j: # Sjekk om tallet i Li er større enn tallet i Lu Lu.append(i) # Legg Li-tallet til Lu hvis det var større Li.remove(i) # Fjern Li-tallet fra Li hvis det var større print('Lu med høyeste fra Li +10:', Lu) print('Li uten tall som var høyere enn Lu: ', Li) gjLu = sum(Lu) / float(len(Lu)) # Finn gjennomsnittet av Lu maxLi = max(Li) # Finn maks verdi i Li minLi = min(Li) # Finn min verdi i Li print('Gjennomsnittet av Lu er:', gjLu) print('Det minste tallet i Li er: ', minLi) print('Det høyeste tallet i Li er: ', maxLi)
Oppgave 1
b)
Uten å kjøre koden: forklar med én setning hva koden under gjør gitt at a = [1,2,3,4,5,6,7,8,9,10].
import random a = [1,2,3,4,5,6,7,8,9,10] b =[0]*len(a) for c in range(len(a)): d = random.randint(0,len(a)-1) b[c][/c] = a[d] del a[d] #del fjerner et bestemt element i listen, her a[d]. print(b)
Løsningsforslag:
Koden lager en liste med 0’ere, med lengde lik liste a, og bytter ut neste 0’er med et nytt tilfeldig tall mellom 0 og lengden til a inn i listen for hver runde.
Oppgave 1
c)
Gitt listen myList = [1,2,467,5,442,3,54,578,6,43,32,53,668].
Bruk én linje med kode for å legge elementene 442,3, 54, 578 og 6 fra myList i en ny liste listSlice. Print gjennomsnittet av listSlice. For å regne ut gjennomsnittet skal du bruke biblioteket NumPy. NumPy er et omfattende, praktisk bibliotek for matematiske operasjoner, fra grunnleggende ting som mean til komplekse matriseoperasjoner. Sjekk brukerguide her: https://docs.scipy.org/doc/numpy-1.15.1/user/index.html#user. Konvensjonen for å importere numpy er import numpy as np.
Løsningsforslag:
## c svar import numpy as np myList = [1,2,467,5,442,3,54,578,6,43,32,53,668] # Opprinnelig liste listSlice = myList[4:9] # Hent aktuelle verdier avg = np.mean(listSlice) # Bruker numpy for å regne ut gjsnitt print('Gjennomsnittet av', listSlice, 'er:', avg) # Printer gjennomsnitt