Ehtorakenne vaihtoehtoisille tapahtumille

Jos-ehtorakenteessa tapahtuma tapahtuu, jos annettu ehto täytyy. Usein tarkasteltavia ehtoja on useampia kuin yksi. Ohjelma käy läpi kaikki jos-lauseet riippumatta siitä, kohdataanko ehdon täyttävä tapahtuma jossain vaiheessa. Erillisiä jos-ehtolauseita voidaan korvata käyttämällä jos-muuten-rakennetta, jossa ohjelma suorittaa tietyn tapahtuman, kun vertailu on tosi ja toisen tapahtuman vertailun ollessa epätosi.

Ehtorakenne mahdollistaa sen, että eri valinnat tuottavat erilaisen lopputuloksen.

Ehtorakenne if–else

if ehto tai vertailu:
Tapahtuma, joka tapahtuu, kun vertailu on tosi.

else:
T
apahtuma, joka tapahtuu, kun vertailu on epätosi. 

Esimerkki 3

Testissä on oikein-väärin-väittämiä. Tee ohjelma, jossa käyttäjältä kysytään seuraavasti:

”Oikein vai väärin: 3x + x = 4x. k vai e?”

Jos vastaus on oikein, ohjelma onnittelee oikeasta vastauksesta. Jos käyttäjän antama vastaus on väärin, ohjelma suosittelee käyttäjää kertaamaan asian uudelleen.

Ratkaisu

Vaihtoehtoisia tapahtumia on kaksi, joten ohjelma voidaan toteuttaa joko kahdella jos-lauseella tai käyttämällä jos-muuten-ehtorakennetta.

Tapa 1: Jos-ehtorakenteella toteutettuna


vastaus = input(u'Oikein vai väärin: 3x + x = 4x. k vai e?')
if vastaus == 'k':
print('Onneksi olkoon oikeasta vastauksesta!')
if vastaus == 'e':
 print(u'Kertaa asia vielä uudelleen.')

Tapa 2: Jos-muuten-ehtorakenteella toteutettuna

vastaus = input(u'Oikein vai väärin: 3x + x = 4x. k vai e?')
if vastaus == 'k':
print('Onneksi olkoon oikeasta vastauksesta!')
else:
 print(u'Kertaa asia vielä uudelleen.')

 Esimerkki 4

Tee ohjelma, joka piirtää kuviojonon käyttäjän haluamalla hahmolla. Käyttäjä voi valita hahmoksi joko ympyrän, neliön tai kolmion. Käyttäjältä myös kysytään, kuinka monta jäsentä kuviojonoon tulostetaan.

Ratkaisu

Valittavana on kolme eri vaihtoehtoa, joista jokainen tekee eri tapahtuman. Käytetään rakennetta if–elif–else.

Ehtorakenne if–else

if ehto tai vertailu:
Tapahtuma, joka tapahtuu, kun vertailu on tosi.

elif ehto tai vertailu:
Tapahtuma, joka tapahtuu, kun vertailu on tosi.

else:
T
apahtuma, joka tapahtuu, kun vertailu on epätosi. 

KOODI

Toistuvasti esiintyvä osa koodista kannattaa tehdä kerran. Testaamisen jälkeen koodia voi kopioida muihin kohtiin ja tehdä niihin kohtiin tarvittavat muutokset.

Tuloste, kun hahmoksi valitaan ympyrä ja kuviojonoon halutaan kolme jäsentä.

 

Tehtävä 7 (Palautettava tehtävä)

Tavoitteena on harjoitella if–else-rakenteen käyttämistä. Tee ohjelma, jossa käyttäjältä kysytään, onko hän kissa- vai koiraihminen. Kissaihmisille ohjelma tulostaa lauseen ”Kissoja onkin mukava silitellä ja kuunnella niiden kehräystä.”. Koiraihmisille ohjelma tulostaa ”Koirien kanssa onkin mukava ulkoilla ja harrastaa.” Käytä ohjelmassa if–else-rakennetta.

 

Tehtävä 8

Tavoitteena on harjoitella if–elif–else rakenteen käyttämistä. Tee ohjelma, joka toimii yksinkertaisena nelilaskimena. Käyttäjältä kysytään kaksi lukua ja minkä laskutoimituksen, yhteen-, vähennys-, kerto- vai jakolaskun, hän haluaa niillä tehdä.

  • Määritä muuttujat ja niiden arvoksi käyttäjältä kysyttävät luvut. Vastaus on muutettava kokonaisluvuksi, jotta sitä voidaan käyttää myöhemmin laskutoimituksissa.
  • Määritä muuttuja, jonka arvoksi tulee käyttäjän valitsema laskutoimitus. Mieti, miten haluat, että käyttäjä ilmaisee valitsemansa laskutoimituksen, jotta siitä voi tehdä ehtorakenteen.
  • Ohjelma tulostaa valitun laskutoimituksen ja laskun vastauksen.
  • Koska vaihtoehtoja on neljä, tarvittava ehtorakenne on if–elif–elif–else.

Tehtävä 9*

Tavoitteena on syventää jos-muuten-rakenteen käyttämistä. Tee ohjelma, jossa käyttäjälle esitetään kysymyksiä lausekkeen ja muuttujan arvosta ja hänen on valittava kahdesta vaihtoehdosta oikea. 

Käyttäjälle esitettävät kysymykset ja vastausvaihtoehdot:

  • Mikä on lausekkeen x + 1 arvo, kun x saa arvon 5? a) 5 b) 6
  • Mikä on lausekkeen 2n + 1 arvo, kun n = 10? a) 21 b) 211
  • Mikä on lausekkeen 3a arvo, kun a = –4? a) 12  b) –12
  • Millä x:n arvolla x – 4 = 9? a) x = 5 b) x = 13

Käyttäjä valitsee joko a tai b. Oikeasta vastauksesta käyttäjä saa kannustuksena ”Hienosti tiedetty!”. Väärästä vastauksesta käyttäjä saa palautteena ”Kaipaat vielä hieman harjoitusta tämän tyyppisestä tehtävästä.”

Jokaiseen kysymykseen tulee tehdä erillinen jos-muuten-rakenne.

Tehtävä 10*

Tavoitteena on palauttaa mieleen merkkijonojen yhtenevyyden vertailu.Tee ohjelma, jossa käyttäjän pitää arvata jotain. Käyttäjä voi esimerkiksi

  • arvata tunnussanan
  • keksiä vastauksen arvoitukseen
  • keksiä, mitä sanaa yritetään selittää
  • keksiä, mitä vieraskieliset sanat tarkoittavat.

Päätä itse, mitä ohjelman antaa palautteena oikeasta ratkaisusta ja mitä väärästä. Pohdi, onko ratkaisun kirjoitusasulla väliä eli pitääkö isot kirjaimet olla isoja vai onko itse sana tärkein kirjoitusmuodosta huolimatta.