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 += 1Tulostus (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ä.