CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 24.4.2023-30.6.2023
Kurssiasetusten perusteella kurssi on päättynyt 30.06.2023 Etsi kursseja: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Suorituksen vaatimukset
Merkkijonometodi __str__
Viimeisenä olioesimerkkinä on luokka Alkuaine. Luokalla on käynnistysmetodin lisäksi kolme metodia on_kiintea, on_neste ja on_kaasu, joilla voi helposti tarkastella alkuaineen olomuotoa tietyssä lämpötilassa. Lisäksi luokalla on merkkijonometodi __str__, jonka tarkoitus on palauttaa luokan oliota kuvaava merkkijono. Tämä merkkijono tulostuu esimerkiksi jos print-funktiolle annetaan parametriksi luokan olio.
class Alkuaine: def __init__(self, Z, symboli, nimi, atomipaino, sulamispiste, kiehumispiste): self.Z = Z self.symboli = symboli self.nimi = nimi self.atomipaino = atomipaino self.sulamispiste = sulamispiste # K self.kiehumispiste = kiehumispiste # K def __str__(self): return(f"{self.symboli:s} ({self.nimi:s}): atomipaino = {self.atomipaino:.2f}")
def on_kiintea(self, T): # Palauttaa True, jos alkuaine on kiinteä lampotilassa T (K) return T < self.sulamispiste def on_neste(self, T): # Palauttaa True, jos alkuaine on neste lampotilassa T (K) return T > self.sulamispiste and T < self.kiehumispiste def on_kaasu(self, T): # Palauttaa True, jos alkuaine on kaasu lampotilassa T (K) return T > self.kiehumispiste sinkki = Alkuaine(30, 'Zn', 'sinkki', 65.38, 693, 1180) kadmium = Alkuaine(48, 'Cd', 'kadmium', 112.411, 594, 1040) elohopea = Alkuaine(80, 'Hg', 'elohopea', 200.59, 234, 630) T = 600 # K for metalli in [sinkki, kadmium, elohopea]: if metalli.on_neste(T): print(f"{metalli.symboli} on neste lampotilassa {T} K") else: print(f"{metalli.symboli} ei ole neste lampotilassa {T} K") # Käytetään __str__ -metodia kutsumalla print-funktiota print("----------------------------------") print(sinkki)
tulostaa
Zn ei ole neste lämpotilassa 600 K
Cd on neste lämpotilassa 600 K
Hg on neste lämpotilassa 600 K
----------------------------------
Zn (sinkki): atomipaino = 65.38
Tehtävä 6.8.1