Valinta – helpot tehtävät

Tällä sivulla on helpot valintatehtävät. Voitaisi lisätä vielä yksi yhdistämistehtävä.

Ensin on pari koodintunnistustehtävää, joissa tulee kertoa omin sanoin, mitä ohjelmakoodi tekee, kun se suoritetaan.
Jäljempänä on muutamia ohjelmointitehtäviä, joissa tulee kirjoittaa ohjelma vaadituin ehdoin. Kannattaa soveltaa.

Tehtävä 1. Tarkastele seuraavaa ohjelmakoodia ja kerro, mitä se tekee.

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku > 0:
    print("Positiivinen")
else:
    print("Negatiivinen")

Ohjelma ottaa syötteenä kokonaisluvun ja tulostaa ”Positiivinen”, jos se on enemmän kuin 0 tai ”Negatiivinen”, jos ei ole.

Tehtävä 2. Tarkastele seuraavaa ohjelmakoodia ja kerro, mitä se tekee.

Koodi:

luku = float(input("Syötä liukuluku: "))

if luku > -21.4 and luku < 0.5:
    print("Pakkasella")
elif luku >= 0.5 and luku < 22.8:
    print("Plussalla")
else:
    print("Marginaalin ulkopuolella")

Ohjelma ottaa syötteenä liukuluvun ja tulostaa ”Pakkasella”, jos se on suurempi kuin -21,4 ja pienempi kuin 0,5, ”Plussalla”, jos se on suurempi tai yhtä suuri kuin 0,5 ja pienempi kuin 22,8 tai ”Marginaalin ulkopuolella”, jos kumpikaan näistä ehdoista ei täyty.

Tehtävä 3. Tarkastele seuraavaa ohjelmakoodia ja kerro, mitä se tekee.

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku % 2 == 0:
    print("Jaollinen")
elif luku % 3 == 0:
    print("Jaollinen")
elif luku % 5 != 0:
    print("Ei jaollinen")
else:
    print("Ei mikään yllä olevista")

Ohjelma ottaa syötteenä kokonaisluvun ja tulostaa ”Jaollinen”, jos se on jaollinen kahdella tai kolmella, ”Ei jaollinen”, jos se ei ole jaollinen neljällä ja ”Ei mikään yllä olevista”, jos mikään aiemmista ehdoista ei täyttynyt.

Keksitkö luvun, joka ei toteuta mitään ehdoista?

Tehtävä 4. Kirjoita ohjelma, joka ottaa syötteenä henkilön iän ja tarkistaa, onko henkilö tarpeeksi vanha äänestämään. Jos ikä on 18 tai enemmän, tulosta ”Voit äänestää!”, jos alle 18, tulosta ”Sinun täytyy vähän kasvaa vielä.”

Jos ikä on negatiivinen, käyttäjä ilmeisesti valehtelee. Tulosta tällöin ”Virhe”

Tulosteet kuvina:


Koodi:

ikä = int(input("Syötä ikäsi: "))

if ikä < 0:
    print("Virhe")
elif ikä >= 18:
    print("Voit äänestää!")
else:
    print("Sinun täytyy vähän kasvaa vielä.")
Tulosteet:

Virhe
Sinun täytyy vähän kasvaa vielä.
Voit äänestää!


Tehtävä 5. Kirjoita ohjelma, joka ottaa syötteenä kokonaisluvun ja tarkistaa, onko luku parillinen. Jos on, tulosta ”parillinen”, jos ei, tulosta ”pariton”.

Koodi:
luku = int(input("Syötä kokonaisluku: "))

if luku % 2 == 0:
    print("parillinen")
else:
    print("pariton")
Tulosteet:

parillinen
pariton

Tehtävä 6. Turusta Helsinkiin on n. 166 km. Kirjoita ohjelma, joka ottaa syötteenä ajoneuvon keskinopeuden ja tulostaa ”Huippunopeus!”, jos matka taittuu alta 90 minuutin, ”Hyvä vauhti!”, jos matkaan menee 90–120 minuuttia ja ”Varovaista touhua.”, jos matkaan kuluu yli kaksi tuntia.

