Variabler, datatyper og regning

Et program lagrer verdier i VARIABLER. En variabel er en boks med et navn: linjen pris = 120 legger tallet 120 i boksen pris. Tegnet = betyr her «legg verdien på høyre side i boksen på venstre side», og ikke «er lik» som i en likning. Derfor er x = x + 1 helt lovlig: les det som «ta verdien i x, legg til 1, og legg svaret tilbake i x». Funksjonen print() skriver en verdi ut på skjermen.

pris = 120
antall = 3
total = pris * antall
print(total)

Programmet utføres linje for linje, ovenfra og ned, og skriver ut 360. Hver verdi har en DATATYPE: heltall (int), desimaltall (float), tekst (str) og sann/usann (bool). Python bruker punktum som desimaltegn, og tekst står alltid i anførselstegn. Til å regne bruker du operatorene i tabellen under.

Tilordning

variabel←verdi\text{variabel} \leftarrow \text{verdi}

Regneoperatorer i Python
OperatorBetyrEksempelResultat
+pluss7 + 29
-minus7 - 25
*gange7 * 214
/divisjon7 / 23.5
**potens7 ** 249
//heltallsdivisjon7 // 23
%rest7 % 21

Tips

  • 7 // 2 gir hvor mange hele ganger 2 går opp i 7, altså 3. 7 % 2 gir resten, altså 1. De to hører sammen: 7=3⋅2+17 = 3 \cdot 2 + 1.
  • / gir alltid et desimaltall, også når det går opp: 8 / 2 gir 4.0, ikke 4. Vil du ha et heltall, bruk //.
  • '7' med anførselstegn er TEKST, ikke tallet 7. Du kan ikke regne med tekst: '7' + 1 gir feilmelding.

Eksempel: Følge et program linje for linje

Hva skriver programmet a = 7; b = 2; print(a // b); print(a % b) ut?

Løsning:
  1. Vi følger programmet linje for linje
  2. a = 7 legger 7 i a
  3. b = 2 legger 2 i b
  4. a // b er 7 // 2, altså hvor mange hele ganger 2 går opp i 7, og det er 3
  5. a % b er resten, og det er 1. Programmet skriver ut 3 og deretter 1.
Hva skjer på hver linje?
LinjeHva skjerUtskrift
a = 77 legges i a–
b = 22 legges i b–
print(a // b)7 // 2 regnes ut3
print(a % b)resten av 7 : 2 regnes ut1
Alternativ forklaring/metode: Sportabell for variabler

Alternativ metode – innenfor pensum, men ikke hovedmetoden her

Standard lærebokmetode

Når et program endrer samme variabel flere ganger, hjelper det å tegne en sportabell med én rad per linje og én kolonne per variabel. For x = 5 etterfulgt av x = x + 2 og x = x * 3 blir verdien først 5, så 7 og til slutt 21. Du ser hele historien til variabelen på ett blikk, og feil dukker opp med en gang.

Sportabell for x
LinjeVerdien av x etterpå
x = 55
x = x + 27
x = x * 321

Oppgaver

Prøv minst én oppgave på hvert nivå.

Lett(3)

L-11Hva skriver programmet x = 4; print(x + 3) ut?

Vis fasit
  1. x = 4 legger 4 i x
  2. x + 3 er 4 + 3
  3. 7
Linje for linje
LinjeResultat
x = 4x er 4
print(x + 3)7

L-12Hvilken datatype har verdien '7' (med anførselstegn) i Python?

Vis fasit
  1. Anførselstegn rundt verdien
  2. den er tekst
  3. tekst (str)

L-13Hva er verdien av x etter at programmet x = 5; x = x + 2 er ferdig?

Vis fasit
  1. x = 5
  2. x = x + 2 betyr «ta 5, legg til 2, legg tilbake»
  3. 7
Sportabell
Linjex
x = 55
x = x + 27
Middels(3)

M-11Hva skriver programmet a = 17; print(a // 5) ut?

Vis fasit
  1. // gir hvor mange hele ganger 5 går opp i 17
  2. 3 · 5 = 15 er det nærmeste
  3. 3
Heltallsdivisjon
UttrykkResultat
3 · 515, mindre enn 17
4 · 520, mer enn 17
17 // 53

M-12Hva skriver programmet a = 17; print(a % 5) ut?

Vis fasit
  1. 17 = 3 · 5 + 2
  2. % gir resten
  3. 2
Resten
StegVerdi
Hele ganger17 // 5 = 3
Brukt opp3 · 5 = 15
Rest17 - 15 = 2

M-13Hva skriver print(2 ** 5) ut?

Vis fasit
  1. ** er potens
  2. 2 · 2 · 2 · 2 · 2
  3. 32
Potensen steg for steg
FaktorerProdukt
22
2 · 24
2 · 2 · 28
2 · 2 · 2 · 216
2 · 2 · 2 · 2 · 232
Vanskelig(3)

V-11Programmet p = 250; r = 20; ny = p - p * r / 100; print(ny) regner ut prisen etter en rabatt. Hva skriver det ut?

Vis fasit
  1. p * r / 100 er 250 * 20 / 100, altså 5000 / 100, som er 50.0
  2. ny er 250 - 50.0 = 200.0
  3. / gir alltid et desimaltall, så svaret er 200.0
Verdiene underveis
UttrykkVerdi
p * r5 000
p * r / 10050.0
p - 50.0200.0

V-12Et program setter n = 9 og kjører linjen n = n * 2 to ganger. Hva er n til slutt?

Vis fasit
  1. Start: n er 9
  2. første n = n * 2 gir 18
  3. andre gir 36
  4. 36
Sportabell
Ettern
n = 99
første n = n * 218
andre n = n * 236

V-13Hvilken av disse linjene er IKKE et gyldig variabelnavn med tilordning i Python?

Vis fasit
  1. Et variabelnavn kan ikke starte med et siffer
  2. 2navn gir feilmelding
  3. 2navn = 5
Variabelnavn
NavnGyldig?
navnja
navn2ja, sifferet står sist
navn_2ja, understrek er lov
2navnnei, kan ikke starte med siffer