Funktiot – perustehtävät
Tehtävä 1. Toteuta funktiot, jotka palauttavat arvon seuraaville laskuille. Määritä lausekkeissa olevien muuttujien arvot itse (poikkeuksena c-kohta, jossa muuttujien arvot annettu valmiiksi).
a.
b.
c. toisen asteen yhtälön nollakohdat, kokeile funktiota esimerkiksi seuraavilla luvuilla , ja
d. särmiön tilavuus

Koodi:
def laske_summa(x):
return 2*x**2+6*x
print(laske_summa(2))
Tuloste:
20
Esimerkki vastaus saadaan, kun parametrin x arvoksi on annettu 2.

Koodi:
def laske_vahennys(i,j):
return i**2-j
print(laske_vahennys(45, 67))
Tuloste:
1958
Esimerkki vastaus saadaan, kun parametrin i arvo on 45 ja j:n arvo on 67.

Koodi:
import math
def toisen_asteen_yhtalo(a, b, c):
nollakohta1 = (-b+math.sqrt(b**2-4*a*c))/(2*a)
nollakohta2 = (-b-math.sqrt(b**2-4*a*c))/(2*a)
return nollakohta1, nollakohta2
print(toisen_asteen_yhtalo(8, 2, -3))
Tuloste:
(0.5, -0.75)

Koodi:
def sarmion_tilavuus(pituus, leveys, korkeus):
tilavuus = pituus*leveys*korkeus
return tilavuus
print(sarmion_tilavuus(3, 4, 6))
Tuloste:
72
Esimerkki vastaus saadaan, kun seuraavat parametrit saavat seuraavat arvot: pituus on 3, leveys 4 ja korkeus on 6.
Tehtävä 2. Toteuta funktio, joka tulostaa näkyville neliön, kun sille annetaan merkki ja koko parametreinä. Päätä itse merkki ja koko.
Esimerkki syöte:
merkki on *
koko on 3
Esimerkki tuloste:
***
***
***

Koodi:
def toteuta_nelio(merkki, koko):
i = 0
while i<koko:
i = i+1
rivi = merkki*koko
print(rivi)
toteuta_nelio("+", 3)
Tuloste:
+++
+++
+++
Esimerkki vastaus saadaan, kun parametreille on annettu seuraavat arvot: merkki = + ja koko = 3.
Tehtävä 3. Toteuta seuraavat aikaan liittyvät funktiot. Kokeile haluamillasi arvoilla.
- funktio, joka palauttaa tunnit minuutteina
- funktio, joka palauttaa tunnit sekunteina
- funktio, joka palauttaa sekunnit tunteina ja minuutteina

Koodi:
def tunnit_minuuteiksi(tunnit):
return int(tunnit*60)
print(tunnit_minuuteiksi(4.5))
Tuloste:
270
Esimerkki vastaus saadaan, kun parametrin tunnit arvoksi on määritetty 4.5.

Koodi:
def tunnit_sekunteiksi(tunti):
return int(tunti*3600)
tunnit_sekunteiksi(4.5)
Tuloste:
16200
Esimerkki vastaus saadaan, kun parametrin tunnit arvoksi on määritetty 4.5.

Koodi:
def sekuntit_h_ja_min(sekunti):
tunti = sekunti//3600
minuutti = sekunti%3600//60
palautus = str(tunti)+"h "+str(minuutti)+"min"
return palautus
sekuntit_h_ja_min(22500)
Tuloste:
”6h 15min”
Esimerkki vastaus saadaan, kun parametrin sekunti arvoksi on määritetty 22500.
Tehtävä 4. Toteuta funktio, joka etsii ja palauttaa listalla olevan suurimman luvun, kun listalla on vain numeroita. Voit käyttää testaamiseen annettua listaa (luvut) tai luoda oman listan.
luvut = [3, 3, 4, 5, 6, 7, 7, 7, 99, 76, 4, 0, 433, 433, 777]

