Ohjelmoinnin perusteet – helpot tehtävät
Python perusfunktioita
Tehtävä 1. Tulosta identtisesti näytölle seuraava teksti: Tervetuloa, MAA 11 kurssille!

Koodi:
print("Tervetuloa, MAA 11 kurssille!")
Tuloste:
Tervetuloa, MAA 11 kurssille!
Tehtävä 2. Tutki alla olevaa koodia. Mikä virhe koodissa on ja miten saat korjattua sen?
print(float("3,3"))
Ongelmana on pilkku (,), koska Python ei tunnista sitä desimaalierottimena. Python käyttää kansainvälisen standardin mukaan pistettä (.) desimaalierottimena.
Korjattu koodi:
print(float("3.3"))
Tehtävä 3. Yhdistä funktiot ja niiden selitteet.
Python peruskomentoja
Tehtävä 4. Suorita alla oleva ohjelma. Miksi rivien 1 ja 2 komentojen tulosteet ovat erilaiset?

print(”2-1”)
print(2-1)
print(”2 – 1 =”, 2-1)
Pohdi sulkeiden sisällä olevan tiedon tyyppiä.

Rivien 1 ja kaksi tulosteet ovat erilaiset, koska rivin 1 koodi on merkkijono. Rivin 2 koodi on laskutoimitus, joka toteutetaan Pythonin aritmeettisen operaattorin avulla.
Tehtävä 5. Järjestä seuraavat koodin osat ja aja koodi. Selitä vastaus, mistä matemaattisesta laskusta on kyse.
- print, ), 2, (, *, 3
- (, print, ), //, 3,7
- 2, 5, -, ), (, print

a.
Koodi:
print(2*3)
Tuloste:
6
Perustelu: Kyseessä on kertolasku.

b.
Koodi:
print(7//3)
tai
print(3//7)
Tuloste:
2
tai
0
Perustelu: Kyseessä on jakolasku eli osamäärä. Vastaukseksi tulee kokonaisluku, joka on katkaistu desimaalipilkun kohdalta. (Vertaa pelkästään yhdellä jakoviivalla jakoon (7/3 tai 3/7).)

c.
Koodi:
print(2-5)
tai
print(5-2)
Tuloste:
-3
tai
3
Perustelu: Kyseessä on vähennyslasku eli lukujen erotus.
Tehtävä 6. Jatka alla olevaa koodia ja laske annetut laskut, kun a on 5 ja b on 2.
Koodin alku:
#muuttujat
a=5
b=2
- a:n ja b:n summa
- a:n ja b:n tulo
- a jaettuna b:llä, jakojäännös
- a potenssiin b
Voit kirjoittaa muuttujan nimen numeron sijaan esimerkiksi 5-2=a-b=3

a.
Koodi:
#muuttujat
a=5
b=2
print(a+b)
Tuloste:
7

b.
Koodi:
#muuttujat
a=5
b=2
print(a*b)
#tai
print(b*a)
Tuloste:
10
10

c.
Koodi:
#muuttujat
a=5
b=2
print(a%b)
#tai
print(b%a)
Tuloste:
1
2

d.
Koodi:
#muuttujat
a=5
b=2
print(a**b)
#tai
print(b**a)
Tuloste:
25
32
Muuttujat ja tyypit
Muuttujan nimeämisen säännöt
- Muuttuja voi sisältää kirjaimia, numeroita ja alaviivoja (_).
- Muuttuja nimessä ei suositella käytettäväksi ääkkösiä (ä, ö, å).
- Muuttuja nimi ei voi alkaa numerolla.
- Muuttuja nimenä ei voi käyttää Pythonin varattuja sanoja.
Voit tarkistaa varatut sanat seuraavalla koodilla:
import keyword
print(keyword.kwlist)
Tehtävä 7. Onko annettu muuttuja Pythonin sääntöjen mukainen? Perustele vastauksesi.
- 3luku = 3
- Taulukko3 = [3, 3, 2, 4]
- Kissaj@Koira = “Kissaj@Koira”
- huone_numero_2 = True
- Linja-auto = “myöhässä”
- _vari = “vihreä”
- class = “str”
- Väärin, koska numero ei voi aloittaa muuttujan nimeä.
- Oikein
- Väärin, koska muuttujan nimi ei voi sisältää @-merkkiä. Sillä vain muuttujan nimi voi sisältää vain kirjaimia, numeroita ja alaviivoja (_).
- Oikein
- Väärin, sillä vain muuttujan nimi voi sisältää vain kirjaimia, numeroita ja alaviivoja (_).
- Oikein
- Väärin, koska class on varattu avainsana.
Tehtävä 8. Selvitä alla olevien muuttujien tyypit type()-komennon avulla.
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(a))
Tuloste:
<class ’int’>

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(b))
Tuloste:
<class ’float’>

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(c))
Tuloste:
<class ’str’>

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(d))
Tuloste:
<class ’list’>

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(e))
Tuloste:
<class ’dict’>

