You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

Valintarakenne tarkoittaa ohjelman koodissa rakennetta, joka määrää, mitkä koodin osat suoritetaan ja mitkä mahdollisesti jätetään suorittamatta. Niinkuin useissa muissakin kielissä Pythonissa on avainsana if, jonka jälkeen on tarkoitus laittaa totuusarvon palauttavan operaation tai muun vastaavan ilmaisun.
 
Tässä tulee esiin Pythonin sisennykseen liittyvä kirjoitus sääntö. Sisennys merkitsee Pythonissa lohkoa eli useita lauseita sisältävää koodi osiota. Lohkoa edeltävä rivi lisäksi loppuu kaksoispisteeseen. Lohko loppuu ei-tyhjään riviin, jolla on pienempi sisennys.
 
Sisennys jätetään huomiotta ainoastaan rivien kohdalla, jotka on jaettu useammalle riville esim. ylipitkien rivien välttämiseksi. Rivin voi aina katkaista lopettamalla se kenoviivaan ja jatkamalla seuraavalle sisennyksestä välittämättä. Rivin voi katkaista myös operaattorilla kuten plusmerkillä.
 
Esimerkiksi if - valintarakenteessa ehdollisesti suoritettava koodi on sisennettynä avainsanan if sisältävän rivin jälkeen - jossa siis myös totuusarvon palauttava lauseke ja kaksoispiste. Tässä esimerkki ohjelma, joka pyytää käyttäjältä tekstiä, tulostaa saadun tekstin ja huomauttaa, jos teksti sisältää merkin "a".

s = input("Kirjoita jotain: ")
 
print("kirjoitit \"" + s + "\"")
if 'a' in s:
    print("Antamasi teksti sisältää suomen kielen yleisimmän kirjaimen!")
input("Paina Enter-näppäintä lopettaaksesi.")

Huomaa: vain sisennys on merkitsemässä if - rakenteen loppua. Jos viimeinen input funktio olisi sisennetty, sekin suoritettaisiin vain kun if - rakenteen vertailu on tosi.
 
Valintarakenteeseen voi lisätä myös else osion, joka suoritetaan kun if osion vertailu ei ole tosi. Myös else osioon kuuluva koodi on sisennettävä, mutta avain sana else tulee olla samalla sisennyksellä kuin vastaava if. Lisäksi if ja else osion välissä ei saa olla valintarakenteeseen kuulumatonta koodia pienemmällä sisennyksellä.
 
Seuraava ohjelma pyytää käyttäjältä numeroarvoa ja laskee sen neliön, mutta tarkistaa ensin onko merkkijono numeroarvo.

s = input("Anna numero: ")
 
if s.isdecimal():
    x = int(s)
    print("Antamasi numeron neliö on:\n" +
          str(x * x))   #Tämä rivi jatkuu edelliseltä
else:
    print(s + " ei ole numero...")
input("Paina Enter-näppäintä lopettaaksesi.")

Valintarakenteita voi myös tehdä useita sisäkkäin. Tässä ohjelma, joka pyytää kaksi numeroa, jotka jakaa keskenään. Ohjelma tarkistaa ensin, että annetut tekstit ovat numeroita ja sitten onko jakaja erisuuri kuin nolla.

from math import sqrt
 
s1 = input("Anna jaettava:\t")
s2 = input("Anna jakaja:\t")
 
if s1.isnumeric() and s2.isnumeric():
    a = int(s1)
    b = int(s2)
    if b != 0:
        y = a / b
        s = "%s jaettuna %s on...\n%s" % (a, b, y)
        print(s)
    else:
        print("Jakaja ei voi olla nolla!")
else:
    print("Molempien tulee olla numeroita...")
     
input("Paina Enter-näppäintä lopettaaksesi...")

Valintarakenteeseen voi tarvittaessa lisätä vielä halutun määrän elif osioita - elif on lyhennelmä sana parista else if. Nämä elif osiot tulevat if ja else osion väliin, ja ne vaativat jokainen oman totuusarvon palauttavan lausekkeen. Seuraava ohjelma pyytää merkkijonon ja tarkastaa merkkien koon ja päättyykö teksti pisteeseen.

s = input("Anna tekstiä: ")
 
if s.isupper():
    print("Älä kirjoita kaikkea isolla!")
elif s.islower():
    print("Muista isot kirjaimet.")
elif s.endswith('.'):
    print("Lauseen pitäisi loppua pisteeseen...")
else:
    print("Etkö jaksanut kirjoittaa enempää? :P")
 
input("Paina Enter-näppäintä lopettaaksesi...")

  • No labels
You must log in to comment.