Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

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}