Koodi:
#muuttujat
a = 42
b = 3.14
c = "Hei, opiskelija!"
d = [1, 2, 3]
e = {'avain': 'arvo'}
f = True
print(type(f))
Tuloste:
<class ’bool’>
Moduulit
Tehtävä 9. Kutsu math-moduuli.
Moduulit kutsutaan import avulla -> import + moduulin nimi.
Esimerkiksi import random
Ajattele moduleja kirjastona. Lainaat valmiita fuktioita omaan koodiisi.
import math
Tehtävä 10. Kutsu moduuli math ja aja kohtien 1, 3 ja 5 komennot ja tulosta vastaus näkyville. Vastaa 2, 4 ja 6 kohdan kysymyksiin.
1. math.sqrt(2)
2. Mitä matemaattista laskua a-kohta kuvaa?
a)
b)
c)
3. math.cos(-1)
4. Mitä matemaattista laskua b-kohta kuvaa?
a)
b)
c)
5. math.e**3
6. Mitä matemaattista laskua c-kohta kuvaa?
a)
b)
c)

1.
Koodi:
import math
math.sqrt(2)
Tuloste:
1.4142135623730951
2. Oikea vastaus on a-kohta.

3.
Koodi:
import math
math.cos(-1)
Tuloste:
0.5403023058681398
4. Oikea vastaus on b-kohta.

5.
Koodi:
import math
math.e**3
Tuloste:
20.085536923187664
6. Oikea vastaus on b-kohta.
Tehtävä 11. Tutusturandom-moduuliin. Tämän moduulin avulla pystyt tuottamaan satunnaisia numeroita. Pohdi ja perustele ovatko seuraavat esimerkit satunnaisia tuloksia vai pystyykö vastauksen ennustamaan.
- Nopan heitto.
- Korttipakka sekoitetaan ja pakan päällimmäinen kortti nostetaan.
- Linja-auto saapuu pysäkille aikataulussa.
- Matemaattinen laskutoimitus.
- Karkkipussista otetaan karkki silmät kiinni.
- Korttipakka on järjestyksessä ja nostetaan päällimmäinen kortti.
- Satunnainen, koska tulos vaihtelee.
- Satunnainen, koska korttien järjestys vaihtelee.
- Ennustettava, koska linja-auton saapumisaika tiedetään ja sama toistuu.
- Ennustettava, koska esimerkiksi 3+2 tulos on aina 5.
- Satunnainen, koska karkki otetaan näkemättä.
- Ennustettava, koska pakan järjestys tiedetään.
Tehtävä 12.1. Täytä tyhjät kohdat oikealla random funktiolla.
Tehtävä 12.2. Kutsu random-moduuli ja aja koodit useampaan kertaan. Mitä huomaat?
a. Nopan heitto.
print(random.randint(1,6))
b. Sekoitettu korttipakka ja nostetaan päällimmäinen kortti.
#määritetään korttipakassa olevat maat ja niiden arvot
maat = ["pata", "ässä", "hertta", "ruutu"]
arvot = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
pakka = []
#Yhdistetään maat ja arvot -> luodaan järjestyksessä oleva korttipakka
for arvo in arvot:
for maa in maat:
pakka.append(arvo+maa)
#Sekoitetaan korttipakka
random.shuffle(pakka)
#Nostetaan yksittäinen kortti sekoitetusta pakasta ja tulostetaan kortti
kortti = random.choice(pakka)
print(kortti)
c. Otetaan karkki silmät kiinni.
karkkipussi = ["punainen", "sininen", "vihreä", "keltainen"]
karkki = random.choice(karkkipussi)
print(karkki)
Ohjelman tuloste muuttuu jokaisella suorituskerralla, koska random‑moduuli tuottaa satunnaisia arvoja.
Listat ja indeksit
Tehtävä 13. Tutustu Pythonin indekseihin. Vastaa annettuihin kysymyksiin.

