Lister

Lister er elementer atskilt med komma mellom hakeparenteser, for eksempel [1, 2, 3] og ['Maria', 'Siri', 7]. Vi bruker lister først og fremst til å lagre objekter underveis i programmet.

Å lage en liste

Du oppretter en tom liste ved å tilordne verdien [] til en variabel, for eksempel liste=[] eller xverdier=[]. Her er variabelnavnene «liste» og «xverdier».

Når vi skal legge til elementer i en liste, tar vi i bruk kommandoen «append». Vi bruker listevariabelen som forstavelse, atskilt med et punktum. I koden nedenfor oppretter vi en tom liste i linje 1. I de tre neste linjene legger vi inn tallene 5 og 2 pluss bokstaven «a». I linje 5 skriver vi lista til skjerm.

liste = []
liste.append(5)# legger tallet 5 inn i lista
liste.append(2)# legger tallet 2 inn i lista
liste.append('a')# legger bokstaven a inn i lista
print(liste)
Alle kommandoer vi bruker på lister, skal angis med listevariabelen som forstavelse. I tillegg til liste.append kan vi bruke liste.extend, liste.sort og liste.reverse.

Når vi kjører programmet, får vi dette resultatet:

[5, 2, 'a']

Vi kan la en for-løkke løpe gjennom listene. Nedenfor viser vi et program som skriver ut hvert element i en liste:

liste = ['a', 'b', 'c', 'd']
for bokstav in liste:
print(bokstav)

Resultatet blir

a
b
c
d

Vi tar også med kontrollordet len, som gir oss lengden på lista, altså hvor mange elementer den inneholder. Her ser du hvordan vi bruker len:

liste=[6,2,5,3,5,6,6]# en liste med sju elementer
print(len(liste))

Resultatet her blir:

7

Det er fordi lista inneholder sju elementer.

Plukke ut elementer fra en liste

Vi plukker ut elementer fra en liste ved hjelp av hakeparenteser. Kommandoen liste[0] plukker ut første element, liste[1] gir andre element, liste[2] gir tredje element, osv. Kommandoen liste[-1] gir det siste elementet.

Når vi skal plukke ut en lengre del av lista, bruker vi intervallnotasjon med kolon, for eksempel liste[2:4]. Vi teller fra 0, så dette betyr tredje og fjerde element, men ikke det femte.

Vi viser noen eksempler på hvordan vi plukker ut elementer fra en liste. Vi tar utgangspunkt i lista definert som liste = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']:

Kommando Resultat Forklaring
liste[0] 'a' Første element er nr. 0
liste[0:3] ['a', 'b', 'c'] Tar ikke med nr. 3 (fjerde)
liste[:3] ['a', 'b', 'c'] Tar med element på plass nr. 0, 1 og 2
liste[-1] 'h' Siste element er nr. \(-1\)
liste[3:6] ['d', 'e', 'f'] Fra og med nr. 3 til nr. 6
liste[3:-1] ['d', 'e', 'f', 'g'] Fra nr. 3, tar ikke med siste element
liste[3:] ['d', 'e', 'f', 'g', 'h'] Fra nr. 3, tar ikke med siste element

Sett opp en liste som består av tallene \(0–9\). Skriv lista til skjerm.

Opprett en tom liste. Velg tre navn som du legger i lista. Skriv lista til skjerm.

Opprett en tom liste. Legg til noen bokstaver i lista. Skriv ut hvor mange bokstaver det er i lista.

Sett opp en liste med ti ulike elementer. Plukk ut det tredje, fjerde og femte elementet. Lagre elementene i hver sin variabel og skriv dem til skjerm.

Skriv et program som lager en tom liste, ber brukeren om et heltall og så lar en while-løkke legge til 1-tall i lista, helt til lengden av lista er lik tallet brukeren la inn.

Skriv et program som definerer funksjonen \(f(x)=x^2+3x-1\). Programmet skal be brukeren om en og en \(x\)-verdi og legge dem inn i en liste. Når brukeren avslutter, skal programmet regne ut de tilhørende funksjonsverdiene og legge dem inn i en egen liste. Til slutt skal de to listene skrives til skjerm.

Feilsøking og hjelp

Alle som skriver programmer, opplever ofte feil i programmene de skriver. Det er derfor nyttig å venne seg til å lese feilmeldinger. I feilmeldingen får du beskjed om hvilken linje feilen er på, en beskrivelse av feilen og hvilken feiltype det gjelder. Det gjør det lettere å finne igjen feilen i programmet og rette den opp. Med litt trening gir feilmeldingene god hjelp i programmeringsarbeidet.

De vanligste feilene er nevnt nedenfor.

  1. SyntaxError: Du har ikke overholdt rettskrivingsreglene. Har du glemt kolon? Har du noen ekstra tegn? Har du brukt parenteser feil? Er det feil ved innrykk? Ofte finnes feilen på linja over den som feilmeldingen sier den er på.
  2. IndexError: Vanligvis betyr dette at du prøver å plukke ut et element fra en liste, og så har du gjort en tellefeil i starten eller slutten av lista. Kontroller nøye hvor mange elementer det er i lista, og hvilke elementer du skal plukke ut. Prøver du å plukke ut det 14. elementet i en liste med 13 elementer?
  3. NameError: Feil som ofte gjelder variabler. Kanskje du har stavet variabelen feil? Eller glemt å opprette variabelen før du bruker den?
  4. TypeError: Du bruker feil datatype. Har du glemt å konvertere input med int eller float? Bruker du et desimaltall som argument i range?

Når du feilsøker, kan det være til god hjelp å se hvilken verdi variablene dine har underveis når programmet kjører. Det får du til ved å legge inn «print»-kommandoer på utvalgte steder. I noen programmeringsmiljøer kan du i tillegg få se en oversikt over variablenes verdi. Spyder har for eksempel vinduet «Variable Explorer».

Er du litt usikker på hva koden din egentlig gjør, kan du teste deler av den i konsollen.

Hvis du ikke finner feilen, kommer du ofte langt med å google «python» + feilmeldingen.

Du finner mye god dokumentasjon av Python på nettet. Et fint sted å starte å se etter hjelp er The Python Tutorial, https://docs.python.org/3/tutorial/. Hvis det gjelder plotting, kan du lese https://matplotlib.org, som er sidene til «matplotlib». Gjelder det NumPy, kan du gå til https://www.numpy.org/.

Kommentarer

Kommentartegnet i Python er «#». All tekst etter dette tegnet fram til neste linjeskift blir ignorert. Vi kommenterer koden for at den skal bli lettere å lese for andre, og for at vi selv skal huske hva vi tenkte da vi skrev koden.


# Ber brukeren om et tall
n = int(input('Skriv inn et tall: '))

# Minste naturlige tall er 1
tall = 1

# Skriver ut forklaring
print(f'Alle naturlige tall mindre enn {n} er ', end=' ')

# Løkke som skriver ut tallene
while tall < n:
    print(tall, end=' ') # Øker tall med 1
    tall += 1