Koodi:

etäisyys = 166
nopeus = float(input("Syötä keskinopeus (km/h): "))

if etäisyys/nopeus < 1.5:
    print("Huippunopeus!")
elif etäisyys/nopeus <= 2:
    print("Hyvä vauhti!")
else:
    print("Varovaista touhua.")
Tuloste:

Varovaista touhua.
Hyvä vauhti!
Huippunopeus!

Tehtävä 7. Kirjoita ohjelma, joka ottaa syötteenä kaksi lukua ja tarkistaa, onko niiden suurin yhteinen tekijä suurempi kuin neljä. Ohjelma tulostaa ”Suurempi” tai ”Pienempi” tuloksen mukaisesti.

Tässä kannattaa hyödyntää Math-moduulin komentoa math.gcd()

Koodi:

import math

luku1 = int(input("Syötä kokonaisluku: "))
luku2 = int(input("Syötä toinen kokonaisluku: "))

if math.gcd(luku1, luku2) > 4:
    print("Suurempi")
else:
    print("Pienempi")
Tuloste:

Suurempi
Pienempi

Tehtävä 8. Tarkastellaan totuusarvoja. Kirjoita ohjelma, jossa asetetaan ensin muuttujan tosi arvoksi True ja valhe arvoksi False. Vertaile sitten niitä ekvivalenssioperaattorilla (==) ja tulosta ”Totta on.”, jos vertailu on tosi ja ”Valetta.”, jos vertailu on epätosi.

Koodi:

tosi = True
valhe = False

if (tosi == valhe) == True:
    print("Totta on.")
elif (tosi == valhe) == False:
    print("Valetta.")

Tuloste:
Valetta.

Tehtävä 9. Tarkastellaan totuusarvoja uudelleen. Kirjoita samanlainen ohjelma kuin tehtävässä 8, mutta aseta muuttujan valhe arvoksi hieman epäloogisen tuntuisesti not False.

Koodi:

tosi = True
valhe = not False

if (tosi == valhe) == True:
    print("Totta on.")
elif (tosi == valhe) == False:
    print("Valetta.")

Tuloste:
Totta on.

Tehtävä 10. Tee vastaavat vertailut kuin tehtävissä 8 ja 9. Tässä tehtävässä saat käyttää muitakin kuin ekvivalenssioperaattoria.

Pari vaihtoehtoa, jotka on kummiski samanlaiset. Toisessa merkitty == True selkeyden vuoksi. Toisessa merkitään ilman sitä.

tai:

Koodi:

tosi = True
valhe = False

if (tosi == valhe):
    print("Totta on.")
elif (tosi != valhe):
    print("Valetta.")

tai:

tosi = True
valhe = False

if (tosi == valhe) == True:
    print("Totta on.")
elif (tosi != valhe) == True:
    print("Valetta.")

Tuloste:
Valetta.

Tehtävä 11. Totuusarvot voidaan merkitä myös binäärisesti 1 tai 0. Kirjoita seuraavat ehdot, vertaile ja tarkista ne, kun tosi = 1 ja valhe = 0:

Ehdot:
  1. tosi and tosi
  2. tosi and valhe
  3. tosi or valhe
  4. valhe or valhe
  5. valhe and valhe
  6. tosi and (tosi or valhe)

Tulosta totuusarvo joka vertailun jälkeen.

Koodi:

tosi = 1
valhe = 0

print(bool(tosi and tosi))

print(bool(tosi and valhe))

print(bool(tosi or valhe))

print(bool(valhe or valhe))

print(bool(valhe and valhe))

print(bool(tosi and (tosi or valhe)))
Tulosteet:

True
False
True
False
False
True

Tehtävä 12. Pythonin erityyppisiä muuttujia voi vertailla keskenään. Kirjoita seuraavat vertailut ja tulosta tulos joka vertailun jälkeen:

