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)
Sanakirjat
Sanakirjassa alkiot määritellään avain:arvo -pareina:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999}
Tämän määrittelyn jälkeen avainta vastaavan arvon voi noutaa näin:
print("Hiilen atomipaino on", atomipainot["C"])
tulostaa
Hiilen atomipaino on 12.011
Määrittelyssä käytetään siis kaarisulkeita, mutta kun arvoihin viitataan avaimella, käytetään hakasulkeita.
Tyhjän sanakirjan luominen
uusi_sanakirja = {}
Arvojen lisääminen sanakirjaan
Arvojen lisääminen sanakirjaan on helppoa: annetaan vain uusi avain ja arvo:
# Luodaan tyhjä sanakirja ja lisätään kolme avain:arvo -paria atomipainot = {} atomipainot["H"] = 1.008 atomipainot["C"] = 12.011 atomipainot["O"] = 15.999 print(atomipainot)
Tulostaa
{'H': 1.008, 'C': 12.011, 'O': 15.999}
Sanakirjan voi myös määritellä ensin tiettyjen avain:arvo parien kanssa ja lisätä siihen myöhemmin lisää pareja:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999}
atomipainot["P"] = 30.973
print(atomipainot)
tulostaa
{'H': 1.008, 'C': 12.011, 'O': 15.999, 'P': 30.973}
Python tulostaa sanakirjojen avaimet aina yksinkertaisia lainausmerkkejä käyttäen.
Arvon lisääminen sanakirjaan muuttujan avulla
Arvoja voi lisätä sanakirjaan myös käyttämällä avaimena olemassa olevan muuttujan sisältöä:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999} # Kysytään käyttäjältä uusi alkuaine ja atomipaino sanakirjaan alkuaine = input("Anna alkuainesymboli\n") atomipaino = float(input("Anna atomipaino\n")) # alkuaine on nyt merkkijonomuuttuja, esimerkiksi "P" # atomipaino on nyt liukuluku, esimerkiksi 30.973 atomipainot[alkuaine] = atomipaino # Tulostetaan sanakirjan sisältö print("Atomipainot:", atomipainot)
Esimerkkiajo:
Anna alkuainesymboli > P Anna atomipaino > 30.973 Atomipainot: {'H': 1.008, 'C': 12.011, 'O': 15.999, 'P': 30.973}
Kurssin aikana käytämme lukuisia kertoja merkintää sanakirja[muuttuja] = arvo, kun haluamme lisätä avain:arvo-pareja sanakirjaan.
Arvon poimiminen sanakirjasta muuttujan avulla
Arvoja voi poimia sanakirjasta myös käyttämällä avaimena olemassa olevan muuttujan sisältöä:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999} # Kysytään käyttäjältä alkuaine alkuaine = input("Anna alkuainesymboli, niin tulostan atomipainon:\n") # alkuaine on nyt merkkijonomuuttuja, esimerkiksi "C" print(atomipainot[alkuaine])
Esimerkkiajo:
Anna alkuainesymboli, niin tulostan atomipainon: > C 12.011
Kurssin aikana käytämme lukuisia kertoja merkintää arvo = sanakirja[muuttuja], kun haluamme poimia tietyn arvon sanakirjasta.
Arvojen poistaminen sanakirjasta
Arvojen poistaminen sanakirjasta onnistuu del-avainsanalla:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999} del atomipainot["C"] print(atomipainot)
tulostaa
{'H': 1.008, 'O': 15.999}
Avaimen olemassaolon tarkistaminen sanakirjasta
in-avainsana toimii samaan tapaan kuin listojen kanssa:
# in-avainsanalla voi testata, onko avain sanakirjassa: atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999} if "C" in atomipainot: print("Hiilen atomipaino on", atomipainot["C"])
tulostaa
Hiilen atomipaino on 12.011
Sanakirjan läpikäyminen, items()
Sanakirjan items()-funktio antaa arvot läpikäyntiä varten:
atomipainot = {"H": 1.008, "C": 12.011, "O": 15.999} for alkuaine, atomipaino in atomipainot.items(): print(f"Alkuaineen {alkuaine:s} atomipaino on {atomipaino:.3f} g/mol")
tulostaa
Alkuaineen H atomipaino on 1.008 g/mol Alkuaineen C atomipaino on 12.011 g/mol Alkuaineen O atomipaino on 15.999 g/mol
Yleinen muoto siis
for AVAIN, ARVO in SANAKIRJA.items(): print(AVAIN, ARVO) # Silmukassa voimme käyttää avaimia ja arvoja kuten haluamme.
Sanakirjan lajitteleminen
sorted()-funktiolla voi tulostaa avaimet aakkosjärjestyksessä tai arvot järjestyksessä (sanakirjan values-funktio):
atomipainot = {"P": 30.973, "C": 12.011, "O": 15.999} print(sorted(atomipainot)) print(sorted(atomipainot.values()))
tulostaa
['C', 'O', 'P'] [12.011, 15.999, 30.973]
Huomaa kuitenkin, että alkuperäisen sanakirjan (atomipainot) järjestys ei muutu, vaikka kutsuisit sorted-funktiota.
Huom! Ennen Pythonin versiota 3.6, sanakirjan avain:arvo parit olivat satunnaisessa järjestyksessä. Versiosta 3.6 eteenpäin ne ovat siinä järjestyksessä, missä ne on lisätty sanakirjaan.
Listat sanakirjojen sisällä
Sanakirjan arvot voivat olla vaikka listoja:
# Sanakirjan arvot voivat olla vaikka listoja: yhdisteet = {"C2H6": ["C", 2, "H", 6], "NaCl": ["Na", 1, "Cl", 1] # indeksi: 0 1 2 3 } print(yhdisteet["C2H6"]) print("Yhdisteessa C2H6 on", yhdisteet["C2H6"][3], "vetyatomia")
tulostaa
['C', 2, 'H', 6]
Yhdisteessa C2H6 on 6 vetyatomia