CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 5.9.2022-2.12.2022
This course space end date is set to 02.12.2022 Search Courses: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Krav för slutförande
Erilaisia funktioita
Tässä osiossa on useita esimerkkejä erilaisista funktiosta. Esimerkkejä on parasta havainnollistaa kopioimalla koodi Spyderiin ja ajamalla se itse.
1. Funktiolla ei tarvitse välttämättä olla yhtään parametria:
def pii(): # Funktio palauttaa piin arvon 15 desimaalin tarkkuudella return 3.141592653589793 r = 1.5 pallon_tilavuus = 4 * pii() * r**3 / 3 print(round(pallon_tilavuus, 2))
2. Funktiolla voi olla useita parametreja:
def ainemaara(massa, moolimassa): return massa / moolimassa n = ainemaara(5.4, 18.02) print(round(n, 3))
3. Funktiolla ei ole pakko olla paluuarvoa (return):
def tervehdys(kieli): if kieli == "suomi": teksti = "Hei!" elif kieli == "ruotsi": teksti = "Hej!" elif kieli == "saksa": teksti = "Hallo!" else: teksti = "!!??" print(teksti) tervehdys("suomi")
4. Funktiolla voi olla useita paluuarvoja:
def tunnit_ja_minuutit(minuutit_yhteensa): tunnit = minuutit_yhteensa // 60 # katkaiseva jakolasku minuutit = minuutit_yhteensa % 60 # jakojäännös return tunnit, minuutit luku = int(input("Anna minuuttien määrä kokonaislukuna:\n")) h, m = tunnit_ja_minuutit(luku) print(luku, "minuuttia on", h, "tuntia ja", m, "minuuttia")
tulostaa:
Anna minuuttien määrä kokonaislukuna:
> 124
124 minuuttia on 2 tuntia ja 4 minuuttia
5. Funktio voi sisältää useita return-käskyjä, mutta vain yksi niistä voi toteutua:
def itseisarvo(luku):
if luku >= 0:
return luku
else:
return -luku
print(itseisarvo(5.4))
print(itseisarvo(-5.4))
6. return-lause yksinkertaistaa parametrien arvojen tarkistamista
def ratkaise_p(V, n, T):
# Ratkaistaan paine ideaalikaasun tilanyhtälön avulla
# Parametrien yksiköt: V (m^3), n (mol), T(K)
# Jos joku parametreista on epäfysikaalinen,
# funktio palauttaa välittömästi arvon -1
if V <= 0 or n <= 0 or T <= 0:
return -1
# Ylläolevan if-lauseen return-käsky hoitaa virheelliset parametrit
# Jos koodi jatkaa tänne asti, tiedämme, että parametrit ovat OK
R = 8.314462618 # J K^-1 mol^-1
p = n * R * T / V
return p # Pa
print(ratkaise_p(0.25, 1.25, 300))
7. Funktiot voivat kutsua toisiaan:
def tervehdys(kieli):
if kieli == "suomi":
teksti = "Hei!"
elif kieli == "ruotsi":
teksti = "Hej!"
elif kieli == "saksa":
teksti = "Hallo!"
else:
teksti = "!!??"
print(teksti)
def keskustelu(kieli1, kieli2):
tervehdys(kieli1)
tervehdys(kieli2)
keskustelu("ruotsi", "saksa")
tulostaa:
Hej!
Hallo!
8. Valinnaiset parametrit
Funktioilla voi olla myös valinnaisia parametreja, joille on määritelty oletusarvo. Jos funktiota kutsutaan ilman valinnaista parametria, Python käyttää oletusarvoa. Tuttu esimerkki on print-funktio, jolla on useita valinnaisia parametrejä. Yksi niistä on end-parametri, jonka oletusarvo on rivinvaihto "\n". Kaksi tavallista funktiokutsuaprint("Moi!") print("Moi!")
tulostaa
Moi!
Moi!
Kun taas vaihtamalla end-parametri tyhjäksi merkkijonoksi:
print("Moi!", end="") print("Moi!", end="")
tulostuu
Moi!Moi!
Esimerkki valinnaisten parametrien määrittelystä:
def ratkaise_tilavuus(n, T = 273.15, p = 100000):
# Ratkaisee tilavuuden ideaalikaasun tilanyhtälöstä
# Kaikki suureet SI-yksiköissä
# Parametreillä p ja T on oletusarvot (IUPAC STP-olosuhteet)
R = 8.314462618 # J K^-1 mol^-1
V = n * R * T / p
return V
# Selvennä aina funktiota kutsuessasi, minkä valinnaisen parametrin haluat antaa
V1 = ratkaise_tilavuus(0.28) # Pelkästään pakollinen parametri n
V2 = ratkaise_tilavuus(0.28, T = 400) # n ja valinnainen parametri T
V3 = ratkaise_tilavuus(0.28, T = 300, p = 200000) # n ja molemmat valinnaiset parametrit
print(round(V1, 5), round(V2, 5), round(V3, 5))
HUOM! Valinnaiset parametrit pitää aina määritellä vasta pakollisten parametrien jälkeen. Muuten Python antaa virheilmoituksen:
SyntaxError: non-default argument follows default argument