Typer


Vanlige typer

Enhver verdi har en type (også kalt klasse). Det er mange ulike typer som er innebygget i Python. For å se hvilken type en verdi har, kan vi benytte en funksjon som heter type. Her er en oversikt over de aller viktigste typene, som vi hele tiden støter på i Python:

print('Noen elementære typer i Python:')
print(type('foo'))        # str       (streng/tekst)
print(type(2))            # int       (heltall)
print(type(2.2))          # float     (flyttall/desimaltall)
print(type(True))         # bool      (boolsk verdi; True eller False)
print(type(None))         # NoneType  («ingenting» -verdien har egen type)
print(type([1, 2, 3, 4])) # list      (en liste av andre verdier)
print()

print('Flere viktige typer vi skal lære om senere')
print(type((1, 2, 3, 4))) # tuple
print(type({1, 2, 3, 4})) # set
print(type({1: 2, 3: 4})) # dict
Typen avgjør hva en operasjon betyr
# Asterisk (*) betyr forskjellige ting (f.eks. multiplikasjon el. repetisjon)
print(3 * 2)              # 6
print(3 * 'abc')          # 'abcabcabc'
print(3 * [1, 2, 3])      # [1, 2, 3, 1, 2, 3, 1, 2, 3]

# Plusstegn (+) betyr forskjellige ting (f.eks. addisjon eller konkatenasjon)
print(3 + 2)               # 5
print('3' + '2')           # '32'
print([1, 2, 3] + [4, 5])  # [1, 2, 3, 4, 5]
# Ikke alle operasjoner er definert for alle (kombinasjoner av) typer
print(3 + 'def')          # Krasjer med TypeError
print('abc' * 'def')      # Krasjer med TypeError
Typekonvertering

Vi kan konvertere mellom typer ved å bruke funksjoner med samme navn som typen.

# Konvertering fra streng
s = '42'
i = int(s) # Konverterer fra streng til heltall
f = float(s) # Konverterer fra streng til desimaltall
a = list(s) # Konverterer fra streng til liste

print(s) # 42
print(i) # 42
print(f) # 42.0
print(a) # ['4', '2']
print()

print(type(s)) # <class 'str'>
print(type(i)) # <class 'int'>
print(type(f)) # <class 'float'>
print(type(a)) # <class 'list'>
# Konvertering flyttall -> heltall -> flyttall
x = 4.9
y = int(x) # runder av nedover (mot negativ uendelig)
z = float(y) # konverterer tilbake til flyttall

print(x) # 4.9
print(y) # 4
print(z) # 4.0

print(type(x)) # <class 'float'>
print(type(y)) # <class 'int'>
print(type(z)) # <class 'float'>
Enkle eksempler på bruk av ulike typer

int

x = 5
y = -3
z = x + y
print(z) # 2

float

x = 5.0
y = -3.2
print(x + y) # 1.8

Alle heltall kan brukes som om de var flyttall.

x = 5
y = -3.2
print(x + y) # 1.8
bool
x = True
y = False

print(x and y) # False
print(x or y)  # True
print(not x)   # False

Når man sammenligner ting med hverandre, får vi alltid en boolsk verdi tilbake.

x = 2 < 3
y = 2 > 3
print(x)  # True
print(y)  # False

s = 'abc'
print(s == 'def')  # False
print(s != 'def')  # True

str

s = 'abc'
print(s + 'def') # 'abcdef'
print(s * 3)     # 'abcabcabc'

# Hente ut enkelt-tegn fra strengen
x = s[0]
print(x) # 'a'

y = s[2] + s[1]
print(y) # 'cb'

list

a = ['foo', 42, 3.14]

print(a) # ['foo', 42, 3.14]
print(type(a)) # <class 'list'>

# Hente ut enkelt-element fra listen
x = a[0]
print(x) # foo
print(type(x)) # <class 'str'>

y = a[1] + a[2]
print(y) # 45.14
print(type(y)) # <class 'float'>

# Endre verdi til en posisjon i listen
a[0] = 'bar'
print(a) # ['bar', 42, 3.14]

# Legger til et nytt element i listen
a.append('baz')
print(a) # ['bar', 42, 3.14, 'baz']