...
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".
Code Block |
---|
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". {code} 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.") {code} |
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.
Code Block |
---|
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. {code} 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.") {code} |
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.
Code Block |
---|
} 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...") {code} |
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.
Code Block |
---|
} 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...") {code} |