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.