Vad är variabler?

1. Variabler

När man räknar ut något kan man ibland inte göra hela beräkningen på en gång, utan man måste räkna ut en sak i taget. Efter varje steg får man fram ett mellanresultat, som man måste komma ihåg eftersom de behövs för att kunna räkna ut slutresultatet. Använder man papper och penna är detta inget problem, man skriver helt enkelt ner mellanresultaten. Även i ett datorprogram måste beräkningar kunna utföras stegvis och man måste kunna spara mellanresultat för att kunna använda dem senare. Då använder man variabler.

En variabel kan man se som en låda, som man kan lägga värden i. Det går att ha många variabler i ett program och för att kunna hålla reda på dem ger man dem namn.

Variabel Tilldelning

En variabel skapas (=deklareras) genom att man ger den ett värde, så kallad tilldelning. Om man vill skapa en variabel med namnet a och ge den värdet 5 skriver man satsen:

a = 5

Alla instruktioner som utför något kallas satser och normalt är en rad en sats, även om en sats kan skrivas på flera rader.

När datorn utfört detta kan man se det som att lådan med namnet a innehåller värdet 5. Med programmerarspråk säger man att a tilldelas värdet 5. Lådan är egentligen en beskrivning av en plats i datorns minne och variabelnamnet är adressen till platsen i minnet.

Variabler används för att lagra värden som sedan kan användas i programmet.

  • En variabel har ett namn och ett värde.
  • Att ge en variabel ett värde kallas för att tilldela den ett värde.
  • En variabel skapas, dvs deklareras, när den tilldelas ett värde.

1.1 Beskrivande variabelnamn

Att ge variabler beskrivande namn gör det lättare att förstå vad ett program gör. Det går att kalla en variabel för xyz3 eller sausage, men om variabel innehållet t.ex. antal poäng ska variabeln döpas till poäng. Använd alltid namn på variablerna som beskriver värdet som lagras, dvs beskrivande variabelnamn.

Ett bra variabelnamn beskriver datat som den innehåller. Föreställ dig att du flyttade till ett nytt hus och märkte alla dina flyttlådor till namn som saker, xxy3 eller spam. Du skulle hitta aldrig någonting!

Tänk på att variabelns värde kan ändra sig. T.ex. om man döper en variabel till red och ger den värdet 'red' red = 'red'
Eftersom variabelns värde kan ändra sig kanske följande händer: red = 'blue'
Det innebär att vi har en variabel med namnet red som innehåller värdet blue, vilket är förvirrande. Bättre att döpa variabeln till t.ex. color
Ännu bättre om man från variabelns namn också kan förstå vad det är färgen på, t.ex. car_color

OBS! Ge alltid dina variabler beskrivande namn. Det gör koden med läsbar, dvs enklare att läsa och förstå.

1.2 Deklaration & Tilldelning

Variabler används för att komma ihåg saker, t.ex. poäng eller en spelares namn. Man kan se variabler som lådor som man kan förvara värden i och använda i ett program. Man deklarerar en variabel genom att ge den ett namn och tilldela den ett värde med hjälp av ett likamed-tecken.

OBS! Likamed-tecknet används alltså inte som en likhet utan för en tilldelning.

Den variabel som ska tilldelas ett värde måste vara på vänster-sida om likamed-tecknet:

# Korrekt tilldelning
a = 5
# Felaktig tilldelning
5 = a
# Exempel 1.2.1 -  Skriv ut värdet på en variabel
            
poäng = 0
print(poäng)
ger utskriften
            0

Innehållet i lådan poäng skrivs ut eller med andra ord, variabelns värde skrivs ut. Observera att i print-funktionen används inga citattecken runt poäng.

# Exempel 1.2.2 - Skriv ut text och värdet på en variabel

poäng = 0
print('poäng')
print(poäng)
ger utskriften
            poäng
0

Den första print-funktionen skriver ut texten poäng eftersom den är skriven mellan citattecken. Det är alltså ingen variabel utan en text. I den andra print-funktionen används inga citattecken utan den refererar då till variabeln med namnet poäng och värdet på den skrivs då ut.

# Exempel 1.2.3 - Skapa (deklarera) variabler genom tilldelning
            
# Variabeln namn tilldelas värdet 'Eva'
namn = 'Eva'

# Variabeln poäng tilldelas värdet 0
poäng = 0

# Skriv ut värdet på variablerna – inga citattecken
print(namn)
print(poäng)
ger utskriften
            Eva
0

Kom ihåg att kommentarer är till för den som läser koden och att Python inte exekverar kommentarer, dvs raderna är inte körbara utan bara hoppas över. Kommentera alltid din kod. Det gör koden med läsbar, dvs enklare att läsa och förstå.

Värdet i en variabel kan ändras. Det gamla värdet skrivs över vid en ny tilldelning.

# Exempel 1.2.4 - Ändra värdet på en variabel
            
# Variabeln rest tilldelas ett värde
rest = 9 % 2 
print(rest)

# Ändra värdet på variabeln rest
rest = 11 % 6
print(rest)
ger utskriften
            1
5
# Exempel 1.2.5 - Öka värdet i en variabel
            
# Variabeln poäng tilldelas värdet 1
poäng = 1
print(poäng)

# Öka variabelns värde med 3
poäng = poäng + 3
print(poäng)
ger utskriften
            1
4

Tilldelning-satsen poäng = poäng + 3 visar tydligt hur likamed-tecknet är en tilldelning och inte likhet som i matematiken. På vänstersida om likamed-tecknet finns variabeln som ska tilldelas ett värde. På högersida används variabelns värde (innehållet i lådan) poäng, som i det här fallet är 1, och sedan adderas värdet 3 till 1. Variabeln poäng tilldelas värdet 4 (dvs. 1 + 3).

# Exempel 1.2.6 - Öka värdet i en variabel med ett
            
poäng = 2
print(poäng)

# Öka variabelns värde med 1
poäng = poäng + 1
print(poäng)
ger utskriften
            2
3
# Exempel 1.2.7 - Minska värdet i en variabel med ett
            
poäng = 4
print(poäng)

# Minska variabelns värde med 1
poäng = poäng - 1
print(poäng)
ger utskriften
            4
3
# Exempel 1.2.8 - Använd flera variabler
            
a = 3
b = 4
produkt = a * b
print(produkt)
ger utskriften
            12
# Exempel 1.2.9 - Utskrift av flera värden på en rad
            
summa = 16 + 33
print('Betala', summa, 'kr i kassan')
ger utskriften
            Betala 49 kr i kassan
# Exempel 1.2.10 - Användning av flera variabler i en utskrift
            
a = 3
b = 4
summa = a + b
print(summa)
print(a, b)
print(a, b, summa)
ger utskriften
            7
3 4
3 4 7
# Exempel 1.2.11 - En variabel kan tilldelas värdet från en annan variabel
            
x = 5
y = x 
print(x)
ger utskriften
            5

En variabel måste vara deklarerad, dvs skapad, innan den kan användas.

# Exempel 1.2.12 - Syntaxfel
            
a = 7
b = 1
print(a) 
print(a + b)
print(c)
Vid försök att köra koden fås följande felutskrift
            Traceback (most recent call last):    
  File "main.py", line 5, in <module>
    print(c)                          
NameError: name 'c' is not defined

Programmet skriver först ut värdet på variabeln a och sedan summan av variablerna a och b för att sedan försöka skriva ut värdet på en variabel c, men variabeln c är inte deklarerad, dvs inte skapad.

# Exempel 1.2.13 - Syntaxfel där en variabel inte är deklarerad, dvs inte skapad ännu
            
a = 7
b = b + 1
vid försök att köra koden fås följande felutskrift
            Traceback (most recent call last):    
  File "main.py", line 2, in <module>
    b = b + 1                         
NameError: name 'b' is not defined

Variabeln b (på vänster sida om likamed-tecknet) ska tilldelas b:s nuvarande värde (b på höger sida om likamed-tecknet) som ska adderas med ett. Men b har inget nuvarande värde eftersom den inte är deklarerad ännu.

