Ohjelmoinnin perusteet – perustehtävät
Python perusfunktioita
Tehtävä 1. Järjestä annetut Turun kaupunginosat aakkosjärjestykseen ja tulosta ne allekkain. Turun kaupunginosat: Kupittaa, Suikkila, Uittamo, Vätti, Martti, Raunistula ja Ispoinen.
Käytä print()-komentoa.

Koodi:
print("Ispoinen")
print("Kupittaa")
print("Martti")
print("Raunistula")
print("Suikkila")
print("Uittamo")
print("Vätti")
Tuloste:
tuloste:
Ispoinen
Kupittaa
Martti
Raunistula
Suikkila
Uittamo
Vätti
Tehtävä 2. Tulosta alla oleva teksti identtisesti (rivi väli vain kappaleiden välillä) käyttämällä vain yhtä print()-komentoa.
Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.
Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!
Sill’ ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.
Voit kirjoittaa erillisen print()-komennon jokaiselle riville tai käyttää ”””-erikoismerkintää ja luoda monirivisen merkkijonon.
Tapa 1.

Koodi:
print("Sataa sataa ropisee pilipili pom, pilipili pom")
print("varpaitakin palelee, pilipili, pom-pom-pom")
print("varpaitakin palelee, pilipili pom.")
print("")
print("Sataa, sataa ropisee, pilipili pom, pilipili pom")
print("Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.")
print("Koko pieni Nalle Puh on nyt märkä, huh!")
print("")
print("Sill' ei maistu hunaja, pilipili pom, pilipili pom.")
print("Eikä myöskään vadelma, pili pili pom pom pom,")
print("eikä myöskään vadelma, pili pili pom.")
Tuloste:
Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.
Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!
Sill’ ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.
Tapa 2.

Koodi:
print("""Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.
Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!
Sill' ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.""")
Tuloste:
Sataa sataa ropisee pilipili pom, pilipili pom
varpaitakin palelee, pilipili, pom-pom-pom
varpaitakin palelee, pilipili pom.
Sataa, sataa ropisee, pilipili pom, pilipili pom
Koko pieni Nalle Puh on nyt märkä, uh-huh-huh.
Koko pieni Nalle Puh on nyt märkä, huh!
Sill’ ei maistu hunaja, pilipili pom, pilipili pom.
Eikä myöskään vadelma, pili pili pom pom pom,
eikä myöskään vadelma, pili pili pom.
Tehtävä 3. Kirjoita ohjelma, joka pyytää käyttäjältä tuntipalkka desimaalilukuna, työtunnit kokonaislukuna. Laske käyttäjän palkka ja tulosta se näytölle.
Kokeile näillä arvoilla:
Tuntipalkka on 14,75e ja työtunnit 112 tuntia.
Tuntipalkka on 27,09e ja työtunnit 30 tuntia.
Kokeile koodia halutessasi myös muilla arvoilla!
Funktiot input(), int() ja float().

Koodi:
tuntipalkka = float(input("Anna tuntipalkka: "))
työtunnit = int(input("Anna työtunnit: "))
palkka = tuntipalkka*työtunnit
print(palkka)
Tuloste esimerkki arvoilla tuntipalkka=14.75 ja työtunnit=112:
1652.0
Tuloste esimerkki arvoilla tuntipalkka=27.09 ja työtunnit=30:
812.7
Huomio! Tuloste riippuu annetuista arvoista ja siksi se vaihtelee.
Peruskomentoja
Tehtävä 4. Tutustu Pythonin matemaattisiin perusoperaattoreihin.
Tehtävä 5. Kirjoita ohjelmallisesti seuraavat laskutoimitukset ja tulosta vastaus näkyville.
a.
b.
c.

a)
Koodi:
print(32**2)
Tuloste:
1024

b)
Koodi:
print(456*678)
Tuloste:
309168

c)
Koodi:
print(7899/56)
Tuloste:
141.05357142857142
Tehtävä 6. Kirjoita ohjelmallisesti seuraavat laskutoimitukset ja tulosta vastaus näkyville:
a)
b) Kuinka monta minuuttia on vuorokaudessa?
c) Mikä on lukujen 587 ja 38 jakojäännös?

Koodi:
print(45*5**3/14)
Tuloste:
401.7857142857143

Koodi:
print(24*60)
Tuloste:
1440

