Funktiot


Tehtävä 1: Funktioiden hyödyntäminen

Alla olevassa esimerkkikoodissa kaikki toiminta on kirjoitettu pääohjelmaan. Luo kommentoitujen ohjeiden mukaisesti apufunktioita ja kuljeta niille pääohjelmassa luodut muuttujat. Lopulta kutsut pääohjelmasta tekemiäsi apufunktioita ja tulostat palautuksen.

          def main():
    # Tarkistetaan, kumpi on alkiosta suurempi
    # Tee tästä oma funktio nimeltä suurempi()
    a = 12
    b = 34
    if a > b:
        suurempi = a
    else:
        suurempi = b
    print(suurempi)

    # Lasketaan listan luvut yhteen
    # Tee tästä oma funktio nimeltä laskeListanSumma()
    lista = [2, 45, 61, 21, 40, 19, 32]
    summa = 0
    for alkio in lista:
        summa += alkio
    
    print(summa)

    # Lasketaan merkkijonosta isojen ja pienien kirjainten määrä
    # Tee tästä kaksi omaa funktiota nimeltä laskePienet() ja laskeIsot() 
    merkkijono = "Garry Kasparov voitti Speed Chess Championship Main Eventin"
    pienet = 0
    isot = 0
    for kirjain in merkkijono:
        if kirjain.isupper() == True:
            isot += 1
        elif kirjain.islower() == True:
            pienet += 1
        else:
            continue

    print("Isoja kirjaimia: " + str(isot))
    print("Pieniä kirjaimia: " + str(pienet))
    
        
if __name__ == "__main__":
    main()
        
          # Funktio, joka ottaa vastaan kaksi lukua ja palauttaa niistä suuremman
def suurempi(eka, toka):
    if eka > toka:
        return eka
    else:
        return toka

# Funktio, joka laskee listan alkiot yhteen ja palauttaa summan
def laskeListanSumma(l):
    summa = 0
    for alkio in l:
        summa += alkio

    return summa

# Funktio, joka ottaa vastaan merkkijonon, laskee isot kirjaimet
# ja palauttaa lukumäärän
def laskePienet(mj):
    pienet = 0
    for kirjain in mj:
        if kirjain.islower() == True:
            pienet += 1
        else:
            continue
    
    return pienet

# Funktio, joka ottaa vastaan merkkijonon, laskee isot kirjaimet
# ja palauttaa lukumäärän
def laskeIsot(mj):
    isot = 0
    for kirjain in mj:
        if kirjain.isupper() == True:
            isot += 1
        else:
            continue
    return isot



def main():
    a = 12
    b = 34

    vastaus = suurempi(a, b)
    print(vastaus) # Voi myös kirjoittaa suoraan print(suurempi(a, b))

    lista = [2, 45, 61, 21, 40, 19, 32]
    summa = laskeListanSumma(lista)
    print(summa)

    merkkijono = "Garry Kasparov voitti Speed Chess Championship Main Eventin"
    # Otetaan tulos funktiolta
    pienet = laskePienet(merkkijono)
    isot = laskeIsot(merkkijono)

    # Tulostetaan kivan näköisesti ja muutetaan int-tyyppinen muuttuja tulostuskelpoiseksi
    # str()-funktiolla
    print("Isoja kirjaimia: " + str(isot))
    print("Pieniä kirjaimia: " + str(pienet))
    
        
if __name__ == "__main__":
    main()
        

Tehtävä 2: Noppapeli

Tarkoituksenasi on koodata ohjelma, joka heittää noppaa eli generoi satunnaisen luvun välillä 1-6. Jotta noppapeli on järkevä, on käyttäjältä kysyttävä jokaisen heiton jälkeen haluaako käyttäjä heittää noppaa uudelleen.

Vinkki: input() ja import random

          # Tuodaan random-moduuli satunnaisuutta varten
import random

