Osa 1

Ehtorakenne

Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä. Usein on kuitenkin tarpeen määritellä ohjelmaan osia, jotka suoritetaan vain tietyissä tilanteissa.

Tarkastellaan ensin esimerkkiä, joka tarkastelee, onko henkilö täysi-ikäinen:

ika = int(input("Kuinka vanha olet? "))

if ika > 17:
    print("Olet täysi-ikäinen.")
    print("Tässä siis sinulle ikiomaksi GTA6.")

print("Seuraava asiakas, kiitos!")

Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:

Esimerkkitulostus

Kuinka vanha olet? 18 Olet täysi-ikäinen! Tässä siis sinulle ikiomaksi GTA6. Seuraava asiakas, kiitos!

Jos kuitenkin ikä ei ole suurempi kuin 17, käy näin:

Esimerkkitulostus

Kuinka vanha olet? 16 Seuraava asiakas, kiitos!

Esimerkkejä tarkastelemalla huomataan, että syötteenä annettu arvo vaikuttaa nyt siihen, mitkä osat ohjelmasta suoritetaan. Ohjelmassa on käytössä ehtorakenne, jonka sisällä oleva koodi suoritetaan vain, kun annettu ehto on tosi.

1 6

Ehtorakenteessa avainsanaa if seuraa jokin ehto, kuten kahden arvon vertailu. Tämän jälkeen tuleva koodi suoritetaan vain, jos ehto pitää paikkansa.

Huomaa, että ehtorakenteen ensimmäisen rivin lopussa on kaksoispiste. Seuraavassa koodissa kaksoispiste on unohtunut:

ika = 10

# kaksoipiste unohtui seuraavan rivin lopusta
if ika > 17
    print("Olet täysi-ikäinen.")

Tämän seurauksena koodi antaa virheen:

Esimerkkitulostus
File "ohjelma.py", line 3
  if ika > 17
            ^
SyntaxError: invalid syntax

Vertailuoperaattorit

Tyypillinen ehto on kahden arvon vertailu. Pythonin vertailuoperaattorit ovat:

OperaattoriMerkitysEsimerkki
==Yhtä suuria == b
!=Eri suuria != b
>Suurempia > b
>=Suurempi tai yhtä suuria >= b
<Pienempia < b
<=Pienempi tai yhtä suuria <= b

Tarkastellaan esimerkkinä ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöttämä luku negatiivinen, positiivinen vai nolla:

luku = int(input("Anna luku: "))

if luku < 0:
    print("Luku on negatiivinen.")

if luku > 0:
    print("Luku on positiivinen.")

if luku == 0:
    print("Luku on nolla.")

Ohjelma suoritettuna kolme kertaa eri syötteillä:

Esimerkkitulostus

Anna luku: 15 Luku on positiivinen.

Esimerkkitulostus

Anna luku: -18 Luku on negatiivinen.

Esimerkkitulostus

Anna luku: 0 Luku on nolla.

Sisentäminen

Python tunnistaa ehtorakenteen sisällä olevan koodin siitä, että jokainen rivi on sisennetty samalla tavalla. Tämä tarkoittaa, että ehtorakenteen sisällä olevan koodin alussa on tyhjää tilaa. Jokaisella rivillä tulee olla yhtä paljon tyhjää tilaa.

Esimerkiksi:

salasana = input("Anna salasana: ")

if salasana == "kissa":
    print("Tiesit salasanan!")
    print("Olet siis joko oikea käyttäjä...")
    print("...tai melkoinen hakkerivelho.")

print("Ohjelman suoritus päättyi. Kiitos ja hei!")

Tyhjä tila saadaan aikaan tabulaattorilla, jonka saat Tab-näppäimestä.

1 6 keyboard

Suurin osa editoreista osaa automaattisesti sisentää rivin, kun edellinen rivi päättyy kaksoispisteeseen. Voit lopettaa sisentämisen editorissa painamalla rivin alussa Backspace-näppäintä.

1 6 keyboard2
Näppäimistökuvien alkuperä: Clker-Free-Vector-Images from Pixabay

Totuusarvot

Ehtorakenteessa käytettävä ehto saa totuusarvon True (tosi) tai False (epätosi). Esimerkiksi ehto a < 5 on tosi jos a on alle 5 ja epätosi jos a on 5 tai suurempi.

Voimme asettaa ehdon tuloksen muuttujan arvoksi samaan tapaan kuin laskutoimituksen tuloksen:

a = 3
ehto = a < 5
print(ehto)
if ehto:
    print("a on pienempi kuin 5")
Esimerkkitulostus

True a on pienempi kuin 5

Voimme käyttää koodissa myös sanoja True ja False. Esimerkiksi seuraava koodi suorittaa print-komennon aina, koska ehdon arvona on True:

ehto = True
if ehto:
    print("Tänne tullaan aina")
Esimerkkitulostus

Tänne tullaan aina

Tällainen ohjelma ei ole sinänsä kovin hyödyllinen, mutta myöhemmin kurssilla näemme, mitä hyötyä on totuusarvoista muuttujissa.

Kertauskysely tämän osan asioihin liittyen:

:
Loading...
:
Loading...

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

Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:

:
Loading...
:
Loading...

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