Koodi:
print(587%38)
Tuloste:
17
Muuttujat ja tyypit
Tehtävä 7. Etsi sanaristikosta annetut Pythonin avainsanat.
True, False, None, and, or, not, in, is, if, elif, else, for, while, break, continue, def, class, return, lambda, yield, import, from, as, try, except, finally, raise, assert, del, global, nonlocal, with, pass async ja await.
Ei hätää näitä ei tarvitse osata ulkoa saat vastaavan listan avainsanoista alla olevalla koodilla.
import keyword
print(keyword.kwlist)
Tehtävä 8. Pyydä käyttäjältä ikä (kokonaislukuna) ja nimi. Tallenna ne muuttujiin nimi ja ikä. Tulosta näytölle muuttujien tyypit.
Kokeile näillä arvoilla:
Nimi Elli ja ikä 18 tuntia.
Nimi Elmeri ja ikä 30 tuntia.
Kokeile koodia halutessasi myös muilla arvoilla!

Koodi:
ika = int(input("Minkä ikäinen olet?: "))
nimi = input("Mikä on nimesi: ")
print(type(ika))
print(type(nimi))
Tuloste:
<class ’int’>
<class ’str’>
Huomaa! Tuloste pysyy samana vaikka syöte muuttuu.
Tehtävä 9. Vastaa sanallisesti.
- Mikä on muuttuja Python ohjelmointikielessä?
- Millaisia sääntöjä on Pythonin muuttujien nimeämisessä?
- Anna 3 esimerkkiä kelvollisesta Python muuttujan nimestä.
- Anna 3 esimerkkiä kelvottomasta Python muuttujan nimestä.
- Mitä type()-funktio palautuu Pythonissa, kun sitä kutsutaan muuttujalla?
- Miten muuttuja kannattaa nimetä?
- Muuttuja on nimetty sijainti, johon ohjelma voi tallentaa tietoa myöhempää käyttöä varten.
- Muuttujan nimi saa sisältää vain kirjaimia, numeroita ja alaviivan (_). Muuttujan nimi ei voi alkaa numerolla. Ei myöskään ole suositeltavaa käyttää ääkkösiä (ä,ö tai å).
- luku3, _vari ja varasto_3
- 3luokka, käyttäjä-nimi, class
- Funktio palauttaa oliotyypin (<class ’object’>), joka edustaa sille parametrina annetun muuttujan tai objektin luokkaa.
- Muuttujat kannattaa nimetä jollain niiden arvoa kuvaavalla nimellä.
Moduulit
Tehtävä 10. Kutsu moduuli math ja laske seuraavat laskut ohjelmallisesti.
a.
b. anna vastaus asteina
c. anna vastaus radiaaneina
d.

a.
Koodi:
import math
print(math.sqrt(56))
Tuloste:
7.483314773547883

b.
Koodi:
import math
radiaaneina = math.radians(45)
sin = math.sin(radiaaneina)
print(math.degrees(sin))
Tuloste:
40.51423422706978

c.
Koodi:
import math
print(math.acos((-1/4)*(math.sqrt(6)+math.sqrt(2))))
Tuloste:
2.8797932657906435

Koodi:
import math
print(math.e**6)
Tuloste:
403.428793492735
Tehtävä 11. Laske ohjelmallisesti seuraavat matemaattiset lausekkeet.
- Mikä on lukujen 1144, 650 ja 442 suurin yhteinen tekijä?
- Mikä on lukujen 9, 26 ja 32 pienin yhteinen monikerta?
- Laske hypotenuusan pituus, kun kateetit ovat 36 ja 89.
Jokaiseen laskuun löytyy valmis funktio math-moduulista.

a.
Koodi:
import math
print(math.gcd(1144, 650, 442))
Tuloste:
26

b.
Koodi:
import math
print(math.lcm(9, 26, 32))
Tuloste:
3744

c.
Koodi:
import math
print(math.hypot(36, 89))
Tuloste:
96.00520819205592
Tehtävä 12. Käytä Pythonin random-moduulia. Kokeile ajaa koodi muutamaan kertaan. Mitä huomaat tulosteesta.
automerkit = [”BMW”, ”Honda”, ”Kia”, ”Opel”, ”Renault”, ”Volvo”]
- Sekoita automerkit niminen lista. Tulosta alkuperäinen ja sekoitettu lista.
- Valitse satunnainen automerkki listalta.
- Luo satunnainen desimaali luku väliltä 4–5.
- Luo satunnainen kokonaisluku väliltä 50–99.
- Luo satunnainen desimaaliluku väliltä 0–1.