def main():
    # onkoNoppaKaynnissa muuttuja pitää tallessa sitä, haluaako
    # käyttäjä pelata noppapeliä
    onkoNoppaKaynnissa = True
    # Hyödynnetään while-silmukkaa sillä emme tiedä, kuinka kauan
    # käyttäjä haluaa pelata
    while onkoNoppaKaynnissa:
        pelataanko = input("Heitetäänkö noppaa? (y/n): ") # Kysytään haluaako käyttäjä pelata
        if pelataanko == "y": # Jos kyllä,
            rndm_numero = random.randint(1,6) # niin generoidaan satunnainen luku välillä 1-6
            print(rndm_numero) # Tulostetaan luku käyttäjälle
        elif pelataanko == "n": # Jos ei,
            print("Kiitos pelihetkistä!") # niin tulostetaan "Kiitos pelihetkistä!"
            onkoNoppaKaynnissa = False # Ja lopetetaan silmukka ja koko ohjelma, sillä muuta suoritettavaa ei ole
        else:
            print("Nyt en ymmärrä? vastaa \"y\" tai \"n\"") # Varaudutaan myös huonolaatuiseen syötteeseen
    
        
if __name__ == "__main__":
    main()
        

Tehtävä 3: Nelilaskin

Noniin, materiaalin viimeinen tehtävä. Tarkoituksenasi on luoda nelilaskin. Ohjelma kyselee käyttäjän syötettä ja syötteen mukaan osaa laskea yhteen-, vähennys-, kerto- ja jakolaskuja. Myös tämä ohjelma toimii siihen asti, kunnes käyttäjä päättää lopettaa laskimen käytön. HUOM! tässä tehtävässä saat toimia vapaammin, kunhan ohjelma sisältää tässä tehtävänannossa ilmoitetun toiminnan. Eli:

          # Tuodaan random-moduuli satunnaisuutta varten
import random

def summa(a, b):
    summa = int(a) + int(b)
    return summa

def miinus(a, b):
    erotus = int(a)-int(b)
    return erotus

def kerto(a, b):
    tulo = int(a)*int(b)
    return tulo

def jako(a, b):
    osamaara = int(a)/int(b)
    return osamaara

def main():
    onkoOhjelmaKaynnissa = True
    print("Tervetuloa käyttämään nelilaskinta! Osaan laskea yhteen-, vähennys-, kerto- ja jakolaskuja kahdella luvulla.")
    
    while onkoOhjelmaKaynnissa:
        syote = input("Millaisen laskutoimituksen haluat tehdä? Kirjoita \"info\", jos tarvitset apua!")
        if syote == "info":
            print("""Ilmoita aluksi millaisen laskutoimituksen haluat suorittaa:
            - "y" = yhteenlasku
            - "v" = vähennyslasku
            - "k" = kertolasku
            - "j" = jakolasku
            - "info" = infoa ohjelman toiminnasta
            - "q" = poistu ohjelmasta""")
        
        elif syote == "y": 
            print("Valitsit yhteenlaskun!")
            eka = input("Anna ensimmäinen yhteenlaskettava luku: ")
            toka = input("Anna ensimmäinen yhteenlaskettava luku: ")
            print(summa(eka, toka))
        elif syote == "v":
            eka = input("Anna ensimmäinen luku, josta vähennetään: ")
            toka = input("Anna toinen luku, joka vähennetään: ")
            print(miinus(eka, toka))
        elif syote == "k":
            eka = input("Anna ensimmäinen kerrottava luku: ")
            toka = input("Anna toinen kerrottava luku: ")
            print(kerto(eka, toka))
        elif syote == "j":
            eka = input("Anna ensimmäinen, jaettava luku: ")
            toka = input("Anna toinen, jakava luku (tämä ei saa olla 0!!): ")
            if toka == 0:
                print("Annoit silti nollan...")
                continue
            else:
                print(jako(eka, toka))
        else:
            print("Nyt en ymmärrä? Kirjoita \"info\", jos tarvitset apua.") # Varaudutaan myös huonolaatuiseen syötteeseen
    
        
if __name__ == "__main__":
    main()