25. maaliskuuta 2026

Palataan Python-ohjelmoinnin pariin: moduulit ja funktiot

Johdantotehtävä

Kopioi alla oleva koodi Trinket.io:hon ja tutustu sekä ohjelman toimintaan että koodiin.

Joutunet asettamaan sisennykset kohdalleen, mikä on erittäin tarkoituksenmukaista harjoittelua koodin rakenteen hahmottamiseksi!

Vastaa mielessäsi seuraaviin kysymyksiin:
  • Mitä ohjelma tekee?
  • Mitä koodissa tarkoittaa
    • while True:
    • break
    • try - except -rakenne
  • Jollet ymmärrä, saat kysyä tekoälyltä selitystä.
  • Ja vaikka ymmärtäisitkin, voit kysyä tekoälyltä syvennystä asioihin.

print "Lasketaan kahden luvun tulo."
print "Laskeminen jatkuu niin kauan kuin kumpikaan luvuista ei ole nolla.\n"
while True:
# Kysy luku1 kunnes syöte on kunnollinen
while True:
try:
luku1 = int(raw_input("Anna ensimmäinen kokonaisluku: "))
break
except:
print "Syöte ei kelpaa. Anna kokonaisluku!"
# Kysy luku2 kunnes syöte on kunnollinen
while True:
try:
luku2 = int(raw_input("Anna toinen kokonaisluku: "))
break
except:
print "Syöte ei kelpaa. Anna kokonaisluku!"
# Tarkistus: lopetetaanko?
if luku1 == 0 or luku2 == 0:
print "Annoit nollan, joten hypätään silmukasta pois."
break
print "Lukujen tulo on", luku1 * luku2
print ""
print "Ohjelman suoritus loppui."


Malli moduulista ja funktiosta


Tutustu seuraavaan esimerkkiin:


main.py:
import taksat

print "Tässä ohjelmassa lasketaan taksimatkan hinta."
print "Hinta muodostuu perusmaksusta sekä kilometrikustannuksesta."
matkanPituus = float(input("Anna matkan pituus kilometreinä."))
print "Matkan hinta on", taksat.laskeMatkanHinta(matkanPituus), "euroa."

taksat.py:
def laskeMatkanHinta(matkanPituus):
return 1.39 * matkanPituus + 6.0


Harjoitustehtävä: tee lisää funktioita omiin moduuleihinsa

Moduulien ja funktioiden avulla laajempaa ohjelmistokokonaisuutta koetetaan jäsennellä ihmisellä hahmoteltavaksi. Loppujen lopuksihan koneen suorittama ykkösten ja nollien jono on "yhtä pötköä" haarautuen kuitenkin suorituksessa eri tekijöiden vaikutusten mukaisesti.


Rupea täydentämään seuraavaa ohjelmaa. Aikaa 2 * 75 min.



main.py:

from kuutionTilavuus import *
from kuutionPintaAla import *

print "Tässä ohjelmassa lasketaan kappaleiden pinta-aloja ja tilavuuksia"
print "Lasketaan niin kauan kunnes käyttäjä syöttää nollan."
print ""

while True:
print "suorakulmaisen särmiön tilavuuden laskeminen: 1"
print "suorakulmaisen särmiön pinta-alan laskeminen: 2"
print "kuution tilavuuden laskeminen: 3"
print "kuution pinta-alan laskeminen: 4"
print "Tähän on tulossa lisää vaihtoehtoja..."
print "Lopetus: 0"

# Kysy, kunnes syöte on kunnollinen
while True:
try:
valinta = int(raw_input("Valitse toiminto "))
break
except:
print "Syöte ei kelpaa. Anna kokonaisluku!"

# Tarkistus: lopetetaanko?
if valinta == 0:
print "Annoit nollan, joten hypätään silmukasta pois."
break
elif valinta == 1:
print "ToDo"
elif valinta == 2:
print "ToDo"
elif valinta == 3:
tilavuus = kuutionTilavuus()
print "Kuution tilavuus on ", tilavuus
elif valinta == 4:
kuutionPintaAla()
else:
print("Valintaa ei vastaa mitään toimintoa. Valitse annetuista vaihtoehdoista.")

print "Ohjelman suoritus loppui.

kuutionTilavuus.py:
def kuutionTilavuus():
# Kysy sivunPituus kunnes syöte on kunnollinen
while True:
try:
sivunPituus = float(raw_input("Anna sivun pituus: "))
return sivunPituus * sivunPituus * sivunPituus
except:
print "Syöte ei kelpaa. Anna jokin luku! Desimaaliluvussa piste on desimaalierottimena."

kuution pintaAla.py:
def kuutionPintaAla():
print "Todo"