Tähän mennessä olemme tehneet ohjelmia, jotka piirtävät grafiikkaa ikkunaan.
Ohjelmoinnin harjoittelussa on hyvä tuntea lisäksi komento print
,
joka tulostaa (eli kirjoittaa) tekstiä. Komento print
lienee ohjelmoijan paras apuväline, sillä sitä voi käyttää erilaisten ohjelmoijaa helpottavien viestien kirjoittamiseen.
Seuraava ohjelma tulostaa viestin "Tervetuloa!":
# -*- coding: utf-8 -*- def main(): print "Tervetuloa!" main()
Huomaa että yllä ei ole "pääsilmukkaa", vaan pääohjelmafunktiossa on vain kutsu print "Tervetuloa!"
. Emme myöskään ota peleissä käytettävää pygame
-kirjastoa käyttöön.
saippuakauppias
3 + 2 = 5
Edellisessä harjoitustehtävässä, jossa tulostettiin lasku "3 + 2 = 5" laskettiin itse luvut 3 ja 2 yhteen, jolloin lopputulokseksi saatiin 5. Ohjelmoinnissa on kätevää se, että tietokone voi laskea laskuja meidän puolesta. Suurimmassa osassa laskimista, jollei kaikissa, onkin käytössä ohjelmointikieli, jolla itse laskujen laskeminen on toteutettu.
Tehdään seuraavaksi ohjelma, joka osaa laskea laskun meidän puolesta. Ennen laskemista, tutustumme tärkeään käsitteeseen, muuttujaan. Muuttuja on tietokoneohjelmissa käytetty tietovarasto, johon voidaan tallentaa tietoa. Muuttujaan tallennettua tietoa voidaan myös lukea ja tulostaa.
Python-kielessä muuttujat esitellään aina yhtäsuuruusmerkin (=
) vasemmalla puolella, ja oikealla puolella on arvo, joka muuttujaan tallennetaan. On yhtäkuin-merkin vasemmalle puolelle tulee vain muuttujan nimi, eikä mitään muuta. Seuraavassa esimerkissä luodaan muuttuja nimeltä viisi
, ja asetetaan siihen arvo 5
. Tämän jälkeen käytämme python-kielen komentoa print
muuttujan sisällön tulostamiseen
# -*- coding: utf-8 -*- def main(): viisi = 5 print viisi main()
Kun suoritat eli ajat ylläolevan esimerkin näet tulostuksen "5". Huomaa että muuttuja esitellään yhtäsuuruusmerkin vasemmalla puolella, eikä siellä ole mitään muuta. Yhtäsuuruusmerkin oikealla puolella on arvo, joka muuttujaan asetetaan.
Muuttujan nimessä ei saa olla välilyöntejä, ja muuttujat kirjoitetaan pienillä kirjaimilla. Muuttujien nimet eivät myöskään saa alkaa numerolla.
Takaisin laskemiseen. Valitsemamme ohjelmointkieli osaa suorittaa erilaisia laskuja puolestamme, ja voimme sanoa asettaa muuttujaan esimerkiksi laskun tuloksen. Luodaan ohjelma, joka laskee luvut 5, 3 ja 7 yhteen, ja tulostaa laskun tuloksen.
# -*- coding: utf-8 -*- def main(): tulos = 5 + 3 + 7 print tulos main()
Ylläoleva ohjelma tulostaa arvon "15", joka on lukujen 5, 3 ja 7 summa. Voimme siis suorittaa laskuoperaatioita ohjelmointikielellä. Ohjelmointikielemme osaa laskea myös muita laskuja, esimerkiksi miinus, jako ja kerto-laskuja. Seuraava esimerkki näyttää miten miinus, jako ja kerto-laskuja voidaan käyttää.
# -*- coding: utf-8 -*- def main(): miinus = 123456 - 23456 print miinus jako = 100000 / 10000 print jako kerto = 10 * 50 print kerto main()
Ylläolevassa ohjelmassa on kolme erillistä tulostuskäskyä, joista kukin tulostaa käskylle annetussa muuttujassa olevan arvon. Ohjelman tulostus on seuraavanlainen.
100000 9 500
1008
2187
Muuttujan arvoa voi myös muuttaa, eli kun muuttujalle asetetaan arvo, sen ei tarvitse pysyä lopullisesti samana. Esimerkiksi muuttujaan, jossa on jo luku, voi lisätä toisen luvun.
# -*- coding: utf-8 -*- def main(): luku = 2 luku = luku + 2 print luku main()
4
Mahdollisuus muuttujassa säilytettävien arvojen muuttamiseen on hyvin hyödyllistä. Esimerkiksi tietokonepelissä pelaajan sijainti ilmaistaan usein muuttujien avulla, jolloin pelaajaa ei voisi liikuttaa jos muuttujien arvoja ei voisi muuttaa.
Merkkijono, eli teksti, koostuu yksittäisistä merkeistä. Merkkijonoon voi liittää muita muuttujia, plus (+)-merkin avulla. Muuttujia merkkijonoon liitettäessä täytyy kielelle vihjata, että se käsittelee muuttujat merkkijonotyyppisinä. Vihjaus merkkijonotyypistä tapahtuu komennon str
avulla. Komennolle str
annetaan parametrina
muuttuja, joka halutaan merkkijonotyyppiseksi. Alla olevassa esimerkissämme muuttuja luku
annetaan parametrina komennolle str
.
# -*- coding: utf-8 -*- def main(): luku = 53.2 print "Muuttujassa on tallennettuna luku " + str(luku) main()
Muuttujassa on tallennettuna luku 53.2
Yllä olevassa esimerkissä tulostettiin merkkijonon "Muuttujassa on tallennettuna luku " jatkeeksi muuttujan luku
sisältämä arvo. On myös mahdollista asettaa luku keskelle merkkijonoa.
# -*- coding: utf-8 -*- def main(): eka = 53.2 toka = 322.2 print "Eka: " + str(eka) + ", toka: " + str(toka)
Eka: 53.2, toka: 322.2
Erilaisten muuttujien yhteenliittämistä merkkijonoksi kutsutaan konkatenoinniksi.
Paivassa on 86400 sekuntia.
Kun ohjelmoidaan, törmätään usein tilanteeseen jossa halutaan kirjoittaa ohjelmakoodin idea myöhempää tarkastelua varten ylös. Kommentoinnilla tarkoitetaan myöhempää ohjelmakoodin lukemista helpottavien merkintöjen jättämistä lähdekoodiin. Kommentit alkavat risuaidalla (#), ja risuaidan jälkeistä syötettä ei ajeta ohjelmana.
# -*- coding: utf-8 -*- # pääohjelmafunktio def main(): # luetaan käyttäjältä nimi nimi = raw_input("Hei, mikä on nimesi? ") # tulostetaan viesti "Hei " ja käyttäjän syöttämä nimi print "Hei " + nimi # käynnistetään pääohjelmafunktio main()
Olemme tähän mennessä tutustuneet ohjelmiin, jotka eivät osaa vielä lukea käyttäjän kirjoittamia syötteitä näppäimistöltä. Komennolla raw_input
voimme pyytää käyttäjää syöttämään tekstiä näppäimistöltä. Komento raw_input
saa parametrikseen merkkijonon, eli tekstin, jota käyttäjältä kysytään. Käyttäjän syöttämä teksti asetetaan muuttujaan samalla tavalla kuin muuttujiin normaalistikin, eli muuttujan nimi kerrotaan yhtäsuuruus-merkin vasemmalla puolella, ja asetettava arvo -- tällä kertaa raw_input
-komennon lukema merkkijono -- yhtäsuuruusmerkin oikealla puolella.
# -*- coding: utf-8 -*- def main(): nimi = raw_input("Hei, mikä on nimesi? ") print "Hei " + nimi main()
Kun suoritat ylläolevan ohjelman, se kysyy sinulta nimeä ja tulostaa lopuksi nimen. Esimerkiksi syötteellä "Mikki" tulostus olisi seuraavanlainen.
Hei, mikä on nimesi? Mikki Hei Mikki
Jos yritämme lukea syötettä, ja ajatella sitä lukuna, huomaamme että ohjelma antaa virheen.
# -*- coding: utf-8 -*- def main(): luku = raw_input("Kirjoita luku: ") luku = luku + 2 print "Lukusi plus 2 on " + str(luku) main()
Traceback (most recent call last): File "(tiedoston nimi)", line (rivinumero), in <module> (komento) TypeError: cannot concatenate 'str' and 'int' objects
Tämä johtuu siitä, että syöte luetaan merkkijonona, ja ohjelma ei osaa laskea merkkijonoja ja lukuja yhteen. Syötteen voi muuttaa kokonaisluvuksi komennolla int
. Komento int
saa parametrina syötetyn merkkijonon, huomaa että voit antaa parametriksi käyttäjän syöttämän numeron.
# -*- coding: utf-8 -*- def main(): luku = int(raw_input("Kirjoita luku: ")) luku = luku + 2 print "Lukusi plus 2 on " + str(luku) main()
Kirjoita luku: 5 Lukusi plus 2 on 7