Vertailut
  1. 1 and True
  2. 2 and False
  3. ”True” and True
  4. 0 and True
  5. ”” or False
  6. 1 and ””
Koodi:

print(bool(1 and True))

print(bool(2 and False))

print(bool("True" and True))

print(bool(0 and True))

print(bool("" or False))

print(bool(1 and ""))
Tulosteet:

True
False
True
False
False
False

Tehtävä 13. Miehet ovat nykyään asevelvollisia Suomessa 18 ikävuodesta 60 ikävuoteen asti. Kirjoita ohjelma, joka ottaa syötteenä miehen etunimen ja iän ja tarkistaa, onko mies asevelvollinen tulostaen seuraavien esimerkkien mukaisesti:

Jos on, tulostetaan: Mikko on asevelvollinen!

Jos ei, tulostetaan: Mikko ei ole asevelvollinen.

Koodi:

etunimi = input("Syötä etunimi: ")
ikä = int(input("Syötä ikä: "))

if ikä >= 18 and ikä <= 60:
    print(etunimi, "on asevelvollinen!")
else:
    print(etunimi, "ei ole asevelvollinen.")
Tulosteet:

Mikko on asevelvollinen!
Mikko ei ole asevelvollinen.

Tehtävä 14. Luo muuttuja x ja aseta sille kokonaislukuarvo.

a) Kirjoita ohjelma, joka tarkistaa, onko luku x suurempi tai yhtä suuri kuin 100 ja tulostaa ehdon toteutuessa ”Päästiin sataan!”

Koodi:

x = 120

if x >= 100:
    print("Päästiin sataan!")

Tuloste:
Päästiin sataan!

b) Jatka edellistä ohjelmaa. Lisää ohjelmaan toiminnallisuus, joka tulostaa ”Ei päästy!”, kun luku x on pienempi kuin 100 (tai kun ensimmäinen ehto ei täyty).

Koodi:

x = 120

if x >= 100:
    print("Päästiin sataan!")
else:
    print("Ei päästy!")
Tulosteet:

Päästiin sataan!
Ei päästy!

c) Testaa tätä ominaisuutta asettamalla muuttujan x arvoksi eri arvoja. Tee tämä helpoksi ottamalla x:n arvo syötteenä.

Koodi:

x = int(input("Syötä x:n arvo: "))

if x >= 100:
    print("Päästiin sataan!")
else:
    print("Ei päästy!")
Tulosteet:

Päästiin sataan!
Ei päästy!

Tehtävä 15.

a) Kokeen läpipääsyraja on 50 pistettä. Oppilaan pistemäärä tallennetaan muuttujaan pisteet. Luo ohjelma, joka tarkistaa pisteet-muuttujan arvon ja tulostaa ”Päästiin läpi.”, kun se on suurempi tai yhtä suuri kuin läpipääsyraja. Muutoin ohjelma tulostaa ”Uusintaan meni.”

Koodi:

lpr = 50
pisteet = 50

if pisteet >= lpr:
    print("Päästiin läpi!")
else:
    print("Uusintaan meni.")
Tulosteet:

Päästiin läpi!
Uusintaan meni.

b) Koe arvioidaan nyt arvosanoilla A, B, C, D, E ja F, jossa F on hylätty. (Kyseessä lienee kaiketi ulkomaalainen koe.) Arvosanat annetaan lineaarisesti pisteiden mukaan. Jos oppilas saa 90–100 pistettä, hänelle annetaan arvosanaksi A. Jos 80–89, B. Jos 70–79, C. Jos 60–69, D. Jos 50–59, E. Jos alle 50, F ja koe hylätään. Kirjoita ohjelma, joka tulostaa oikean arvosanan pisteiden mukaan.

Tulosteet:

A
B
C
D
E
F

Koodi:

pisteet = 100

if pisteet >= 90:
    print("A")
elif pisteet >= 80:
    print("B")
elif pisteet >= 70:
    print("C")
elif pisteet >= 60:
    print("D")
elif pisteet >= 50:
    print("E")
else:
    print("F")

