Esimerkki: valintakäsky toistokäskyn sisällä

Toistokäskyn sisällä voi olla mitä tahansa käskyjä, esimerkiksi toinen toistokäsky tai if-käsky. Seuraavassa esimerkissä toistokäskyn sisällä on if-käsky.

Tarkastellaan seuraavaa tilannetta: käyttäjä syöttää ohjelmalle eri päivien lämpötiloja ja sademääriä. Ohjelman halutaan laskevan kaikkien lämpötilojen keskiarvon sekä sadepäivien lukumäärän. Sadepäiväksi katsotaan päivä, jonka sademäärä on ollut vähintään 1.0 mm. Ohjelma pyytää aluksi niiden päivien lukumäärän, joiden tiedot syötetään ohjelmalle. Sitten ohjelma lukee while-käskyn sisällä yhden päivän lämpötilan ja sademäärän. If-käskyn avulla tutkitaan, onko viimeksi luettu sademäärä vähintään 1.0. Jos se on, sadepäivien lukumäärää kasvatetaan yhdellä. Toistokäskyn jälkeen ohjelma tulostaa lämpötilojen keskiarvon ja sadepäivien lukumääärän. Näitä käskyjä ei enää kirjoiteta toistokäskyn sisälle, koska tulostusten halutaan tapahtuvan vasta siinä vaiheessa, kun kaikki päivät on jo käyty läpi ja toistokäsky päättynyt.

def main():
    print("Ohjelma keraa saatilastoja.")
    syote = input("Monenko paivan tiedot haluat antaa? ")
    paiva_lkm = int(syote)
    i = 0
    sadepaivien_lkm = 0
    lamposumma = 0.0
    while i < paiva_lkm:
        syote = input("Anna paivan lampotila (C): ")
        lampotila = float(syote)
        lamposumma += lampotila
        syote = input("Anna saman paivan sademaara (mm): ")
        sademaara = float(syote)
        if sademaara >= 1.0:
            sadepaivien_lkm += 1
        i += 1
    if paiva_lkm == 0:
        print("Et antanut yhdenkaan paivan tietoja.")
    else:
        keskiarvo = lamposumma / paiva_lkm
        print("Lampotilojen keskiarvo on", keskiarvo, "C.")
        print("Sadepaivia oli", sadepaivien_lkm, "kpl.")

main()

Esimerkki ohjelman suorituksesta:

Ohjelma keraa saatilastoja.
Monenko paivan tiedot haluat antaa? 8
Anna paivan lampotila (C): 12.0
Anna saman paivan sademaara (mm): 3.0
Anna paivan lampotila (C): 18.5
Anna saman paivan sademaara (mm): 0.0
Anna paivan lampotila (C): 22.1
Anna saman paivan sademaara (mm): 0.0
Anna paivan lampotila (C): 11.5
Anna saman paivan sademaara (mm): 1.5
Anna paivan lampotila (C): 9.0
Anna saman paivan sademaara (mm): 0.5
Anna paivan lampotila (C): 16.0
Anna saman paivan sademaara (mm): 0.0
Anna paivan lampotila (C): 13.3
Anna saman paivan sademaara (mm): 4.5
Anna paivan lampotila (C): 18.0
Anna saman paivan sademaara (mm): 0.0
Lampotilojen keskiarvo on 15.05 C.
Sadepaivia oli 3 kpl.