3. tunti

Muuttujat ja syöte

Muuttuja tarkoittaa eräänlaista tietovarastoa. Jos ohjelma kysyy käyttäjältä jotain tietoa, on ohjelman tallennettava käyttäjän antama tieto johonkin, muuttujaan. Ohjelmalle annettavaa tietoa sanotaan syötteeksi.

Muuttujia on eri tyyppisiä, esimerkiksi:
str - merkkijono
int - kokonaisluku
float - desimaaliluku (oikeammin liukuluku)
boolean - totuusarvo

Pythonilla yhtäsuuruusmerkki tarkoittaa arvon asettamista muuttujalle, esim. muuttujille x ja y voidaan ohjelmassa antaa arvot seuraavasti

x = 5
y = 6

(Tässä tapauksessa muuttujien x ja y tyyppiä ei tarvi määritellä, ohjelmatulkki ymmärtää ne kokonaisluvuiksi)

Muuttujien arvojen asettamisen jälkeen Python "käsittelee" muuttujia x ja y aivan kuin ne olisivat luvut 5 ja 6

Esimerkiksi seuraava koodinpätkä

x = 5
y = 6
print(x+y)

tulostaa luvun 11.
(Huomaa, että muuttujia ei laiteta lainausmerkkeihin näytölle tulostettaessa, toisin kuin merkkijonoja)



Syöte

Käyttäjiltä voidaan pyytää syötettävää tietoa komennolla raw_input() (Pythonin versiolla 3 pelkkä input). Voit pyytää käyttäjältä nimeä (ja samalla tallettaa tuloksen muuttujaan nimi) komennolla.

nimi=raw_input("Kerro nimesi")

Nyt voisit tulostaa nimesi komennolla

print(nimi)
Huomaa, että nyt ei laiteta lainausmerkkejä, koska suluissa oleva nimi on muuttuja, ei merkkijono.

Tyylikkäämpää olisi tulostaa teksti: Moro Annettu_nimi

Tämä tulostetaan komennolla

print("Moro "+nimi)


HUOM!

raw_input() tulkitsee syötetyt tiedot aina pelkkinä merkkijonoina. Esim. syöte 34 tarkoittaa peräkkäin olevia merkkejä 3 ja 4, ei lukua kolmekymmentäneljä.

Jos haluat syöttää numeroita, käytä pelkkää input() komentoa, silloin Python päättelee, onko kyseessä merkkijono vai luku.

Oikean muuttujatyypin valinna tärkeys

Alla esimerkki siitä, miten Python ei ymmärrä lukuarvoa käytettäessä raw_input komentoa

luku1=raw_input("Anna luku ")
luku2=raw_input("Anna toinen luku ")
print "Lukujen summa on ",luku1+luku2

Mutta, koska muuttujia luku1 ja luku2 ei määritelty, Python tulkitsee ne merkkijonoiksi, ja ohjelman ajo tuottaa seuraavan tuloksen:


Eli Python lisää merkin 5 perään merkin 7. (Ei niin kuin oli tarkoitus: lisää lukuun 5 luvun 7).

Kun lukuja kysyessä huomaa asettaa muuttujatyypiksi int (eli kokonaisluku) on koodi ja ohjelman ajo seuraavat.

luku1=int(raw_input("Anna luku "))
luku2=int(raw_input("Anna toinen luku "))
print "Lukujen summa on ",luku1+luku2



Helpommalla olisi päässyt käyttämällä input() komentoa.