Python Ohjelmointi

Datatyypit

Helppo
10 min

Mitä ovat datatyypit?

Data, kuten esimerkiksi muuttujat, ei ole aina saman tyyppistä. Esimerkiksi, jos plussaat yhteen kaksi muuttujaa joiden tyyppi on tekstiä, lopputulos on että tekstit liitetään toisiinsa.

a = "3"
b = "5"
print(a + b)
35

Kun taas jos muuttujat ovat numeroita, lopputulos on numeroiden summa.

a = 3
b = 5
print(a + b)
8

Ja jos yrität suorittaa operaation kahdella tyypillä jotka eivät ole yhteensopivia, saat virheen.

a = 3
b = "5"
print(a + b)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Tämä on Pythonin tapa näyttää virheilmoituksia, siihen kannattaa tottua. Näet ilmoituksesta mikä virhe oli ja millä rivillä se tapahtui. int tarkoittaa numeroa (Integer) ja str taas on tekstin datatyyppi (String). Virhe on tässä tapauksessa epäsopivat operandit (vasen ja oikea puoli) plus-operaattorille.

Mitä datatyyppejä on?

Datatyyppejä on aika monta erilaista ja niitä voi myös itse määrittää lisää. Tässä on Pythonin sisäänrakennetut datatyypit ja karkeasti niiden käyttötarkoitus. Näitä ei tarvitse vielä muistaa ulkoa, mutta vilkaise läpi.

  • Tekstiä: str
  • Numeroita: int, float, complex
  • Listoja: list, tuple, range
  • Mappi (avaimia joilla on arvo, kuten sanakirja): dict
  • Setti (Lista jossa ei ole samaa arvoa useampaa kertaa): set, frozenset
  • Totuusarvo (tosi tai epätosi): bool
  • Binääri datatyyppejä: bytes, bytearray, memoryview
  • Tyhjä arvo: None

Miten datatyyppi määritetään?

Python osaa päätellä datatyypin itse. Voit kokeilla tätä type -funktiolla.

x = 3

print(type(x))
<class 'int'>
y = "3"

print(type(y))
<class 'str'>

Numerot

Tyypillisimmät datatyypit numeroille ovat int ja float. int (Integer) tarkoittaa kokonaislukua, kun taas float (Floating point) tarkoittaa desimaalilukua.

a = 3
print(type(a))
<class 'int'>
b = 3.5
print(type(b))
<class 'float'>

Teksti

Tekstin datatyyppi on str, eli String (merkkijono).

a = "moi"
print(type(a))
<class 'str'>

Totuusarvo

Totta/tarua (True/False) arvojen datatyyppi on bool, eli Boolean.

a = True
print(type(a))
<class 'bool'>
b = False
print(type(b))
<class 'bool'>

Tyyppi pakotukset (type coercion)

Palataan aiempaan esimerkkiin. Koodi aiheutti virheen, koska plus-operaattorin operandit (vasen ja oikea puoli) eivät olleet yhteensopivia, toinen oli int ja toinen str, joita ei voi plussata keskenään.

a = 3
b = "5"
print(a + b)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Voisimme ratkaista ongelman pakottamalla numeron tekstiksi, tai tekstin numeroksi. Kokeillaan molempia.

Numero muutetaan tekstiksi str -funktiolla.

a = 3
b = "5"
print(str(a) + b)

35

Teksti muutetaan numeroksi int -funktiolla.

a = 3
b = "5"
print(a + int(b))

8

Harjoitus

Tässä on esimerkki siitä, miten ohjelman pitäisi toimia.

Anna ensimmäinen numero: 5
Anna toinen numero: 10
15

Vihje

Tehtävät

Tehtävä 1

Tee ohjelma, joka kysyy käyttäjältä kaksi numeroa ja tulostaa sitten niiden summan.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.