Bir bileşikteki elementlerin yüzdesini hesaplayan python programı

Kürşad Türkeş

Moderator
Yönetici
Katılım
13 Ağu 2019
Mesajlar
144
Tepkime puanı
24
Puanları
18
element-yuzdesi.png

Merhaba. Aşağıda göreceğiniz python programı element analizi yapmamızı sağlıyor, yani bir kimyasal bileşikteki atomların yüzdesini hesaplıyor. Bunun için her elementin toplam ağırlığını molekül ağırlığına bölerek yüzdesini hesaplıyor. Bu program kimya ve kimya mühendisliği ve organik kimya dersi alan öğrencilerin işine yarayabilir. Keyifle kullanmanız dileğiyle.

Kullanım açıklaması​

C12 H22 O11 (elementler ve sayıları arasında boşluk bırakıyoruz, program boşluklara göre liste elemanları oluşturuyor) gibi bir girdimiz var diyelim. Programın en başında elementler ve ağırlıklarının olduğu bir sözlük var. Buradan C için örneğin 12 * 12.0107 yaparak 144,1284 buluyoruz. Diğer elementlerle tekrarladığımız zaman 22 * 1.00794 = 22,17468 buluyoruz.

Son olarak oksijen için yaptığımızda 175,9934 buluyoruz. Hepsini toplayınca molekülün kütlesi çıkıyor. 342,296 g/mol bu molekülün kütlesi. Şimdi karbonun yüzdesini bulmak için karbon elementlerinin toplam kütlesi olan (144,1284 / 342,296) * 100 = %42,11 (noktadan sonra iki hane yapmayı tercih ettim). Hidrojenin yüzdesi benzer şekilde hesaplanınca %6,48, oksijende de %51,42 buluyoruz.

Programın verdiği sonuç şöyle:

  • Molekül ağırlığı: 342.29648
  • Element: C, yüzdesi: % 42.11
  • Element: H, yüzdesi: % 6.48
  • Element: O, yüzdesi: % 51.42

Programın python kodları​

GitHub sayfası:
Bu linki görmek için izniniz yok Giriş yap veya üye ol.




