Skip to content

Instantly share code, notes, and snippets.

@bakkurt
Last active March 23, 2020 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bakkurt/27a2038941b32023ca7fe2b709e4e701 to your computer and use it in GitHub Desktop.
Save bakkurt/27a2038941b32023ca7fe2b709e4e701 to your computer and use it in GitHub Desktop.
Element analizi (element formülünden yüzde ve element yüzdesinden kapalı formül hesaplama)
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[i]) * int(atom_sayısı[i])
print("Molekül ağırlığı (g/mol): ",molekül_ağırlığı)
yüzdeler = {}
for j in hesaplama.keys():
yüzdeler[j] = float(hesaplama[j]) * int(atom_sayısı[j]) * 100 / molekül_ağırlığı
for k in yüzdeler.keys():
print("Element: %s, "%k + "yüzdesi: %",round(yüzdeler[k],2))
devam = input("Devam etmek için E, ana menüye gitmek için H tuşuna basınız: ")
if devam == "E" or devam == "e":
continue
elif devam == "H" or devam == "h":
break
else:
pass
break
elif seçenek == 2:
sorgu = {}
while True:
element_sembolü = input("Element sembolü: ")
element_yüzdesi = input("Element yüzdesi: ")
sorgu[element_sembolü] = element_yüzdesi
devam = input("Devam etmek için 'E', tamamlamak için 'H' yazınız: ")
if devam == 'e' or devam == 'E':
continue
else:
break
for i in sorgu.keys():
sorgu[i] = float(sorgu[i]) / float(elementler[i])
en_küçük = round(min(sorgu.values()))
for j in sorgu.keys():
sorgu[j] = round(sorgu[j]) / en_küçük
print(sorgu)
devam = input("Başka bir hesaplama yapmak ister misiniz? (E/H)")
if devam == "E" or devam == "e":
continue
elif seçenek == 3:
break
@bakkurt
Copy link
Author

bakkurt commented Mar 23, 2020

An English translation may be provided upon request, free of charge. Just give me some time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment