Tie koodariksi

MAA11 Algoritmit ja lukuteoria

Kieli:

Johdanto Pythoniin, osa 2

For-silmukka

For-silmukka käy läpi tietyn lukuvälin luvut muuttujan avulla. Esimerkiksi seuraava koodi tulostaa luvut 1–5:
for i in range(1,6):
    print(i)
Tässä muuttuja i sisältää käsiteltävän luvun. Silmukan sisällä oleva koodi tulostaa muuttujan i arvon print-komennolla. Silmukan sisällä oleva koodi tulee sisentää, mikä onnistuu tarvittaessa tab-näppäimellä.

Ohjelma tuottaa seuraavan tulostuksen:

1
2
3
4
5
Huomaa, että silmukassa annetaan halutun lukuvälin ensimmäinen luku ja viimeisen luvun jälkeinen luku (eli lukuväli annetaan puoliavoimena).

Tehtävä 1 Ratkaisematon

Tee ohjelma, joka tulostaa silmukan avulla luvut 3–9:

Kirjoita ohjelma tähän:


Lisää for-silmukasta

For-silmukan muuttujaa voidaan käyttää laskuissa. Esimerkiksi seuraava silmukka tulostaa parillisia lukuja:
for i in range(1,6):
    print(2*i)
Ohjelma tuottaa seuraavan tulostuksen:
2
4
6
8
10
Seuraava silmukka puolestaan tulostaa lukuja suurimmasta pienimpään:
for i in range(1,6):
    print(10-i)
Ohjelma tuottaa seuraavan tulostuksen:
9
8
7
6
5

Tehtävä 2 Ratkaisematon

Tee ohjelma, joka tulostaa silmukan avulla parilliset luvut 4–14.

Kirjoita ohjelma tähän:


Tehtävä 3 Ratkaisematon

Tee ohjelma, joka tulostaa silmukan avulla luvut 8–4 suurimmasta pienimpään.

Kirjoita ohjelma tähän:


Summan laskeminen

Seuraava ohjelma laskee summan 1+2+3+...+100:
s = 0
for i in range(1,101):
    s += i
print(s)
Ohjelma luo alussa muuttujan s, jonka arvo on 0. Tämän jälkeen silmukassa ohjelma lisää muuttujan s arvoon muuttujan i arvon. Silmukan jälkeen ohjelma tulostaa muuttujan s arvon.

Ohjelma tuottaa seuraavan tuloksen:

5050
Huomaa, että s += i tarkoittaa samaa kuin s = s+i.

Tehtävä 4 Ratkaisematon

Tee ohjelma, joka laskee summan 1+2+3+...+1000. Ohjelman tulee tulostaa vain vastaus.

Kirjoita ohjelma tähän:


Tehtävä 5 Ratkaisematon

Tee ohjelma, joka laskee parillisten lukujen summan 2+4+6+...+1000. Ohjelman tulee tulostaa vain vastaus.

Kirjoita ohjelma tähän:


Tehtävä 6 Ratkaisematon

Tee ohjelma, joka laskee summan 12+22+...+1002. Ohjelman tulee tulostaa vain vastaus.

Kirjoita ohjelma tähän:


Ehtolause

Ehtolause suorittaa koodin tietyssä tilanteessa. Esimerkiksi seuraava koodi tulostaa rivin "parillinen", jos muuttujan x arvo on parillinen:
if x%2 == 0:
    print("parillinen")
Seuraava koodi puolestaan tulostaa "parillinen" tai "pariton" muuttujan x arvon mukaan:
if x%2 == 0:
    print("parillinen")
else:
    print("pariton")
Ehdoissa voidaan käyttää seuraavia vertailuja:
vertailuselitys
==yhtä suuri
!=eri suuri
<pienempi
<=pienempi tai yhtä suuri
>suurempi
>=suurempi tai yhtä suuri
Lisäksi ehtoja voidaan yhdistää sanoilla and (molemmat ehdot pätevät) ja or (ainakin toinen ehto pätee).

Ehdot ja silmukat

Ehdon avulla silmukassa voidaan karsia käsiteltäviä lukuja. Esimerkiksi seuravaa ohjelma tulostaa välin 1–20 luvut, jotka ovat jaollisia 3:lla:
for i in range(1,21):
    if i%3 == 0:
        print(i)
Ohjelma tuottaa seuraavan tuloksen:
3
6
9
12
15
18
Seuraava ohjelma puolestaan tulostaa välin 1–20 luvut, jotka ovat jaollisia 3:lla tai 5:llä:
for i in range(1,21):
    if i%3 == 0 or i%5 == 0:
        print(i)
Ohjelma tuottaa seuraavan tuloksen:
3
5
6
9
10
12
15
18
20

Tehtävä 7 Ratkaisematon

Tee ohjelma, joka tulostaa silmukan avulla välin 1–50 luvut, jotka ovat jaollisia 7:llä.

Kirjoita ohjelma tähän:


Tehtävä 8 Ratkaisematon

Tee ohjelma, joka tulostaa silmukan avulla välin 1–50 luvut, jotka ovat jaollisia 4:llä ja 6:lla.

Kirjoita ohjelma tähän:


Silmukan sisällä

Silmukan sisällä voi olla mitä tahansa koodia, myös useita komentoja. Esimerkiksi seuraava koodi tulostaa jokaisen luvun kahdesti:
for i in range(1,6):
    print(i)
    print(i)
Ohjelman tulostus on seuraava:
1
1
2
2
3
3
4
4
5
5
Seuraava koodi puolestaan tulostaa "lomittain" luvut 1–5 ja 6–10:
for i in range(1,6):
    print(i)
    print(i+5)
Ohjelman tulostus on seuraava:
1
6
2
7
3
8
4
9
5
10

Tehtävä 9 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1–100 seuraavassa järjestyksessä:
1
100
2
99
3
98
...
50
51

Kirjoita ohjelma tähän:


Tehtävä 10 Ratkaisematon

Tee ohjelma, joka tulostaa luvut 1–100 seuraavassa järjestyksessä:
2
1
4
3
6
5
...
100
99

Kirjoita ohjelma tähän:


Lisää silmukoista

Tehdään seuraavaksi silmukka, joka tulostaa vuorotellen lukuja 1 ja 2. Yksi mahdollisuus on tarkastaa, onko silmukan muuttuja parillinen vai pariton ja tulostaa sen mukaan 1 tai 2:
for i in range(1,11):
    if i%2 == 1:
        print(1)
    else:
        print(2)
Ohjelman tulostus on seuraava:
1
2
1
2
1
2
1
2
1
2
Toinen tapa on käyttää apumuuttujaa, jossa on seuraavaksi tulostettava luku. Seuraavassa koodissa apumuuttujan nimi on a ja sen sisältönä on aluksi 1. Jokaisen tulostuksen jälkeen muuttujan uusi arvo lasketaan kaavalla 3-a.
a = 1
for i in range(1,11):
    print(a)
    a = 3-a
Ohjelman tulostus on seuraava:
1
2
1
2
1
2
1
2
1
2
Seuraavaksi on kaksi vaikeampaa tehtävää, joiden avulla voit harjoitella lisää silmukoiden käyttämistä.

Tehtävä 11 Ratkaisematon

Tee ohjelma, joka tulostaa 30 ensimmäistä Fibonaccin lukua seuraavasti:
1
1
2
3
5
8
13
21
34
55
...

Kirjoita ohjelma tähän:


Tehtävä 12 Ratkaisematon

Tee ohjelma, joka tulostaa seuraavan lukujonon lukuun 10 asti:
1
2
2
3
3
3
4
4
4
4
...

Kirjoita ohjelma tähän: