Tekst og tall i Python

ProgrammeringPython
Python for nybegynnere

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.

1

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.

Tekst str Ord, setninger og tegn. Tekst må stå i anførselstegn.
Heltall int Tall uten desimaler, for eksempel 4, 13 eller 100.
Desimaltall float Tall med desimaler. I Python bruker vi punktum, ikke komma.
Python
navn = "Amina"
alder = 13
hoyde = 1.62

Her er navn tekst, alder et heltall og hoyde et desimaltall.

2

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.

Python
print("Hei!")
print("Jeg lærer Python")
Skjermen viser
Hei!
Jeg lærer Python
!

Skriver du print(Hei) uten anførselstegn, prøver Python å finne en variabel som heter Hei.

3

Tall kan brukes i regnestykker

Tall trenger ikke anførselstegn. Når vi skriver tall uten anførselstegn, kan Python regne med dem.

Python
print(5 + 3)
print(10 - 4)
print(6 * 2)
print(12 / 3)
Skjermen viser
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.

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

Python
print(2 + 3)
Skjermen viser
5

Tekst

Python
print("2" + "3")
Skjermen viser
23

Når vi bruker + mellom tall, regner Python. Når vi bruker + mellom tekst, setter Python teksten sammen.

5

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.

Python
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.

Skjermen kan vise
Hvor gammel er du? 13
Neste år er du 131
6

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: "))
Python
alder = int(input("Hvor gammel er du? "))
print("Neste år er du", alder + 1)
Skjermen kan vise
Hvor gammel er du? 13
Neste år er du 14
7

Desimaltall bruker punktum

I norsk matematikk skriver vi ofte desimaltall med komma. I Python må vi bruke punktum.

Python
pris = 19.50
antall = 3
sum = pris * antall

print("Du skal betale", sum, "kr")
Skjermen viser
Du skal betale 58.5 kr
!

Skriv 19.50, ikke 19,50, når du lager desimaltall i Python.

8

Skrive tekst og tall sammen

Den enkleste måten å skrive tekst og tall sammen på er å bruke komma i print().

Python
navn = "Amina"
poeng = 18

print(navn, "fikk", poeng, "poeng")
Skjermen viser
Amina fikk 18 poeng

Komma gjør at Python setter inn mellomrom automatisk. Det gjør koden lettere å lese.

9

Eksempel: enkel prisregning

Her kombinerer vi tekst, heltall og desimaltall i samme program.

Python
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")
Skjermen kan vise
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.

10

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.

Oppgaver

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
0 Før du starter

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?

1Tekst må stå i anførselstegn.
2Tall uten anførselstegn kan brukes i regnestykker.
3Svar fra input() må gjøres om før regning.
1 Nivåoversikt

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.

tekst anførselstegn print

Nivå 2: Heltall

Du skal gjøre svar fra brukeren om til heltall og regne med dem.

input int regning

Nivå 3: Desimaltall

Du skal bruke desimaltall og passe på punktum i Python.

float punktum pris
1 Nivå 1

Tekst som tekst

Her skal verdiene bare være tekst. Programmet skal ikke regne med dem.

1

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.

Husk: Klokkeslettet kan være tekst, for eksempel "18:30", fordi du ikke skal regne med det.
Løsningsforslag nivå 1 Prøv selv først
film = "Super Mario Bros"
sal = "Sal 3"
klokkeslett = "18:30"

print("----- Kinobillett -----")
print("Film:", film)
print("Sal:", sal)
print("Tid:", klokkeslett)
2 Nivå 2

Heltall fra brukeren

Her må programmet gjøre tekst fra input() om til heltall før det kan regne.

1

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.
Tips: 1 time er 60 minutter.
Løsningsforslag nivå 2 Dette er bare én mulig løsning
timer = int(input("Hvor mange timer brukte du? "))
minutter = timer * 60

print(timer, "timer er", minutter, "minutter")
3 Nivå 3

Desimaltall fra brukeren

Her skal programmet regne med priser. Da kan brukeren trenge desimaltall, og i Python må desimaltall skrives med punktum.

1

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.
Husk: Bruk punktum i desimaltall, for eksempel 249.50.
Løsningsforslag nivå 3 Les koden linje for linje
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")
Ekstra utfordring

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.
Løsningsforslag Prøv selv før du ser her
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.

Oppdag mer fra Fagrommet

Abonner nå for å fortsette å lese og få tilgang til hele arkivet.

Fortsett å lese