Tekst og tall i Python
Python behandler tekst og tall på ulike måter. Derfor må vi vite forskjellen på tekst, heltall og desimaltall når vi lager programmer.
Datatyper: hva slags innhold har vi?
En datatype forteller Python hva slags verdi programmet jobber med. De tre viktigste datatypene i starten er tekst, heltall og desimaltall.
str
Ord, setninger og tegn. Tekst må stå i anførselstegn.
int
Tall uten desimaler, for eksempel 4, 13 eller 100.
float
Tall med desimaler. I Python bruker vi punktum, ikke komma.
navn = "Amina"
alder = 13
hoyde = 1.62
Her er navn tekst, alder et heltall og hoyde et desimaltall.
Tekst må stå i anførselstegn
Når Python skal skrive tekst, må teksten stå mellom anførselstegn. Ellers tror Python at ordet er navnet på en variabel.
print("Hei!")
print("Jeg lærer Python")
Hei! Jeg lærer Python
Skriver du print(Hei) uten anførselstegn, prøver Python å finne en variabel som heter Hei.
Tall kan brukes i regnestykker
Tall trenger ikke anførselstegn. Når vi skriver tall uten anførselstegn, kan Python regne med dem.
print(5 + 3)
print(10 - 4)
print(6 * 2)
print(12 / 3)
8 6 12 4.0
Legg merke til at divisjon ofte gir et desimaltall i Python. Derfor blir svaret 4.0 og ikke bare 4.
Når tall står i anførselstegn
Dette er en vanlig feil: Et tall med anførselstegn er ikke et tall for Python. Det er tekst.
Tall
print(2 + 3)
5
Tekst
print("2" + "3")
23
Når vi bruker + mellom tall, regner Python. Når vi bruker + mellom tekst, setter Python teksten sammen.
input() gir alltid tekst
Når brukeren skriver noe inn i et program med input(), blir svaret lagret som tekst. Det gjelder også hvis brukeren skriver et tall.
alder = input("Hvor gammel er du? ")
print("Neste år er du", alder + "1")
Hvis brukeren skriver 13, blir svaret teksten "13". Da vil alder + "1" bli "131", ikke 14.
Hvor gammel er du? 13 Neste år er du 131
Gjør tekst om til tall
Hvis vi skal regne med noe brukeren skriver inn, må vi gjøre teksten om til tall. Da bruker vi int() eller float().
| Kode | Brukes når | Eksempel |
|---|---|---|
int() |
Du trenger et heltall | antall = int(input("Antall: ")) |
float() |
Du trenger et desimaltall | vekt = float(input("Vekt: ")) |
alder = int(input("Hvor gammel er du? "))
print("Neste år er du", alder + 1)
Hvor gammel er du? 13 Neste år er du 14
Desimaltall bruker punktum
I norsk matematikk skriver vi ofte desimaltall med komma. I Python må vi bruke punktum.
pris = 19.50
antall = 3
sum = pris * antall
print("Du skal betale", sum, "kr")
Du skal betale 58.5 kr
Skriv 19.50, ikke 19,50, når du lager desimaltall i Python.
Skrive tekst og tall sammen
Den enkleste måten å skrive tekst og tall sammen på er å bruke komma i print().
navn = "Amina"
poeng = 18
print(navn, "fikk", poeng, "poeng")
Amina fikk 18 poeng
Komma gjør at Python setter inn mellomrom automatisk. Det gjør koden lettere å lese.
Eksempel: enkel prisregning
Her kombinerer vi tekst, heltall og desimaltall i samme program.
vare = input("Hva kjøper du? ")
antall = int(input("Hvor mange kjøper du? "))
pris = float(input("Hva koster én? "))
total = antall * pris
print("Du kjøper", antall, vare)
print("Total pris er", total, "kr")
Hva kjøper du? boller Hvor mange kjøper du? 4 Hva koster én? 18.5 Du kjøper 4 boller Total pris er 74.0 kr
Her bruker vi input() til tekst, int() til antall og float() til pris.
Vanlige feil
| Feil | Hva skjer? | Riktig tanke |
|---|---|---|
print(Hei) |
Python leter etter en variabel som heter Hei. | Tekst må stå i anførselstegn: print("Hei") |
"4" + "5" |
Python setter tekst sammen og får 45. | Bruk tall uten anførselstegn: 4 + 5 |
input() rett i regning |
Svaret fra brukeren er tekst. | Bruk int() eller float(). |
2,5 |
Python tolker ikke dette som ett desimaltall. | Bruk punktum: 2.5 |
Kort oppsummert
str betyr tekst. Tekst må stå i anførselstegn.
int betyr heltall, og float betyr desimaltall.
input() gir alltid tekst, også når brukeren skriver et tall.
Bruk int() eller float() når du skal regne med svar fra brukeren.
I Python skriver vi desimaltall med punktum, for eksempel 3.5.
Prøv selv
Nå skal du øve på forskjellen mellom tekst og tall. Målet er å velge riktig datatype når programmet skal skrive, regne eller hente svar fra brukeren.
str tekst
int heltall
float desimaltall
Velg riktig datatype
Før du skriver koden, bestem hva programmet skal gjøre med verdien. Skal verdien bare skrives ut som tekst, eller skal den brukes i regning?
Velg nivå
Start på nivå 1. Gå videre når programmet virker og du kan forklare hvorfor du bruker tekst, heltall eller desimaltall.
Nivå 1: Tekst
Du skal bruke tekstverdier og skrive dem ut i en setning.
Nivå 2: Heltall
Du skal gjøre svar fra brukeren om til heltall og regne med dem.
Nivå 3: Desimaltall
Du skal bruke desimaltall og passe på punktum i Python.
Tekst som tekst
Her skal verdiene bare være tekst. Programmet skal ikke regne med dem.
Lag en kinobillett
Lag et program som lagrer navnet på en film, navnet på en kinosal og et klokkeslett i tre variabler. Programmet skal skrive ut en liten kinobillett.
film = "Super Mario Bros"
sal = "Sal 3"
klokkeslett = "18:30"
print("----- Kinobillett -----")
print("Film:", film)
print("Sal:", sal)
print("Tid:", klokkeslett)
Heltall fra brukeren
Her må programmet gjøre tekst fra input() om til heltall før det kan regne.
Hvor mange minutter?
Lag et program som spør brukeren hvor mange timer hun har brukt på en aktivitet. Programmet skal regne om timene til minutter.
- Brukeren skal skrive inn et helt antall timer.
- Programmet skal gjøre svaret om til heltall.
- Programmet skal skrive en setning med svaret i minutter.
timer = int(input("Hvor mange timer brukte du? "))
minutter = timer * 60
print(timer, "timer er", minutter, "minutter")
Desimaltall fra brukeren
Her skal programmet regne med priser. Da kan brukeren trenge desimaltall, og i Python må desimaltall skrives med punktum.
Pris per person
Lag et program som spør hva hele regningen koster og hvor mange personer som skal dele. Programmet skal regne ut hvor mye hver person må betale.
- Totalprisen bør kunne være et desimaltall.
- Antall personer bør være et heltall.
- Programmet skal skrive ut pris per person.
totalpris = float(input("Hva koster regningen til sammen? "))
personer = int(input("Hvor mange personer skal dele? "))
pris_per_person = totalpris / personer
print("Totalprisen er", totalpris, "kr")
print("Dere er", personer, "personer")
print("Hver person må betale", pris_per_person, "kr")
Lag et digitalt profilkort
Lag et program som blander tekst, heltall og desimaltall på en ryddig måte. Programmet skal hente informasjon fra brukeren og skrive ut et lite profilkort.
Krav til programmet
- Spør hva brukeren heter.
- Spør hvilket kallenavn brukeren vil ha i programmet.
- Spør hvor gammel brukeren er.
- Spør hvor høy brukeren er i meter, for eksempel 1.62.
- Spør om et favorittall.
- Skriv ut et ryddig profilkort som bruker både tekst, heltall og desimaltall.
- La programmet også skrive hvor gammel brukeren er neste år, og hva favorittallet blir hvis det dobles.
navn = input("Hva heter du? ")
kallenavn = input("Hvilket kallenavn vil du bruke? ")
alder = int(input("Hvor gammel er du? "))
hoyde = float(input("Hvor høy er du i meter? "))
favorittall = int(input("Hva er favorittallet ditt? "))
alder_neste_ar = alder + 1
dobbelt_favorittall = favorittall * 2
print("----- Profilkort -----")
print("Navn:", navn)
print("Kallenavn:", kallenavn)
print("Alder:", alder, "år")
print("Høyde:", hoyde, "meter")
print("Neste år er du", alder_neste_ar, "år")
print("Favorittallet ditt er", favorittall)
print("Dobbelt så mye er", dobbelt_favorittall)
Når et program regner feil, sjekk først datatypen. input() gir tekst. Bruk int() for heltall og float() for desimaltall.