- Mikä arvo(t) saadaan, kun indeksi on [4]?
- Mikä arvo(t) saadaan, kun indeksi on [2:6]?
- Mikä arvo(t) saadaan, kun indeksi on [7:]?
- Mikä arvo(t) saadaan, kun indeksi on [:2]?
- Mikä arvo(t) saadaan, kun indeksi on [-2]?
Voit käyttää apuna alla olevaa Python koodia.
sana = "opiskelija"
print(sana[indeksi])
- k
- iske
- ija
- op
- j
Tehtävä 14.1. Valitse oikea komento, jotta tuloste toteutuu.
lista = [”kahvi”, False, 100, ”maito”, 2.5 , ”mehu”]

a. Tulosteeksi tulee: maito
a) lista[4]
b) lista[3]
c) lista(5)
b. Tulosteeksi tulee: [’kahvi’, ’mehu’]
a) lista[0]
b) lista[0:5]
c) lista[0::5]
c. Tulosteeksi tulee:
a) len(lista[100])
b) type(lista)
c) type(lista[2])
d. Tulosteeksi tulee: 0.0
a) int(lista[1])
b) float(lista[1])
c) lista[1]
e. Tulosteeksi tulee: -97.5
a) lista[summa]
b) lista[2]-lista[4]
c) lista[4]-lista[2]
f. Tulosteeksi tulee: 6
a) len(lista)
b) lista[2]/lista[4]
c) type(lista)
- b) lista[3]
- c) lista[0::5]
- c) type(lista[2])
- b) float(lista[1])
- c) lista[4]-lista[2]
- a) len(lista)
Tehtävä 14.2. Valitse oikea tuloste, joka vastaa komentoa.
lista = [”kahvi”, False, 100, ”maito”, 2.5 , ”mehu”]

elaimet = [”norsu”, ”apina”, ”leijona”, ”kirahvi”, ”seepra”, ”leopardi”]

a. lista.append(“OK”)
a) [’kahvi’, False, 100, ’maito’, 2.5, ’mehu’, ’OK’]
b) [’OK’, ’kahvi’, False, 100, ’maito’, 2.5, ’mehu’]
c) [’kahvi’, False, 100, ’OK’, ’maito’, 2.5, ’mehu’]
b. lista.pop(1)
a) [’False’, 100, ’maito’, 2.5, ’mehu’]
b) [’kahvi’, 100, ’maito’, 2.5, ’mehu’]
c) [False , 100, ’maito’, 2.5, ’mehu’]
c. lista.remove(”maito”)
a) [’kahvi’, False, 100, 2.5, ’mehu’]
b) [’kahvi’, False, 100, 2.5, ’mehu’, ’maito’]
c) [’maito’, ’kahvi’, False, 100, 2.5, ’mehu’]
d. lista.sort()
a) TypeError
b) SyntaxError
c) NameError
e. elaimet.sort()
a) [’apina’, ’kirahvi’, ’leijona’, ’leopardi’, ’norsu’, ’seepra’]
b) [”norsu”, ”apina”, ”leijona”, ”kirahvi”, ”seepra”, ”leopardi”]
c) [’leijona’, ’leopardi’, ’apina’, ’kirahvi’, ’norsu’, ’seepra’]
- a) [’kahvi’, False, 100, ’maito’, 2.5, ’mehu’, ’OK’]
- b) [’kahvi’, 100, ’maito’, 2.5, ’mehu’]
- a) [’kahvi’, False, 100, 2.5, ’mehu’]
- a) TypeError
- a) [’apina’, ’kirahvi’, ’leijona’, ’leopardi’, ’norsu’, ’seepra’]
