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: |
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: else: |
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.