Toistolauseet ja silmukat

Pythonin kaksi keskeistä silmukkarakennetta ovat for ja while. range on for-silmukan kanssa käytettävä lukujonon kuvaus, ei kolmas silmukkarakenne.

for käy kokoelman läpi

Silmukkamuuttuja saa vuorollaan jokaisen alkion arvon. Nimen voi valita itse. Sisennetty lohko suoritetaan jokaiselle alkiolle.

hedelmat = ["omena", "päärynä"]
for hedelma in hedelmat:
    print(hedelma)

Tulostus (ilman syötteiden kysymystekstejä):

omena
päärynä

range ja rajat

range(loppu) alkaa nollasta. range(alku, loppu, askel) määrittelee myös alun ja askelen. Loppuraja ei sisälly jonoon. Askel ei saa olla nolla. Negatiivisella askeleella voit kulkea alaspäin.

for i in range(0, 6, 2):
    print(i)
for i in range(3, 0, -1):
    print(i)

Tulostus (ilman syötteiden kysymystekstejä):

0
2
4
3
2
1

while ja päättyminen

while tarkistaa ehdon ennen jokaista kierrosta. Päivitä ehdossa käytettyä tilaa, jotta silmukka voi päättyä. Jos ehto on heti epätosi, runkoa ei suoriteta kertaakaan.

luku = 0
while luku < 3:
    print(luku)
    luku += 1

Tulostus (ilman syötteiden kysymystekstejä):

0
1
2

break, continue ja enumerate

break poistuu lähimmästä silmukasta. continue siirtyy seuraavaan kierrokseen; while-silmukassa varo ohittamasta laskurin päivitystä. enumerate antaa sekä indeksin että arvon.

for i in range(6):
    if i == 1:
        continue
    if i == 4:
        break
    print(i)

Tulostus (ilman syötteiden kysymystekstejä):

0
2
3
for indeksi, nimi in enumerate(["Aino", "Mikko"]):
    print(indeksi, nimi)

Tulostus (ilman syötteiden kysymystekstejä):

0 Aino
1 Mikko

Lisätieto: listakooste

Listakooste muodostaa uuden listan. Ensin kannattaa osata tavallinen for-silmukka; lyhyempi kirjoitusasu ei itsessään tee ratkaisusta parempaa.

luvut = [1, 2, 3]
neliot = [luku ** 2 for luku in luvut]
print(neliot)

Tulostus (ilman syötteiden kysymystekstejä):

[1, 4, 9]

Kokeile itse

Millä range-kutsulla saat luvut 0–10 mukaan lukien?

Vastaus ja perustelu

range(11) tai range(0, 11). Loppuraja 11 jää pois, joten viimeinen arvo on 10.

Suorita koodiesimerkit yksi kerrallaan. Jokainen esimerkki sisältää tarvitsemansa määrittelyt. Vertaa omaa ennustettasi tulosteeseen ennen seuraavaan aiheeseen siirtymistä.

Katso aihevideo YouTubessa