a.
Koodi:
import random
automerkit = ["BMW", "Honda", "Kia", "Opel", "Renault", "Volvo"]
print(automerkit)
random.shuffle(automerkit)
print(automerkit)
Tuloste:
[’BMW’, ’Honda’, ’Kia’, ’Opel’, ’Renault’, ’Volvo’]
[’Honda’, ’BMW’, ’Kia’, ’Opel’, ’Volvo’, ’Renault’]
Huomaa, että alempi eli sekoitettu lista muuttuu ajokertojen välissä!

b.
Koodi:
import random
automerkit = ["BMW", "Honda", "Kia", "Opel", "Renault", "Volvo"]
automerkki = random.choice(automerkit)
print(automerkki)
Tuloste:
Vaihtuu ajokertojen välissä esim. Volvo

c.
Koodi:
import random
desimaaliluku = random.uniform(4,5)
print(desimaaliluku)
Tuloste:
Vaihtuu ajokertojen välissä esim. Volvo

d.
Koodi:
import random
kokonaisluku = random.randint(50,99)
print(kokonaisluku)
Tuloste:
Vaihtuu ajokertojen välissä, mutta pysyy annettujen arvojen välillä esim. 78

e.
Koodi:
import random
desimaaliluku2 = random.random()
print(desimaaliluku2)
Tuloste:
Vaihtuu ajokertojen välissä, mutta pysyy arvojen 0 ja 1 välillä esim. 0.4787440625015146
Tehtävä 13. Selitä rivi riviltä, mitä koodissa tapahtuu.

import random
sana = input("anna sana: ")
tulos = 4 + 5 / 2
if len(sana) > 4:
tulos = tulos - len(sana)
else:
tulos = random.randint(0, 10)
print(tulos)
Rivi 1.
Kutsutaan käyttöön random-moduuli, jota tarvitaan myöhemmin koodissa.
Rivi 2.
Määritetään muuttuja nimeltä sana. Se pyytää käyttäjältä syötteen merkkijonon muodossa.
Rivi 3.
Määrittää muuttujan nimeltä tulos. Tulos on matemaattinen lauseke, jonka tulos on 6,5.
Rivi 4.
Ehtorakenteen ensimmäinen osa. Tarkistetaan, onko sana-muuttujan pituus suurempi kuin 4.
Rivi 5.
Toteutuu, jos rivin 4 ehto toteutuu eli sana on yli 4 merkkiä pitkä. Muuten riviä ei ajeta. Rivillä määritetään, että uusi tulos on vanha tulos miinus sanan pituus.
Rivi 6.
Ehtorakenteen toinen osa. Tässä tapauksessa se tarkoittaa kaikkia muita tapauksia, jotka eivät ole täyttänyt ensimmäistä ehtoa eli kaikki tapaukset, joissa sanan pituus on 4 tai alle.
Rivi 7.
Toteutuu, jos ensimmäinen ehto ei ole toteutunut. Toteutuessaan määrittää tuloksen arvoksi jonkin satunnaisen kokonaisluvun 0 ja 10 väliltä.
Rivi 8.
Tulostaa näkyville tuloksen lopullisen arvon.
kaikki rivit
Rivi1. Kutsutaan käyttöön random-moduuli, jota tarvitaan myöhemmin koodissa.
Rivi 2. Määritetään muuttuja nimeltä sana. Se pyytää käyttäjältä syötteen merkkijonon muodossa.
Rivi 3. Määrittää muuttujan nimeltä tulos. Tulos on matemaattinen lauseke, jonka tulos on 6,5.
Rivi 4. Ehtorakenteen ensimmäinen osa. Tarkistetaan, onko sana-muuttujan pituus suurempi kuin 4.
Rivi 5. Toteutuu, jos rivin 4 ehto toteutuu eli sana on yli 4 merkkiä pitkä. Muuten riviä ei ajeta. Rivillä määritetään, että uusi tulos on vanha tulos miinus sanan pituus.
Rivi 6. Ehtorakenteen toinen osa. Tässä tapauksessa se tarkoittaa kaikkia muita tapauksia, jotka eivät ole täyttänyt ensimmäistä ehtoa eli kaikki tapaukset, joissa sanan pituus on 4 tai alle.
Rivi 7. Toteutuu, jos ensimmäinen ehto ei ole toteutunut. Toteutuessaan määrittää tuloksen arvoksi jonkin satunnaisen kokonaisluvun 0 ja 10 väliltä.
Rivi 8. Tulostaa näkyville tuloksen lopullisen arvon.
Listat ja indeksit
Tehtävä 14. Tutustutaan listaan ja sen toimintaan.
Alla kolme erilaista dataa sisältäviä listoja:
hedelmat = [”omena”, ”päärynä”, ”appelsiini”]
numerot = [1, 3, 6, 2, 7]
totuusarvot = [True, False]
- Tulosta hedelmat-lista?
- Selvitä hedelmat-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
- Tulosta numerot-lista?
- Selvitä numerot-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
- Tulosta totuusarvot-lista?
- Selvitä totuusarvot-listan pituus käyttämällä len()-funktiota ja tulosta vastaus näkyville.
- Tulosta näkyville hedelmat-listan tyyppi käyttämällä type()-funktiota.
- Mitkä arvot saadaan, kun otetaan numerot-listan indkseillä 2 ja 4 arvot?
- Plussa tehtävä: Laske h-kohdan indeksien summa.


