Lisää muuttujista
Vastaa seuraavaan kyselyyn ennen osion aloittamista. Saat vastaamisesta yhden tehtäväpisteen.
Log in to view the quiz
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)
Anna nimesi: Kummitus Moi, Kummitus
Muuttujille voidaan antaa arvoja myös esimerkiksi näin:
etunimi = "Pekka"
sukunimi = "Pythonen"
nimi = etunimi + " " + sukunimi
print(nimi)
Pekka Pythonen
Tässä tapauksessa muuttujan arvo ei tule käyttäjältä vaan se on sama ohjelman jokaisella suorituskerralla.
Muuttujan 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)
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)
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)
Ohjelman tulostus on seuraava:
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)
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:
200 100100
Kahdelle lukuarvolle +
-operaattori siis merkitsee yhteenlaskua, merkkijonoille taas yhdistämistä peräkkäin.
Arvojen yhdistäminen tulostettaessa
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
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))
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)
Tulos on 250
Huomaa, että tässä tapauksessa arvojen väliin ilmestyy automaattisesti yksi välilyönti tulostuksessa.
Tulostaminen f-merkkijonojen avulla
Niin sanotut f-merkkijonot tarjoavat kolmannen edellisiä joustavamman ja jopa helppokäyttöisemmän tavan tulostuksen muotoiluun.
Aiempi tekstin ja kokonaisluvun tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:
tulos = 10 * 25
print(f"Tulos on {tulos}")
Tulostettavan merkkijonon alussa on kirjain f, joka tarkoittaa, että kyseessä on f-merkkijono. Merkkijonon sisälle on sijoitettu aaltosuluissa muuttuja tulos
, jonka arvo tulee tulostuvan merkkijonon osaksi. Tulostus on täsmälleen sama kuin aiemmissa esimerkeissä eli
Tulos on 250
Yksittäisen f-merkkijonon sisälle on mahdollista laittaa useampiakin muuttujia. Esimerkiksi koodi
nimi = "Arto"
ika = 39
kaupunki = "Espoo"
print(f"Hei {nimi}, olet {ika}-vuotias. Asuinpaikkasi on {kaupunki}.")
tuottaa seuraavan tuloksen:
Hei Arto, olet 39-vuotias. Asuinpaikkasi on Espoo.
Huomaa, että täsmälleen tämän esimerkin kaltaista tulostusta on mahdotonta saada aikaan käyttämällä print
-komennossa pilkkua:
nimi = "Arto"
ika = 39
kaupunki = "Espoo"
print("Hei", nimi, ", olet", ika, "-vuotias. Asuinpaikkasi on", kaupunki, ".")
Tulostus on seuraava:
Hei Arto , olet 39 -vuotias. Asuinpaikkasi on Espoo .
Tulostuksessa on nyt välilyönti jokaisen erillisen osan välissä ja muutamassa kohdassa se aiheuttaa ongelman.
Vaikka pilkullinen muoto print
-komennosta on joskus kätevä, se aiheuttaa välillä harmaita hiuksia ja silloin on parempi käyttää f-merkkijonoja. Osassa 4 opimme lisää f-merkkijonojen käteviä ominaisuuksia tulosteen muotoilussa.
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(f"Keskiarvo: {keskiarvo}")
Keskiarvo: 1.6233333333333333
Kertauskysely tämän osan asioihin liittyen:
Log in to view the quiz