Forelesning 1: Programmering i kjemi#

Periodesystemet og periodiske egenskaper#

# Installere biblioteker i Jupyter Notebook
!pip install mendeleev chemlib pandas seaborn
# Klasser og objekter
liste1 = [] # listeobjekt basert på klassen "list"
liste2 = [] # annet listeobjekt

liste1.append(2)
liste2.append("sjokoladestrø")

print(type(liste))
<class 'list'>
from mendeleev import element

Z = 10 # Atomnummer
grunnstoff = element(Z) 

print(grunnstoff.symbol, grunnstoff.name, grunnstoff.group_id)
Ne Neon 18
  • Oppgave: Modifiser programmet slik at det skriver ut informasjonen (navn, symbol og elektronegativitet) om de 18 letteste grunnstoffene.

for Z in range(1, 19):
    grunnstoff = element(Z)
    sym = grunnstoff.symbol
    navn = grunnstoff.name
    elneg = grunnstoff.electronegativity()
    print(sym, navn, elneg)
H Hydrogen 2.2
He Helium None
Li Lithium 0.98
Be Beryllium 1.57
B Boron 2.04
C Carbon 2.55
N Nitrogen 3.04
O Oxygen 3.44
F Fluorine 3.98
Ne Neon None
Na Sodium 0.93
Mg Magnesium 1.31
Al Aluminum 1.61
Si Silicon 1.9
P Phosphorus 2.19
S Sulfur 2.58
Cl Chlorine 3.16
Ar Argon None
import matplotlib.pyplot as plt
atomnummer = []
elektroneg = []

for Z in range(1,119):
    grunnstoff = element(Z)
    atomnummer.append(grunnstoff.atomic_number)
    elektroneg.append(grunnstoff.electronegativity())
plt.plot(atomnummer, elektroneg, color = "hotpink", marker = "o", linestyle = "--")
plt.xlabel("Atomnummer")
plt.ylabel("Elektronegativitet")
#plt.grid()
plt.savefig("plott1.tiff")
../../_images/41df0aa1f6db0f834c41c7aa4346d5fa58072d711fdc822d432b33a90bbbbc99.png
  • Oppgave: Plott listene mot hverandre. Modifiser programmet slik at det kun plotter grunnstoffene i andre periode. Forklar trenden du ser.

Elektronegativitet i gruppe 1#

Oppgave: Plott elektronegativitet som funksjon av atomnummer for grunnstoffene i gruppe 1.

Støkiometriske beregninger#

Stoffmengdeberegninger#

from chemlib import Compound, Reaction

butan1ol = Compound("C4H9OH")

print(butan1ol.get_amounts(moles=1))
{'moles': 1, 'grams': 74.12300000000002, 'molecules': 6.02e+23}
H2 = Compound("H2")
I2 = Compound("I2")
HI = Compound("HI")

reaksjon = Reaction([H2, I2], [HI])
reaksjon.is_balanced
False
reaksjon.balance() # balanserer reaksjonslikninga
reaksjon.is_balanced
True
reaksjon.formula
'1H₂ + 1I₂ --> 2H₁I₁'
  • Oppgave: Bruk chemlib til å balansere ufullstendig forbrenning av benzen (vi får vann og CO)