elementler = {"D": 2.014102, "T": 3.016049,
"H": 1.00794, "He": 4.002602,"Li": 6.941,
"Be": 9.012182, "B": 10.811, "C": 12.0107,
"N": 14.0067, "O": 15.9994, "F": 18.9984032,
"Ne": 20.1797, "Na": 22.989769, "Mg": 24.305,
"Al": 26.9815386, "Si": 28.0855, "P": 30.973762,
"S": 32.065, "Cl": 35.453, "Ar": 39.948,
"K": 39.0983, "Ca": 40.078, "Sc": 44.955912,
"Ti": 47.867, "V": 50.9415, "Cr": 51.9961,
"Mn": 54.938045, "Fe": 55.845, "Co": 58.933195,
"Ni": 58.6934, "Cu": 63.546, "Zn": 65.409,
"Ga": 69.723, "Ge": 72.64, "As": 74.9216,
"Se": 78.96, "Br": 79.904, "Kr": 83.798,
"Rb": 85.4678, "Sr": 87.62, "Y": 88.90585,
"Zr": 91.224, "Nb": 92.90638, "Mo": 95.94,
"Tc": 97.907215, "Ru": 101.07, "Rh": 102.9055,
"Pd": 106.42, "Ag": 107.8682, "Cd": 112.411,
"In": 114.818, "Sn": 118.71, "Sb": 121.76,
"Te": 127.6, "I": 126.90447, "Xe": 131.293,
"Cs": 132.9054519, "Ba": 132.327, "La": 138.90547,
"Ce": 140.116, "Pr": 140.90765, "Nd": 144.242,
"Pm": 144.912745, "Sm": 150.36, "Eu": 151.964,
"Gd": 157.25, "Tb": 158.92535, "Dy": 172.5,
"Ho": 164.93032, "Er": 167.259, "Tm": 168.93421,
"Yb": 173.04, "Lu": 174.967, "Hf": 178.49,
"Ta": 180.94788, "W": 183.84, "Re": 186.07,
"Os": 190.23, "Ir": 192.217, "Pt": 195.084,
"Au": 196.966569, "Hg": 200.59, "Tl": 204.3833,
"Pb": 207.2, "Bi": 208.98040, "Po": 208.982415,
"At": 209.987131, "Rn": 222.01757, "Fr": 223.019731,
"Ra": 226.025402, "Ac": 227.027747, "Th": 232.03806,
"Pa": 231.03588, "U": 238.02891, "Np": 237.048167,
"Pu": 244.064198, "Am": 243.061373, "Cm": 247.070347,
"Bk": 247.070299, "Cf": 251.07958, "Es": 252.08297,
"Fm": 257.095099, "Md": 258.098425, "No": 259.10102,
"Lr": 266, "Rf": 267, "Db": 268, "Sg": 269, "Bh": 270,
"Hs": 270, "Mt": 278, "Ds": 281, "Rg": 282, "Cn": 285,
"Nh": 286, "Fl": 289, "Mc": 290, "Lv": 293, "Ts": 294,
"Og": 294}
while True:
başlık = "A N A M E N Ü".center(50, '_')
alt_başlık = "".center(50, "_")
print(başlık)
print("\n 1) Molekül formülü girerek yüzde hesaplama, ")
print("\n 2) Yüzde girerek molekül formülü hesaplama, ")
print("\n 3) Çıkış")
print(alt_başlık)
seçenek = int(input("\nSeçiminizi yapınız (1-3): "))
if seçenek == 1:
while True:
molekül_formülü = str(input("Molekül formülünü elementler arasında boşluk bırakarak giriniz (örnek: C6 H12 O6): "))
elm = molekül_formülü.split(" ")
hesaplama = {}
atom_sayısı = {}
for i in elm:
if i[:2] in elementler.keys():
hesaplama[i[:2]] = elementler[i[:2]]
if i[2:] == '':
atom_sayısı[i[:2]] = 1
else:
atom_sayısı[i[:2]] = i[2:]
elif i[:1] in elementler.keys():
hesaplama[i[:1]] = elementler[i[:1]]
if i[1:] == '':
atom_sayısı[i[:1]] = 1
else:
atom_sayısı[i[:1]] = i[1:]
molekül_ağırlığı = 0
for i in hesaplama.keys():
molekül_ağırlığı += float(hesaplama) * int(atom_sayısı)


[TR]
[TD][/TD]

[TD] print("Molekül ağırlığı (g/mol): ",molekül_ağırlığı)[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] yüzdeler = {}[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] for j in hesaplama.keys():[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] yüzdeler[j] = float(hesaplama[j]) * int(atom_sayısı[j]) * 100 / molekül_ağırlığı[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] for k in yüzdeler.keys():[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] print("Element: %s, "%k + "yüzdesi: %",round(yüzdeler[k],2))[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] devam = input("Devam etmek için E, ana menüye gitmek için H tuşuna basınız: ")[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] if devam == "E" or devam == "e":[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] continue[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] elif devam == "H" or devam == "h":[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] break[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] else:[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] pass[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] break[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] elif seçenek == 2:[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] sorgu = {}[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] while True:[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] element_sembolü = input("Element sembolü: ")[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] element_yüzdesi = input("Element yüzdesi: ")[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] sorgu[element_sembolü] = element_yüzdesi[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] devam = input("Devam etmek için 'E', tamamlamak için 'H' yazınız: ")[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] if devam == 'e' or devam == 'E':[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] continue[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] else:[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] break[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] for i in sorgu.keys():[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] sorgu = float(sorgu) / float(elementler)[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] en_küçük = round(min(sorgu.values()))[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] for j in sorgu.keys():[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] sorgu[j] = round(sorgu[j]) / en_küçük[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] print(sorgu)[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] devam = input("Başka bir hesaplama yapmak ister misiniz? (E/H)")[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] if devam == "E" or devam == "e":[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] continue[/TD]
[/TR]
[TR]
[TD][/TD]

[TD][/TD]
[/TR]
[TR]
[TD][/TD]

[TD] elif seçenek == 3:[/TD]
[/TR]
[TR]
[TD][/TD]

[TD] break[/TD]
[/TR]

Bu linki görmek için izniniz yok Giriş yap veya üye ol.
Bu linki görmek için izniniz yok Giriş yap veya üye ol.
hosted with
❤
by
Bu linki görmek için izniniz yok Giriş yap veya üye ol.
 
Geri
Üst