Lister
Innledning
Vi har fire tall: 10, 12, 13 og 15. Disse kan for eksempel være -verdier til en funksjon. I et pythonprogram kan vi lagre disse tallene i hver sin variabel og kalle variablene x1, x2, x3 og x4.
Spørsmål – koding
Hva må vi skrive av programkode for å lagre disse -verdiene i hver sin variabel og skrive dem ut?
Svar
Vi må skrive
x1 = 10
x2 = 12
x3 = 13
x4 = 15
print(x1, x2, x3, x4)
Dersom vi bruker f-streng på siste linje, blir den
print(f"{x1} {x2} {x3} {x4}")
Lister
I stedet for å lagre tallene i hver sin variabel, kan vi putte tallene inn i ei liste som vi kaller x. Da skriver vi
x = [10, 12, 13, 15]
x blir en listevariabel som inneholder 4 element: de 4 tallene 10, 12, 13 og 15. Det er viktig at det blir brukt hakeparenteser [ ] rundt innholdet av lista. For å skrive ut verdien av listevariabelen, skriver vi
print(x)
som vi ville ha gjort dersom vi for eksempel skulle skrive ut innholdet i en heltallsvariabel. Kjører vi de to kodelinjene over, vil vi få utskriften "[10, 12, 13, 15]", altså det samme som vi skrev at listevariabelen x skulle være.
Indeksering av lister
Tallene i lista over har et plassnummer, eller en indeks, som begynner på 0. Det betyr at tallet 10 har indeksen 0, tallet 12 har indeksen 1, og tallet 15 har indeksen 3. Dersom vi vil skrive ut det andre tallet, 12, skriver vi
print(x[1])
siden tallet 12 har indeks 1.
Oppgave – koding
Skriv koden som legger sammen de to første tallene i tabellen.
Løsning
x[0] + x[1]
Dersom vi vil lage ei ny liste y med de tre siste tallene i lista (men ikke det første), skriver vi
y = x[1: 4]
Listevariabelen y får verdien [12, 13, 15]. Merk at vi får tallene fra og med indeks 1 til indeks 4, altså til og med indeks 3, én mindre enn det tallet som står etter kolonet.
Oppgave – koding
Vi har definert lista y slik:
y = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Skriv koden som lager ei ny liste z med det tredje, det fjerde og det femte elementet i lista.
Løsning
z = y[2: 5]
Dette gir at listevariabelen z får verdien ["c", "d", "e"] siden kommandoen plukker ut elementene y[2], y[3] og y[4].
Legge til flere elementer i ei liste
Dersom vi ønsker å legge til tallet 20 i lista x over, bruker vi funksjonen, eller mer presist metoden, append().
x.append(20)
Tallet 20 legger seg bakerst og får indeksen 4 siden lista nå har 5 tall.
Antall elementer i ei liste
Vi kan hente ut antall elementer i ei liste med funksjonen len(). Dersom vi vil skrive ut hvor mange elementer det er i listevariabelen x, skriver vi
print(len(x))
En tekststreng er egentlig ei liste
En tekststreng er rett og slett ei liste der elementene er én og én bokstav (ett og ett tegn). Vi bruker
strengvariabel = "Tekststreng"
som eksempel. Det betyr at vi går ut ifra at vi har definert en variabel strengvariabel og satt den lik "Tekststreng".
Vi kan ikke legge til bokstaver og tegn med metoden append() slik som for lister. Dersom vi ønsker å legge "en" til "Tekststreng" i variabelen over, skriver vi
strengvariabel = strengvariabel + "en"
Innholdet i variabelen blir nå "Tekststrengen".
Spørsmål – koding
a) Hva tror du strengvariabel[0] er det samme som? Hva med strengvariabel[3]?
Svar
strengvariabel[0] er det samme som tegnet "T", som er det første tegnet i tekststrengen "Tekststreng". strengvariabel[3] er det samme som tegnet "s", som er det fjerde tegnet. (Husk at nummereringen i lister begynner på 0.)
b) Hva tror du len(strengvariabel) er det samme som?
Løsning
len(strengvariabel) er det samme som tallet 11 siden det er 11 bokstaver i ordet "Tekststreng".
Husk at mellomrom også er et tegn som må telles med (men i eksempelet over var det ikke mellomrom). Tekststrengen "Hei, du!" har 8 tegn.
Pythonkode å lære seg
Vis innhold
Lister
variabelnavn = [verdi1, verdi2, ... ]
Denne koden lager ei liste med navnet "variabelnavn".
Eksempel på liste med tre elementer:
liste1 = ["hus", "bil", "båt"]
liste1[0] er det første elementet i lista og har verdien "hus".
liste1[2] er det tredje elementet i lista og har verdien "båt".
liste1[-1] er det siste elementet i lista (og det samme som det tredje når lista har tre elementer som her).
liste1[1:3] har verdien ["bil", "båt] siden "[1:3] betyr elementene fra og med indeks 1 opp til (men ikke med) 3, altså det andre og det tredje elementet.
len(liste) har verdien 3, siden det er tre elementer i lista.
liste.append("sykkel") legger til elementet "sykkel" bakerst i lista, som nå får fire elementer.
liste2 = [] lager ei tom liste med navnet "liste2".
En tekststreng er ei liste, men ikke alle metoder for lister fungerer på tekststrenger. For eksempel fungerer ikke metoden append() på tekststrenger, men funksjonen len() gjør det.
Aktiviteter
a) Algoritme
Vi ønsker å finne gjennomsnittet av de fire tallene 10, 12, 13 og 15. Skriv algoritmen til et slikt program. (Husk å få med forklarende tekst.)
Løsningsforslag
- Skriv til skjermen "Dette programmet regner ut gjennomsnittet av de fire tallene 10, 12, 13 og 15.".
- Legg sammen alle tallene, og del summen på antall tal. Sett resultatet lik variabelen gjennomsnitt.
- Skriv til skjermen "Gjennomsnittet av tallene er <gjennomsnitt>.".
b) Koding
Bruk kode i sammenheng med lister til å skrive koden til algoritmen i oppgave a). Legg de fire tallene i ei liste med navnet x.
Løsningsforslag
print("Dette programmet regner ut gjennomsnittet "
"av de fire tallene 10, 12, 13 og 15.")
x = [10, 12, 13, 15]
gjennomsnitt = (x[0] + x[1] +x[2] + x[3]) / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")
c) Algoritme
Måten vi har regnet ut gjennomsnittet på i oppgaven over er tungvint. Tenk om det var 100 tall vi skulle finne gjennomsnittet av!
Summeringen av tallene kan gjøres med en for-løkke. Vi lager en variabel sum og lar for-løkken gå gjennom tallene i lista og legge dem til sum. Skriv om på algoritmen i a) slik at dette blir mulig.
Løsningsforslag
- Skriv til skjermen "Dette programmet regner ut gjennomsnittet av de fire tallene 10, 12, 13 og 15.".
- Sett variabelen sum lik 0.
- Gå gjennom tallene, og legg de til sum.
- Sett variabelen gjennomsnitt lik sum delt på antall tall.
- Skriv til skjermen "Gjennomsnittet av tallene er <gjennomsnitt>.".
d) Koding
Skriv koden til et program som passer til algoritmen over. Bruk for-løkke til summeringen av tallene i lista.
Løsningsforslag
print("Dette programmet regner ut gjennomsnittet "
"av de fire tallene 10, 12, 13 og 15.")
x = [10, 12, 13, 15]
sum = 0
for i in range(0, len(x)):
sum = sum + x[i]
gjennomsnitt = sum / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")
e) Algoritme
Vi ønsker at brukeren av programmet over kan skrive inn fire fritt valgte tall og få regnet ut gjennomsnittet av tallene. Skriv algoritmen til et slikt program.
Løsningsforslag
- Skriv til skjermen "Dette programmet regner ut gjennomsnittet av fire tall.".
Gjør dette fire ganger:
- Skriv til skjermen "Skriv inn tall nummer ...".
- Ta imot tallet fra brukeren, og legg det inn i listevariabelen x.
- (Resten av algoritmen er slik som i oppgave c).)
f) Koding
Skriv koden til et program som passer til algoritmen over. Unngå å bruke variabler som ikke er lister.
Tips til kodingen
Her kan du få bruk for å definere ei tom liste. Det gjør du ved å skrive
liste = []
som gir deg en tom listevariabel med navnet liste. Bruk metoden append() for å fylle lista med tallene fra brukeren. For å legge til tallet 20 i lista, skriver vi
liste.append(20)
Løsningsforslag
print("Dette programmet regner ut gjennomsnittet av 4 tall.")
x = []
sum = 0
for nr in range(1, 5):
tall = float(input(f"Skriv inn tal nr. {nr}: "))
x.append(tall)
for i in range(0, len(x)):
sum = sum + x[i]
gjennomsnitt = sum / len(x)
print(f"Gjennomsnittet er {gjennomsnitt}.")
Merk at vi bruker f-streng i input()-setningen på samme måte som i en print()-setning.