CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 30.5.2022-28.8.2022
This course space end date is set to 28.08.2022 Search Courses: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Olioiden säilöminen tietorakenteisiin
Oliot ovat jo itsessään kätevä tapa tietojen säilömiseksi. Olioita voi edelleen säilöä myös muihin tietorakenteisiin kuten listoihin tai sanakirjoihin.
Oliot listoissa
Tarkastellaan Molekyyli-luokkaan perustuvaa esimerkkiä:
class Molekyyli: maara = 0 def __init__(self, kaava, moolimassa): Molekyyli.maara += 1 self.kaava = kaava self.moolimassa = moolimassa def laske_ainemaara(self, massa): return massa / self.moolimassa metaani = Molekyyli("CH4", 16.04) etaani = Molekyyli("C2H6", 30.07) propaani = Molekyyli("C3H8", 44.10) butaani = Molekyyli("C4H10", 58.12) lista_olioista = [metaani, etaani, propaani, butaani] print(f"Olet luonut {Molekyyli.maara} molekyyliä:") for hiilivety in lista_olioista: print(hiilivety.kaava)
Esimerkki tulostaa:
Olet luonut 4 molekyyliä: CH4 C2H6 C3H8 C4H10
Olioista koostuva lista on erittäin kätevä tapa korvata aiemmin kurssilla käytetyt rakenteet, joissa listojen sisään on säilötty toisia listoja:
lista_listoista = [["CH4", 16.04], ["C2H6", 30.07], ["C3H8", 44.10], ["C4H10", 58.12], ] print(f"Listassa on {len(lista_listoista)} molekyyliä:") for hiilivety in lista_listoista: print(hiilivety[0])
Olioita sisältävät listat ovat joustava tietorakenne, koska luokkaan on helppo lisätä uusia kenttiä, eikä se vaikuta mitenkään listan määrittelyyn tai indeksointiin. Olioiden sisältämiin tietoihin on helppo viitata, koska olion kentillä on selkeä nimi. Sen sijaan listojen tapauksessa pitää aina muistaa, mikä indeksi vastasi mitäkin tietoa.
Oliot sanakirjoissa
Luodaan sanakirja, jonka avaimena on hiilivedyn nimi ja arvona Molekyyli-luokan olio:
class Molekyyli: maara = 0 def __init__(self, kaava, moolimassa): Molekyyli.maara += 1 self.kaava = kaava self.moolimassa = moolimassa def laske_ainemaara(self, massa): return massa / self.moolimassa sanakirja_olioista = {} sanakirja_olioista["metaani"] = Molekyyli("CH4", 16.04) sanakirja_olioista["etaani"] = Molekyyli("C2H6", 30.07) sanakirja_olioista["propaani"] = Molekyyli("C3H8", 44.10) sanakirja_olioista["butaani"] = Molekyyli("C4H10", 58.12) print(f"Olet luonut {Molekyyli.maara} molekyyliä:") for avain, hiilivety in sanakirja_olioista.items(): print(f"{avain} eli {hiilivety.kaava}")
Esimerkki tulostaa:
Olet luonut 4 molekyyliä: metaani eli CH4 etaani eli C2H6 propaani eli C3H8 butaani eli C4H10