1.3 Utökade tilldelningsoperatorer

När man programmerar ändras ofta en variabels värde, att man vill öka eller minska värdet i variabeln.

Det finns en förkortad syntax, utökade tilldelningsoperatorer, för att minska eller öka en variabels värde.
Istället för att skriva t.ex. a = a + 1 kan man skriva a += 1
Istället för att skriva t.ex. a = a - 2 kan man skriva a -= 2

# Exempel 1.3.1 - Öka värdet i en variabel med ett med den utökade tilldelningsoperatorn +=
            
poäng = 0   # Variabeln poäng tilldelas värdet 0
print(poäng)

poäng = poäng + 1   # Öka variabelns värde med 1
print(poäng)

poäng += 1   # Öka variabelns värde med 1, utökad tilldelningsoperator
print(poäng)
ger utskriften
            0
1
2

Koden visar hur en utökad tilldelningsoperator kan användas för att minska en variabels värde med 2.

# Exempel 1.3.2 - Minska värdet i en variabel med två med tilldelningsoperatorn -=
            
poäng = 10   # Variabeln poäng tilldelas värdet 10
print(poäng)

poäng = poäng - 2   # Minska variabelns värde med 2
print(poäng)

poäng -= 2   # Minska variabelns värde med 2 – förkortad form av tilldelning
print(poäng)
ger utskriften
            10
8
6
# Exempel 1.3.3 - Öka värde i en variabel med tilldelningsoperatorn +=
            
poäng = 0   # Variabeln poäng tilldelas värdet 0
ökning = 5

# Öka variabelns värde
poäng += ökning       # Förkortad variant av poäng = poäng + ökning
print(poäng)
ger utskriften
            5

Alla aritmetiska (matematiska) operatorer har en utökad tilldelnings-operator.

Utökade tilldelningsoperatorer
Operator Exempel Motsvarighet
 += a += 1a = a + 1
 -= a -= 1a = a - 1
 *= a *= 2a = a * 2
 /= a /= 2a = a / 2
 %= a %= 2a = a % 2
 //= a //= 2a = a // 2

1.4 Variabelnamn

Ge variabler alltid tydliga förklarande namn, så att det lätt kan utläsas vad variabeln innehåller och kan användas till.
Ett namn får bara innehålla bokstäver, nummer och understrykningstecknet, men namnet får inte börja på en siffra. Det går att använda stora och små bokstäver. Variabler ska enligt praxis alltid ha liten begynnelsebokstav.

Ofta används stora bokstäver för att dela upp variabelnamn som består av flera ord, t.ex. maxVärde, vilket kallas att variabelnamnen är av typen camel case. Eller så kan variabelnamn som består av flera ord skilja orden åt med ett understreck, tex. max_värde, vilket kallas snake case. Välj ett av sätten i din program och var konsekvent, dvs döp alla dina variabler på det valda sättet.
Stora och små bokstäver betraktas som olika, vilket betyder att minVärde och minvärde är två olika variabler.

Regler - Att namnge variabler

  • Alla bokstäver, siffror och understreck (_) kan användas.
  • Namnet får inte börja på en siffra.
  • Mellanslag är inte tillåtna.
  • Stor och liten bokstav gör skillnad.
  • Det går inte att använda ord som ingår i språket Python (s.k. nyckelord), t.ex. kan man inte döpa en variabel till print.

Praxis - Att namnge variabler

  • Ha en liten första bokstav.
  • Ha beskrivande variabelnamn, dvs att namnet beskriver vilka värden den innehåller. Det gör koden mer lättläst.
  • Om variabelnamnet har flera ord, kan andra ordet börja på stor bokstav (camel case) eller så kan orden särskiljas med ett understreck (snake case).
  • Var konsekvent vid namngivningen. Välj antingen att ha engelska eller svenska variabelnamn och döp alla variabler på det valda språket. Välj antingen camel case eller snake case och döp alla variabelnamn på det valda sättet.
# Exempel på beskrivande variabelnamn
            