Koodi:
luvut = [3, 3, 4, 5, 6, 7, 7, 7, 99, 76, 4, 0, 433, 777, 433]
def suurin_arvo_listassa(lista):
sailo = 0
for i in lista:
if i >= sailo:
sailo = i
return sailo
print(suurin_arvo_listassa(luvut))
Tuloste:
777
Tehtävä 5. Toteuta funktio, joka laskee ja palauttaa arvosanojen keskiarvon, kun arvosanat on annettu listana. Esimerkki listaa arvot tai luoda itse listan arvosanoista.
arvosanat = [5,5,7,8,8,8,9,9,10,10]

Koodi:
def selvita_keskiarvo(todistus):
summa = 0
arvos_maara = len(todistus)
for numero in todistus:
summa = summa + numero
keskiarvo = summa/arvos_maara
return keskiarvo
print(selvita_keskiarvo([5,5,7,8,8,8,9,9,10,10]))
Tuloste:
7.9
Vastauksen saamiseksi on käytetty esimerkkinä olevaa listaa.
Tehtävä 6. Ratkaise seuraavat kongruenssiin liittyvät tehtävät python funktioiden avulla. Kokeile ainakin annettujen lausekkeiden kanssa, mutta on suositeltavaa kokeilla myös muita.
1. Selvitä, mikä on pienin luonnollinen luku, jonka kanssa annettu luku on kongruentti, kun modulo on määritetty. Palauta funktiosta luku. Esimerkiksi:
a. Luvun 10 kanssa, kun modulo on 6
b. Luvun -53 kanssa, kun modulo on 3
2. Selvitä, onko annettu lauseke kongruentti. Palauta True, jos lauseke on totta ja False, kun lauseke on epätosi. Esimerkiksi:
a.
b.
c.
3. Luettele neljä kokonaislukua (ainakin yksi negatiivinen luku), jotka on kongruentti annetun luvun kanssa, kun modulo on määritetty. Esimerkiksi:
a. Luvun 10 kanssa, kun modulo on 4.
b. Luvun 2 kanssa, kun modulo on 8.
Huomaa! sama funktio toimii a ja b kohdissa vain funktion kutsussa annettavat arvot muuttuvat.

a.
Koodi:
def etsi_pienin_kongruentti(a, n):
jakojaannos = a % n
return jakojaannos
print(etsi_pienin_kongruentti(10, 6))
Tuloste:
4

b.
Koodi:
def etsi_pienin_kongruentti(a, n):
jakojaannos = a % n
return jakojaannos
print(etsi_pienin_kongruentti(-53, 3))
Tuloste:
1
Huomaa! sama funktio toimii a, b ja c kohdissa vain funktion kutsussa annettavat arvot muuttuvat.

a.
Koodi:
def onko_kongruentti(a, b, n):
erotus = a - b
if erotus % n == 0:
return True
else:
return False
print(onko_kongruentti(39, 3, 12))
Tuloste:
True

b.
Koodi:
def onko_kongruentti(a, b, n):
erotus = a - b
if erotus % n == 0:
return True
else:
return False
print(onko_kongruentti(28, 4, 3))
Tuloste:
True

c.
Koodi:
def onko_kongruentti(a, b, n):
erotus = a - b
if erotus % n == 0:
return True
else:
return False
print(onko_kongruentti(31, 6, 7))
Tuloste:
False
Huomaa! sama funktio toimii a ja b kohdissa vain funktion kutsussa annettavat arvot muuttuvat. Parametrin q arvoksi voi laittaa, minkä tahansa kokonaisluvun esimerkeissä käytetty lukuja 4,5,6 ja -6.

a.
Koodi:
def etsi_kongruentti_luku(a, n, q):
b = a + n * q
return b
print(etsi_kongruentti_luku(10, 4, 4))
print(etsi_kongruentti_luku(10, 4, 5))
print(etsi_kongruentti_luku(10, 4, 6))
print(etsi_kongruentti_luku(10, 4,-6))
Tuloste:
26
30
34
-14

b.
Koodi:
def etsi_kongruentti_luku(a, n, q):
b = a + n * q
return b
print(etsi_kongruentti_luku(2, 8, 4))
print(etsi_kongruentti_luku(2, 8, 5))
print(etsi_kongruentti_luku(2, 8, 6))
print(etsi_kongruentti_luku(2, 8, -6))
Tuloste:
34
42
50
-46