Tehtävä 16. Kehonrakentajat rakastavat proteiinia. Se kuitenkin maksaa suhteellisen paljon. Tee ohjelma, joka kysyy syötteenä tuotteen hinnan ja proteiinin määrän grammoina. Jos hinta on kolme (3.0) tai vähemmän senttiä grammalta, voidaan todeta proteiinin hinnan olevan siedettävällä tasolla ja tulostaa ”Hyvän hintaista.” Muutoin tulostetaan ”Pakko maksaa.” PELKKÄ A-KOHTA

Koodi:

hinta = float(input("Syötä tuotteen hinta sentteinä: "))
proteiini = float(input("Syötä proteiinin määrä grammoina: "))

if hinta/proteiini <= 3.0:
    print("Hyvän hintaista.")
else:
    print("Pakko maksaa.")
Tulosteet:

Hyvän hintaista.
Pakko maksaa.

Tehtävä 17. Keittokirjassa on ohje, johon tarvitaan yksi unssi (n. 28,3 g) kaakaojauhetta. Kirjoita ohjelma, joka ottaa syötteenä määrän teelusikallisia (n. 5 g) ja tulostaa ”Liian vähän.”, jos niiden yhteenlaskettu määrä ei ylitä yhtä unssia. Muussa tapauksessa tulostetaan ”Riittää jo!”

Koodi:

lusikat = int(input("Syötä teelusikallisten määrä: "))

if lusikat*5 < 28.3:
    print("Liian vähän.")
else:
    print("Riittää jo!")
Tulosteet:

Liian vähän.
Riittää jo!

Tehtävä 18.

a) Kirjoita ohjelma, joka kysyy salasanaa ja syötettäessä oikea salasana tulostaa ”Tervetuloa!” Jos syötetään väärä salasana, tulostetaan ”Pääsy evätty.”

Koodi:

s = input("Syötä salasana: ")

if s == "salasana":
    print("Tervetuloa!")
else:
    print("Pääsy evätty.")
Tulosteet:

Tervetuloa!
Pääsy evätty.

b) Lisää ohjelmaan toiminnallisuus myös käyttäjätunnuksen syöttämiseksi. Ohjelman tulee edelleen tarkistaa kirjautumistietojen oikeellisuus ja tulostaa ”Väärä käyttäjätunnus tai salasana!”, jos joko käyttäjätunnus tai salasana on virheellinen.

Koodi:

k = input("Syötä käyttäjätunnus: ")
s = input("Syötä salasana: ")

if k == "Käyttäjät" and s == "salasana":
    print("Tervetuloa!")
else:
    print("Väärä käyttäjätunnus tai salasana!")
Tulosteet:

Tervetuloa!
Väärä käyttäjätunnus tai salasana!

c) Kirjautumistiedoista ei juuri ole hyötyä, jos ei ole toiminnallisuutta, johon pääsyä yritetään rajoittaa. Lisää ohjelmalle toiminnallisuudeksi salaisen viestin tulostus. Jos syötetään oikeat kirjautumistiedot, kysy käyttäjältä salaista viestiä, jonka ohjelma lopuksi tulostaa.

Koodi:

k = input("Syötä käyttäjätunnus: ")
s = input("Syötä salasana: ")

if k == "Käyttäjät" and s == "salasana":
    print("Tervetuloa!")
    v = input("Syötä salainen viesti: ")
    print(v)
else:
    print("Väärä käyttäjätunnus tai salasana!")
Tulosteet:

Tervetuloa!
Salainen viesti
Väärä käyttäjätunnus tai salasana!

Tehtävä 19. Suomi on kylmä maa ja täällä ulkolämpötila on usein nollan alapuolella. Kirjoita ohjelma, joka tulostaa ”Kylmä on.”, kun muuttujan lämpötila arvo on alle 0. Jos ollaan plussan puolella, tulostetaan ”Ihan hyvä keli.”

Koodi:

lämpötila = 3

if lämpötila < 0:
    print("Kylmä on.")
