Muuttujat ja tulostaminen


Luentovideo

Mitä tulostaminen oikeasti tarkoittaa?

Opimme viime luvussa hyödyntämään funktiota nimeltä "print()", kun kirjoitimme ensimmäisen Python-koodimme. Funktioita käymme tarkemmin läpi, kun pääsemme materiaalissa pidemmälle, mutta mitä "print()" itseasiassa tekee? Ja miksi tulostamme?

Tulostus-komennolla ei tässä tapauksessa viitata vanhanliiton tulostimiin, joilla printataan paperia, mutta analogia on samanlainen. Loppupeleissä tietokoneohjelmien tarkoitus on tuottaa jokin lopputulos, ja tulostamalla tarkoituksellinen viesti (esimerkiksi oma nimi ja päivämäärä) olemme päässeet haluamaamme lopputulokseen.

          
print("Mikko Mallikas 11.11.2011")            
          
        
          
Mikko Mallikas 11.11.2011            
          
        
Kun koodimme näyttää samalta, kuin vasemmalla. Tuloste on samanlainen, kuin oikealla.

1. Välitehtävä: Ohjelma on kuitenkin melko vielä melko yksinkertainen ja hölmö. Mieti, mitä tapahtuu jos ohjelmaasi käyttää joku muu ja vielä eri päivänä?

1. Välitehtävän vastaus

Esimerkiksi jos käyttäjän nimi onkin Matti Meikäläinen ja ohjelmaa ajetaan päivämääränä 30.12.2020, tulostaa ohjelma silti "Mikko Mallikas 11.11.2011". Pitäisi siis onnistua selvittämään 1) kuka ohjelmaa käyttää? ja 2) mikä päivä tänään on?

Käyttäjän syötteen lukeminen

Eli on tärkeää oppia lukemaan käyttäjän antamaa syötettä ja toimia sen perusteella tuotaaksemme oikean lopputuloksen. Käskyjä ja syötettä voi käyttäjältä kysyä monella tavalla, kuten painikkeiden tai valintaruutujen avulla. Nyt pureudumme käyttäjän kirjoittamaan syötteeseen. Pythonissa käyttäjän syötettä luetaan komentoriviltä input() -funktiolla. Input-funktio ottaa kiinni käyttäjän syötteen ja seuraavaksi se tulee tallettaa johonkin. Tässä kohtaa mukaan tulee muuttujat, joita käsittelemme kohta tarkemmin. Alla on kuitenkin esimerkki input() -funktion käytöstä.

Nimen_kysyminen
Cmd_nimen_kysyminen
input()-funktion sulkeiden sisään voi kirjoittaa tekstiä, jolla käyttäjää ohjataan muokaamaan omaa syötettään. Syöte talletetaan muuttujaan "nimi".

2. Välitehtävä: Kopioi alla oleva koodi tekstieditoriisi ja kokeile ajaa koodi. Muuta myös koodia sitä siten, että käyttäjältä kysytäänkin hänen nimensä sijaan lempiruoka ja tulostetaan se konsoliin.

          
nimi = input("Moi, mikä sinun nimesi on? ")
print("Tervetuloa " + nimi)            
          
        
2. Välitehtävän vastaus

Käyttäjän lempiruokaa voitaisiin kysyä esimerkiksi tällä tavalla:

            
ruoka = input("Moi, mikä sinun lempiruokasi on? ")
print("Lempiruokasi on " + ruoka)                 
            
          

"ruoka" -nimiseen muuttujaan siis talletetaan käyttäjän syötettä ja käyttäjän syöte liimataan print tulostukseen "Lempiruokasi on " - jälkeen. Huomaa, että jos käyttäjä syöttäisi ohjelmalle esimerkiksi merkkijonon "saippuakauppias", lopputulos olisi "Lempiruokasi on saippuakauppias". Pyrimme siis vain toistaiseksi ohjailemaan käyttäjän syötettä oikeaan suuntaan. Emme voi tarkistaa ja filtteröidä syötettä kunnolla, ennen kuin tutustumme ehtolauseisiin.

Muuttujia

Äskeisen välitehtävän jälkeen oletkin jo päässyt hyödyntämään muuttujia ohjelmoinnissa. Välitehtävässä talletimme muuttujaan käyttäjän syötettä merkkijonona. Python-kielen tärkeimpiä tietotyyppejä ovat:

