CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 4.9.2023-1.12.2023
Kurssiasetusten perusteella kurssi on päättynyt 01.12.2023 Etsi kursseja: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
for-silmukka ja range
for-silmukassa toistojen määrä määritellään silmukan alkaessa. Toistojen määrittelyssä auttaa range-niminen funktio, jota voi käyttää kolmella eri tavalla: range(toistot), range(alku, loppu), tai range(alku, loppu, askel). Esimerkki:
# Tulostetaan Hep! viisi kertaa # Silmukkamuuttujaa "luku" ei hyödynnetä silmukan sisällä for luku in range(5): print("Hep!")
tulostaa:
Hep!
Hep!
Hep!
Hep!
Hep!
Huomaa, että käytettäessä muotoa range(toistot), range-funktion silmukkalaskuri "luku" saa arvot [0 .. toistot – 1]. Eli tässä esimerkissä se saa arvot 0, 1, 2, 3 ja 4:
for luku in range(5): print(luku * 10)
Silmukkalaskurin "luku" arvo kasvaa automaattisesti. Esimerkkikoodi tulostaa:
0 10 20 30 40
Kun range-funktion aloitusarvo määrätään käyttämällä muotoa range(alku, loppu), silmukkalaskuri "luku" saavuttaa arvon loppu – 1:
for luku in range(1, 6): print(luku)
tulostaa
1 2 3 4 5
Silmukkalaskurin arvoa voi kasvattaa myös isommalla askeleella muodolla range(alku, loppu, askel). Nyt silmukkalaskuri "luku" saavuttaa arvon loppu – askel.
for luku in range(100, 110, 2): print(luku)
tulostaa:
100 102 104 106 108
Arvoja voi käydä läpi myös suuremmasta pienempään. Tällöin askel on negatiivinen ja silmukkalaskuri saavuttaa arvon loppu + 1:
for luku in range(10, 5, -1): print(luku)
tulostaa
10 9 8 7 6
Silmukan sisällä voi muokata ja hyödyntää mitä tahansa muuttujia, ei pelkästään silmukkamuuttujaa:
tilavuus = 2.0 # m^3 for kierros in range(1, 6): print("Kierroksella", kierros, "tilavuus on", tilavuus, "m^3") print("Kaksinkertaistetaan tilavuus...") tilavuus = tilavuus * 2
tulostaa
Kierroksella 1 tilavuus on 2.0 m^3
Kaksinkertaistetaan tilavuus...
Kierroksella 2 tilavuus on 4.0 m^3
Kaksinkertaistetaan tilavuus...
Kierroksella 3 tilavuus on 8.0 m^3
Kaksinkertaistetaan tilavuus...
Kierroksella 4 tilavuus on 16.0 m^3
Kaksinkertaistetaan tilavuus...
Kierroksella 5 tilavuus on 32.0 m^3
Kaksinkertaistetaan tilavuus...
Sisäkkäiset silmukat
Sekä for- että while-silmukoita voi olla useampia sisäkkäin. Tässä esimerkki for-silmukalle:
for luku1 in range(1, 6): # Käytetään print-funktiossa välilyöntiä rivinvaihdon sijasta (end = " ") print("Luvun", luku1, "kertotaulu lukuun 10 asti:", end = " ") for luku2 in range(1, 11): print(luku1 * luku2, end = " ") # Tulostetaan tyhjä merkkijono, eli pelkkä rivinvaihto print("")
tulostaa:
Luvun 1 kertotaulu lukuun 10 asti: 1 2 3 4 5 6 7 8 9 10 Luvun 2 kertotaulu lukuun 10 asti: 2 4 6 8 10 12 14 16 18 20 Luvun 3 kertotaulu lukuun 10 asti: 3 6 9 12 15 18 21 24 27 30 Luvun 4 kertotaulu lukuun 10 asti: 4 8 12 16 20 24 28 32 36 40 Luvun 5 kertotaulu lukuun 10 asti: 5 10 15 20 25 30 35 40 45 50
Tulemme hyödyntämään for-silmukkaa huomattavan paljon enemmän kolmannesta kierroksesta eteenpäin, kun pääsemme käsittelemään Pythonin tietorakenteita kuten listoja ja sanakirjoja.
for-silmukasta poistuminen break-käskyllä.
for-silmukassa toistojen määrä kerrotaan silmukan alussa ja silmukasta ei yleensä poistuta kesken suorituksen. for-silmukasta voi kuitenkin poistua break-käskyllä samaan tapaan kuin while-silmukasta:
maksimi = int(input("Anna positiivinen kokonaisluku ja tulostan kaikki sitä pienemmät kokonaisluvut\n")) for luku in range(1, maksimi): print(luku) if luku == 5: print("En jaksa enempää") break
tulostaa:
Anna positiivinen kokonaisluku ja tulostan kaikki sitä pienemmät kokonaisluvut
> 11
1
2
3
4
5
En jaksa enempää
Tehtävä 1.11.1
>