else:
    print("Ihan hyvä keli.")
Tulosteet:

Ihan hyvä keli.
Kylmä on.

Tehtävä 20.

a) Kuten on aikaisemmin huomattu, valintalausekkeissa voi olla useampia ehtoja peräkkäin. Kun laitetaan ne saman ehtolausekkeen sisälle, vältytään useammilta ehtorakenteilta. Kirjoita ohjelma, joka ottaa syötteenä kokonaislukuarvon ja tee sille seuraavat toimenpiteet yhden ehtolauseen sisällä:

Varmista, että luku on suurempi kuin 15, mutta pienempi kuin 40.

Varmista lisäksi, että luku on parillinen.

Varmista, että luku ei ole tasan 20.

Tämän jälkeen tulosta luku.

Tuloste:
30

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku > 15 and luku < 40 and luku % 2 == 0 and luku != 20:
    print(luku)

b) Lisää ohjelmaan tulostus ”Luku ei ole kelvollinen.”, mikäli jokin ehdoista ei pidä paikkaansa.

Tässä todennäköisesti tarvitaan muitakin valintarakenteita.

Tuloste:
30

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku > 15 and luku < 40 and luku % 2 == 0 and luku != 20:
    print(luku)
else:
    print("Luku ei ole kelvollinen.")
Tulosteet:

30
Luku ei ole kelvollinen.

Tehtävä 21.

a) Matematiikassa luvut voivat olla suljetuilla tai avoimilla väleillä. Kirjoita ohjelma, joka ottaa syötteenä liukuluvun ja tulostaa ”Välillä”, jos se on välillä [50:80[ ja ”Ulkona”, jos se on välin ulkopuolella.

Koodi:

luku = float(input("Syötä luku: "))

if luku >= 50 and luku < 80:
    print("Välillä")
else:
    print("Ulkona")
Tulosteet:

Välillä
Ulkona

b) Lisätään ohjelmaan tulostus ”Siellä päin”, jos luku on välillä [30:100]. Jos luku ei kuitenkaan ole tälläkään välillä, tulostetaan ”Aivan metikössä”.

Koodi:

luku = float(input("Syötä luku: "))

if luku >= 50 and luku < 80:
    print("Välillä")
elif luku >= 30 and luku <= 100:
    print("Siellä päin")
elif luku < 30 or luku > 100:
    print("Aivan metikössä")
Tulosteet:

Välillä
Siellä päin
Aivan metikössä

Tehtävä 22.

a) Aina ei ole viisasta laittaa kaikkia ehtoja saman valintalausekkeen sisälle, sillä niiden pituus voi monimutkaisissa ehdoissa karata käsistä. Kirjoita ohjelma, joka ottaa syötteenä kokonaisluvun, jolle tehdään seuraavat tarkistukset:

Luvun tulee olla väliltä [60:80].

Luvun tulee olla pariton.

Luku ei saa olla 61, 65, 71, 75 tai 79.

Jos ehdot pätevät, ohjelma tulostaa luvun.

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku >= 60 and luku <= 80 and luku % 2 == 1 and luku != 61 and luku != 65 and luku != 71 and luku != 75 and luku != 79:
    print(luku)

Tulosteena kelvollinen luku.

b) Vaihtoehtona ehtojen peräkkäin laittamiselle voimme kaunistaa koodia sulkeiden avulla. Vaikka Pythonissa sisennys ja rivitys kuuluu olennaisesti syntaksiin, voimme muun muassa sulkeiden avulla kiertää tämän ja rivittää sulkeiden sisällä olevan koodin siten kuin haluamme.

Aseta sulkeet ehdon ympärille ja rivitä se vähintään kolmelle riville erotellen eri tarkistuksia.

Koodi:

luku = int(input("Syötä kokonaisluku: "))

if luku >= 60 and luku <= 80:
    if luku % 2 == 1:
        if luku != 61 and luku != 65 and luku != 71 and luku != 75 and luku != 79:
            print(luku)

Tulosteena kelvollinen luku