Koodi:
hedelmat = ["omena", "päärynä", "appelsiini"]
print(hedelmat)
Tuloste:
[’omena’, ’päärynä’, ’appelsiini’]

Koodi:
hedelmat = ["omena", "päärynä", "appelsiini"]
print(len(hedelmat))
Tuloste:
3

Koodi:
numerot = [1, 3, 6, 2, 7]
print(numerot)
Tuloste:
[1, 3, 6, 2, 7]

Koodi:
numerot = [1, 3, 6, 2, 7]
print(len(numerot))
Tuloste:
5

Koodi:
totuusarvot = [True, False]
print(totuusarvot)
Tuloste:
[True, False]
Tehtävä 15. Selitä rivi riviltä, mitä koodissa tapahtuu.

lista = [2, 4, 5, 6, 7]
tulo = 1
for luku in lista:
if luku % 2 == 0:
tulo = tulo * luku
print(tulo)
Rivi 1.
Rivillä määritetään lista, jonka nimi on lista sekä sen viisi kokonaislukuarvoa.
Rivi 2.
Määritetään muuttuja nimeltä tulo ja sen alkuarvoksi annetaan 1.
Rivi 3.
Aloittaa for-silmukan, joka käy kaikki listassa olevat alkiot läpi yksi kerrallaan ja luku-muuttuja saa yhden listan arvoista.
Rivi 4.
Ehtolause, joka tarkistaa onko luku parillinen eli onko luvun ja numeron kaksi jakojäännös nolla modulo-operaattori % avulla.
Rivi 5.
Koodi menee tälle riville vain silloin, kun luku on parillinen. Tällöin tulon aikaisempi arvo kerrotaan luvulla ja tämä tulo tallennetaan takaisin tulo-muuttujaan.
Rivi 6.
Tulostaa näkyville tulo-muuttujan lopullisen arvon.
Kaikki rivit
Rivi 1. Rivillä määritetään lista, jonka nimi on lista sekä sen viisi kokonaislukuarvoa.
Rivi 2. Määritetään muuttuja nimeltä tulo ja sen alkuarvoksi annetaan 1.
Rivi 3. Aloittaa for-silmukan, joka käy kaikki listassa olevat alkiot läpi yksi kerrallaan ja luku-muuttuja saa yhden listan arvoista.
Rivi 4. Ehtolause, joka tarkistaa onko luku parillinen eli onko luvun ja numeron kaksi jakojäännös nolla modulo-operaattori % avulla.
Rivi 5. Koodi menee tälle riville vain silloin, kun luku on parillinen. Tällöin tulon aikaisempi arvo kerrotaan luvulla ja tämä tulo tallennetaan takaisin tulo-muuttujaan.
Rivi 6. Tulostaa näkyville tulo-muuttujan lopullisen arvon.
