Oppg-3-1

Ø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