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
| Operator | Betyr | Eksempel | Resultat |
|---|---|---|---|
+ | pluss | 7 + 2 | 9 |
- | minus | 7 - 2 | 5 |
* | gange | 7 * 2 | 14 |
/ | divisjon | 7 / 2 | 3.5 |
** | potens | 7 ** 2 | 49 |
// | heltallsdivisjon | 7 // 2 | 3 |
% | rest | 7 % 2 | 1 |
Tips
7 // 2gir hvor mange hele ganger 2 går opp i 7, altså 3.7 % 2gir resten, altså 1. De to hører sammen: ./gir alltid et desimaltall, også når det går opp:8 / 2gir4.0, ikke4. Vil du ha et heltall, bruk//.'7'med anførselstegn er TEKST, ikke tallet 7. Du kan ikke regne med tekst:'7' + 1gir feilmelding.
Eksempel: Følge et program linje for linje
Hva skriver programmet a = 7; b = 2; print(a // b); print(a % b) ut?
- Vi følger programmet linje for linje
a = 7legger 7 iab = 2legger 2 iba // ber 7 // 2, altså hvor mange hele ganger 2 går opp i 7, og det er 3a % ber resten, og det er 1. Programmet skriver ut 3 og deretter 1.
| Linje | Hva skjer | Utskrift |
|---|---|---|
a = 7 | 7 legges i a | – |
b = 2 | 2 legges i b | – |
print(a // b) | 7 // 2 regnes ut | 3 |
print(a % b) | resten av 7 : 2 regnes ut | 1 |
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.
| Linje | Verdien av x etterpå |
|---|---|
x = 5 | 5 |
x = x + 2 | 7 |
x = x * 3 | 21 |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-11Hva skriver programmet x = 4; print(x + 3) ut?
Vis fasit
x = 4legger 4 ixx + 3er 4 + 3- 7
| Linje | Resultat |
|---|---|
x = 4 | x er 4 |
print(x + 3) | 7 |
L-12Hvilken datatype har verdien '7' (med anførselstegn) i Python?
Vis fasit
- Anførselstegn rundt verdien
- den er tekst
- tekst (str)
L-13Hva er verdien av x etter at programmet x = 5; x = x + 2 er ferdig?
Vis fasit
x = 5x = x + 2betyr «ta 5, legg til 2, legg tilbake»- 7
| Linje | x |
|---|---|
x = 5 | 5 |
x = x + 2 | 7 |
Middels(3)
M-11Hva skriver programmet a = 17; print(a // 5) ut?
Vis fasit
//gir hvor mange hele ganger 5 går opp i 17- 3 · 5 = 15 er det nærmeste
- 3
| Uttrykk | Resultat |
|---|---|
| 3 · 5 | 15, mindre enn 17 |
| 4 · 5 | 20, mer enn 17 |
17 // 5 | 3 |
M-12Hva skriver programmet a = 17; print(a % 5) ut?
Vis fasit
- 17 = 3 · 5 + 2
%gir resten- 2
| Steg | Verdi |
|---|---|
| Hele ganger | 17 // 5 = 3 |
| Brukt opp | 3 · 5 = 15 |
| Rest | 17 - 15 = 2 |
M-13Hva skriver print(2 ** 5) ut?
Vis fasit
**er potens- 2 · 2 · 2 · 2 · 2
- 32
| Faktorer | Produkt |
|---|---|
| 2 | 2 |
| 2 · 2 | 4 |
| 2 · 2 · 2 | 8 |
| 2 · 2 · 2 · 2 | 16 |
| 2 · 2 · 2 · 2 · 2 | 32 |
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
p * r / 100er250 * 20 / 100, altså5000 / 100, som er50.0nyer 250 -50.0=200.0/gir alltid et desimaltall, så svaret er200.0
| Uttrykk | Verdi |
|---|---|
p * r | 5 000 |
p * r / 100 | 50.0 |
p - 50.0 | 200.0 |
V-12Et program setter n = 9 og kjører linjen n = n * 2 to ganger. Hva er n til slutt?
Vis fasit
- Start:
ner 9 - første
n = n * 2gir 18 - andre gir 36
- 36
| Etter | n |
|---|---|
n = 9 | 9 |
første n = n * 2 | 18 |
andre n = n * 2 | 36 |
V-13Hvilken av disse linjene er IKKE et gyldig variabelnavn med tilordning i Python?
Vis fasit
- Et variabelnavn kan ikke starte med et siffer
2navngir feilmelding2navn = 5
| Navn | Gyldig? |
|---|---|
navn | ja |
navn2 | ja, sifferet står sist |
navn_2 | ja, understrek er lov |
2navn | nei, kan ikke starte med siffer |