antal_hjul = 4  # snake case
antalHjul = 4   # camel case
telefon_nr = '0701234567'
telefonNr = '0701234567'

Det finns alltså flera olika stilar för att namnge variabler. De flesta använder snake case i Python. Det innebär att variabler bör namnges med små bokstäver, med ord åtskilda av understreck.
Det är viktigt att vara konsekvent, dvs välja en stil och hålla sig till den.

1.4.1 Film om variabler (12:26)

Starta film om aritmetiska operatorer

1.5 Förstå variabler

Innan en variabel kan användas måste den skapas, deklareras. Det gör man genom att ge den ett beskrivande namn och tilldela den ett värde, t.ex. poäng = 3

Variabler beskriver en plats (i datorns minne) att lagra data (information). Det beskrivs ibland som en låda med ett namn där man kan lagra värden. Variabelnamnet används av programmet för att hitta och komma åt värdena.

Det går att tilldela ett värde till en variabel och senare tilldela ett annat värde till samma variabel. Det går alltså att skriva över en variabels värde, som därför kan variera (ha olika värden) när programmet körs.
poäng = 3
poäng = 5

Det går också att kopiera värdet på en variabel till en ny variabel, t.ex. antal_hundar = antal_katter

Du kan inte att lära dig att programmera genom att läsa en bok eller titta på videos. Du måste öva på att skriva kod själv och ju mer du övar desto bättre blir du.
  1. Vad blir utskriften?
    a = 7
    b = 8
    print(a + b)
  2. Vad blir utskriften?
    a = 12
    b = 6
    c = 2 * a – 3 * b
    print(c)
  3. Vad blir utskriften
    a = 1
    b = 2
    a = b
    print(a)
    print(b)
  4. Vad blir utskriften?
    a = 1
    b = a
    a = 2
    print(a)
    print(b)
  5. Ett program beräknar summan av två tal, 7 och 9.
    print('Summan av', 7, 'och', 9, 'är', 7 * 9)
    Skriv om programmet, så att termerna 7 och 9 är variabler.
  6. Det här programmet beräknar produkten av två tal.
    a = 25
    b = 60
    print('Produkten av', a, 'och', b, 'är', a * b)
    Ändra programmet så att det i stället beräknar produkten av 30 och 97
    Ändra programmet så att det i stället beräknar kvoten av 30 och 97
  7. Hur kommer utskriften från nedanstående program att visas?
    print('Om du kör med hastigheten 30 km/h i 2,5 timmar, så hinner du')
    print(30 * 1.5)
    print('km.')
    Skriv programmet så att utskriften hamnar på en rad. Använd en print-funktion.
  8. Programmet ska skriva ut antalet poäng Lena har fått
    namn = 'Lena'
    poäng = 44
    print("Ditt namn är" , Namn, "och du har", Poäng, "poäng.")
    Men programmet har en bugg, kan du vad som är fel?
  9. Med formeln s=v·t kan sträckan (s) beräknas om man har hastigheten (v) och tiden (t).
    Skriv ett program som beräknar sträckan om man kör 120 km/h i 90 minuter.
  10. Vilken notation, camel case eller snake case, bör man använda och varför?
  11. Vilka fördelar och nackdelar finns det med att ha svenska eller engelska variabelnamn?

Variabel: Har ett namn och används för att lagra värden.

Tilldelning: En variabel ges ett värde.

Deklarera: Skapa en variabel med en tilldelning.

Sats: En instruktion som utför något och är normalt en rad med kod.

Data: Information, uppgifter eller värden.

Kommentar: Skrivs i koden, men körs inte. Gör det lättare att förstå koden.

Utökad tilldelningsoperator: Förkortad syntax för att beräkna ett nytt värde till en variabel.

Camel case: Variabelnamn som består av flera ord, börjar med liten begynnelsebokstav och övriga ord börjar med stor bokstav, t.ex. maxVärde.

Snake case: Variabelnamn som består av flera ord, där alla ord börjar med liten begynnelsebokstav och ett understreck mellan orden, t.ex. max_värde.

       logout    

Ingen inlämningsuppgift