Muuttujia käytetään ohjelmoinnissa "muistipaikkana", jonne ohjelmassa voidaan tallettaa tietoa tulevaa käyttöä varten. Muuttujaan talletetaan aina tietyn tyyppistä dataa. Erilaiset tietotyypit on listattuna ylempänä. Muuttujalle annetaan aina nimi ja arvo. Esimerkiksi x = 10, jossa "x" on muuttujan nimi ja "10" on muuttujan arvo.

Muuttujan nimellä ei ole väliä, mutta jotta ohjelmakoodi olisi helpommin ymmärrettävää itse koodarille, kuin myös muillekin, kannattaa yleensä nimetä muuttujia jotenkin järkevästi. Esimerkiksi kokonaisluvulle ei ehkä kannata antaa muuttujanimeä "norsu", kuten alhaalla, vaan esimerkiksi jos kyseessä on norsujen lukumäärä, olisi yksi hyvä vaihtoehto muuttujanimeksi esimerkiksi "norsu_lkm" tai "norsu_maara". Ainut asia, mikä nimeämisessä tulee huomioida on se, että samannimisiä muuttujia ei voi olla. Jos ohjelmassa on samannimisiä muuttujia, ymmärtää ohjelma sen uudelleen sijoittamisena (kts. alempi esimerkki). Muuttujan nimi ei myöskään voi olla kaksiosainen, esimerkiksi "norsujen lukumäärä", vaan kaksiosaiset nimet tulee yhdistää esimerkiksi "_"-merkillä (alaviiva-merkki).

HUOM!! Kannattaa jo nyt tottua siihen, että ääkköset tietokonemaailmassa voivat tuottaa todella usein vaikeuksia. Siksi vahva suosittelu siihen, että muuttujiakin nimetään ilman ääkkösiä, esimerkiksi "henkilön_ikä" -> "henkilon_ika".

          
a = 1        # Muuttujaan nimeltä "a" on sijoitettu kokonaisluku 1 
b = 2.5      # Muuttujaan nimeltä "b" on sijoitettu liukuluku 2.5
c = "teksti" # Muuttujaan "c" on sijoitettu merkkijono "teksti"
norsu = 3    # Muuttujaan nimeltä "norsu" on sijoitettu kokonaisluku 3
d = True     # Muuttujaan "d" on sijoitettu totuusarvo True 
a = 3        # Nyt muuttujaan nimeltä "a" sijoitetaankin luku 3, joten aikaisemmin sijoitettu 1 menettää merkityksensä             
          
        

Muuttujia voidaan tietysti muuttaa, mistä niiden nimi juontuukin. Edellä olevassa esimerkissä demottiin tilannetta, jossa ennestään nimetylle muuttujalle asetettiin uusi arvo, muuttujassa "a". Muuttujia voi myös yhdistellä ja niitä voi muokata mielensä mukaan. Peruslaskutoimituksia tullaan käymään tarkemmin seuraavassa kappaleessa.

          
luku = 10                                       # Muuttujaan nimeltä "luku" on sijoitettu kokonaisluku 10
toinen_luku = 5                                 # Muuttujaan nimeltä "toinen_luku" sijoitetaan kokonaisluku 5
merkkijono = "koira"                            # Muuttujaan nimeltä "merkkijono" sijoitetaan "koira"
summa = luku + toinen_luku                      # Muuttujaan nimeltä "summa" sijoitetaan muuttujat "luku" ja "toinen_luku" ja lasketaan ne yhteen
luku = 10 + 1 - 8                               # Tässä muuttujassa tehdään myös laskutoimitus
uusi_merkkijono = merkkijono + " " + "kissa"    # Muuttujassa nimeltä "uusi_merkkijono" yhdistellään merkkijonoja
          
        

3. Välitehtävä: Kopioi alla oleva koodi tekstieditoriisi ja kokeile muuttaa muuttujien arvoja. Mieti myös, miksi "#"-alkuiset rivit eivät vaikuta ohjelman suorittamiseen.

          
# Tehdään kaksi lukumuuttujaa, "luku1" ja "luku2"            
luku1 = 5
luku2 = 3
# Lasketan muuttujat yhteen ja sijoitetaan muuttujaan "summa"
summa = luku1 + luku2
# Tulostetaan muuttuja "summa"
print(summa)


# Luodaan kaksi muuttujaa "eka" ja "toka"
eka = "ele"
toka = "fantti"

# Tulostetaan molemmat muuttujat peräkkäin, liimaten ne yhteen. 
print(eka + toka)