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. 2x2+6x 2x^2+6x
b. 𝑖2𝑗 𝑖^2−𝑗
c. toisen asteen yhtälön nollakohdat, kokeile funktiota esimerkiksi seuraavilla luvuilla a=8a = 8, b=2b = 2 ja c=3c = -3
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.

  1. funktio, joka palauttaa tunnit minuutteina
  2. funktio, joka palauttaa tunnit sekunteina
  3. 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. 39  3 (mod 12)39\ \equiv\ 3\ \left(mod\ 12\right)
b. 28  4 (mod 3)28\ \equiv\ 4\ \left(mod\ 3\right)
c. 31  6 (mod 7)31\ \equiv\ 6\ \left(mod\ 7\right)


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