Osa 1

Lisää muuttujista

Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.

:
Loading...
:
Loading...

Kirjaudu sisään nähdäksesi tehtävän.

Muuttujia tarvitaan ohjelmissa moniin tarkoituksiin. Voimme tallentaa muuttujiin mitä tahansa sellaista tietoa, jota tarvitaan ohjelmassa myöhemmin.

Muuttuja luodaan Pythonissa seuraavasti:

muuttujan_nimi = ...

Tässä ... tarkoittaa arvoa, joka tallennetaan muuttujaan.

Esimerkiksi kun luemme input-komennolla merkkijonon käyttäjältä, sijoitamme merkkijonon muuttujaan, jotta voimme käyttää sitä myöhemmin ohjelmassa:

nimi = input("Anna nimesi: ")
print("Moi, " + nimi)
Esimerkkitulostus

Anna nimesi: Kummitus Moi, Kummitus

Muuttujille voidaan antaa arvoja myös esimerkiksi näin:

etunimi = "Pekka"
sukunimi = "Pythonen"

nimi = etunimi + " " + sukunimi

print(nimi)
Esimerkkitulostus

Pekka Pythonen

Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla.

Muuttujien arvon muuttaminen

Muuttujan arvo voi nimensä mukaisesti muuttua. Niin kuin edellisessä osassa todettiin, uusi arvo ylikirjoittaa vanhan arvon.

Esimerkiksi seuraavassa ohjelmassa muuttuja sana saa kolme eri arvoa:

sana = input("Anna sana: ")
print(sana)

sana = input("Anna toinen sana: ")
print(sana)

sana = "kolmas"
print(sana)
Esimerkkitulostus

Anna sana: eka eka Anna toinen sana: toka toka kolmas

Muuttujan sisältö siis vaihtuu jokaisen sijoituksen yhteydessä.

Muuttujan uusi arvo voi myös perustua sen vanhaan arvoon. Esimerkiksi seuraavassa muuttuja sana saa ensin arvoksi käyttäjän syötteen. Tämän jälkeen muuttuja saa arvoksi vanhan arvonsa, jonka perään on lisätty kolme huutomerkkiä:

sana = input("Anna sana: ")
print(sana)

sana = sana + "!!!"
print(sana)
Esimerkkitulostus

Anna sana: testi testi testi!!!

Kokonaisluvut

Tähän mennessä olemme tallentaneet muuttujiin vain merkkijonoja. Usein ohjelmissa halutaan kuitenkin tallentaa myös muun tyyppistä tietoa. Tarkastellaan aluksi kokonaislukuja.

Seuraava ohjelma luo muuttujan ika, jonka sisältönä on kokonaisluku.

ika = 24
print(ika)

Ohjelma tulostaa arvon

Esimerkkitulostus

24

Kokonaisluvun ympärille ei kirjoiteta lainausmerkkejä. Itse asiassa luvun ympärille kirjoitettavat lainausmerkit tarkoittavat, että kyseessä ei ole luku vaan merkkijono (joka tosin saattaa sisältää numeroita).

Mitä eroa muuttujan tyypeillä siis on, kun seuraava ohjelma tulostaa samat arvot?

luku1 = 100
luku2 = "100"

print(luku1)
print(luku2)
Esimerkkitulostus

100 100

Tyypeillä on merkitystä, koska erilaiset operaatiot vaikuttavat eri tavalla erityyppisiin muuttujiin. Tarkastellaan seuraavaa esimerkkiä:

luku1 = 100
luku2 = "100"

print(luku1 + luku1)
print(luku2 + luku2)

Ohjelman tulostus on seuraava:

Esimerkkitulostus

200 100100

Kahdelle lukuarvolle +-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin.

Arvojen yhdistäminen

Seuraava ohjelma ei toimi, koska "Tulos on " ja tulos ovat erityypisiä:

tulos = 10 * 25
# seuraava rivi tuottaa virheen
print("Tulos on " + tulos)

Ohjelma ei tulosta mitään, vaan antaa virheen

Esimerkkitulostus

TypeError: unsupported operand type(s) for +: 'str' and 'int'

Python kertoo, ettei kahden erityyppisen arvon yhdistäminen toimi. Tässä tapauksessa arvon "Tulos on" tyyppi on merkkijono ja arvon tulos tyyppi on kokonaisluku.

Jos haluamme tulostaa yhdellä komennolla merkkijonon ja luvun, yhdistäminen onnistuu kuitenkin muuttamalla luku merkkijonoksi str-funktiolla. Esimerkiksi

tulos = 10 * 25
print("Tulos on " + str(tulos))
Esimerkkitulostus

Tulos on 250

Toinen mahdollisuus on käyttää pilkkua print-komennossa. Tällöin komento tulostaa kaikki pilkuilla erotetut arvot riippumatta niiden tyypistä:

tulos = 10 * 25
print("Tulos on", tulos)
Esimerkkitulostus

Tulos on 250

Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa.

Liukuluvut

Liukuluku on ohjelmoinnissa esiintyvä termi, joka tarkoittaa käytännössä desimaalilukua. Liukulukuja voidaan käyttää melko samalla tavalla kuin kokonaislukuja. Huomaa, että desimaalierottimena käytetään pistettä (kuten englannissa yleensä).

Esimerkiksi seuraava ohjelma laskee kolmen liukuluvun keskiarvon:

luku1 = 2.5
luku2 = -1.25
luku3 = 3.62

keskiarvo = (luku1 + luku2 + luku3) / 3
print("Keskiarvo:", keskiarvo)
Esimerkkitulostus

Keskiarvo: 1.6233333333333333

Kertauskysely tämän osan asioihin liittyen:

:
Loading...
:
Loading...

Kirjaudu sisään nähdäksesi tehtävän.

Seuraava osa: