Spaces:
Sleeping
Sleeping
Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,372 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
|
| 3 |
+
def calculate_masses():
|
| 4 |
+
# 1. Молекулы фуллерена C60
|
| 5 |
+
mass_c60_mg = 720 * 1000 # мг
|
| 6 |
+
|
| 7 |
+
# 2. Три молекулы кофеина C8H10O2N4
|
| 8 |
+
mass_coffee_kg = (194 * 3) / 1000 # кг
|
| 9 |
+
|
| 10 |
+
# 3. Катион аммония NH4+
|
| 11 |
+
mass_nh4_g = 18 # г
|
| 12 |
+
|
| 13 |
+
# 4. Анион SO4^2-
|
| 14 |
+
mass_so4_g = 96 # г
|
| 15 |
+
|
| 16 |
+
return mass_c60_mg, mass_coffee_kg, mass_nh4_g, mass_so4_g
|
| 17 |
+
|
| 18 |
+
def main():
|
| 19 |
+
st.title("Расчет массы молекул")
|
| 20 |
+
|
| 21 |
+
c60, coffee, nh4, so4 = calculate_masses()
|
| 22 |
+
|
| 23 |
+
st.write(f"🌟 Масса молекулы фуллерена C60: {c60} мг")
|
| 24 |
+
st.write(f"☕ Масса трех молекул кофеина C8H10O2N4: {coffee:.3f} кг")
|
| 25 |
+
st.write(f"🔋 Масса катиона аммония NH4+: {nh4} г")
|
| 26 |
+
st.write(f"⚡ Масса аниона SO4^2-: {so4} г")
|
| 27 |
+
|
| 28 |
+
def calculate_atoms():
|
| 29 |
+
# Константы
|
| 30 |
+
mass_K = 39.1 # г/моль
|
| 31 |
+
mass_Na = 22.99 # г/моль
|
| 32 |
+
Avogadro_number = 6.022e23 # атомов/моль
|
| 33 |
+
|
| 34 |
+
# Масса одного атома K
|
| 35 |
+
mass_per_atom_K = mass_K / Avogadro_number
|
| 36 |
+
|
| 37 |
+
# Масса 300 атомов K
|
| 38 |
+
mass_300_K = 300 * mass_per_atom_K
|
| 39 |
+
|
| 40 |
+
# Масса одного атома Na
|
| 41 |
+
mass_per_atom_Na = mass_Na / Avogadro_number
|
| 42 |
+
|
| 43 |
+
# Количество атомов Na, имеющих такую же массу
|
| 44 |
+
num_atoms_Na = mass_300_K / mass_per_atom_Na
|
| 45 |
+
|
| 46 |
+
return num_atoms_Na
|
| 47 |
+
|
| 48 |
+
def main():
|
| 49 |
+
st.title("Расчет количества атомов Na")
|
| 50 |
+
|
| 51 |
+
num_atoms_Na = calculate_atoms()
|
| 52 |
+
|
| 53 |
+
st.write(f"🔢 Количество атомов Na в порции, имеющей такую же массу, как и масса 300 атомов K: {int(num_atoms_Na)} атомов")
|
| 54 |
+
|
| 55 |
+
def calculate_molecules_and_atoms():
|
| 56 |
+
N_A = 6.022e23 # Число Авогадро
|
| 57 |
+
|
| 58 |
+
# 1) Вода
|
| 59 |
+
V_water = 1.2 # см³
|
| 60 |
+
density_water = 1.0 # г/см³
|
| 61 |
+
mass_water = V_water * density_water # г
|
| 62 |
+
moles_water = mass_water / 18.0 # г/моль
|
| 63 |
+
molecules_water = moles_water * N_A
|
| 64 |
+
|
| 65 |
+
# 2) Бензол
|
| 66 |
+
V_benzene = 5.0 # см³
|
| 67 |
+
density_benzene = 0.8 # г/см³
|
| 68 |
+
mass_benzene = V_benzene * density_benzene # г
|
| 69 |
+
moles_benzene = mass_benzene / 78.0 # г/моль
|
| 70 |
+
molecules_benzene = moles_benzene * N_A
|
| 71 |
+
|
| 72 |
+
# 3) Цинк
|
| 73 |
+
V_zinc = 2.0 # см³
|
| 74 |
+
density_zinc = 7.1 # г/см³
|
| 75 |
+
mass_zinc = V_zinc * density_zinc # г
|
| 76 |
+
moles_zinc = mass_zinc / 65.4 # г/моль
|
| 77 |
+
atoms_zinc = moles_zinc * N_A
|
| 78 |
+
|
| 79 |
+
# 4) Магний
|
| 80 |
+
mass_magnesium = 3.0 # г
|
| 81 |
+
moles_magnesium = mass_magnesium / 24.3 # г/моль
|
| 82 |
+
atoms_magnesium = moles_magnesium * N_A
|
| 83 |
+
|
| 84 |
+
return {
|
| 85 |
+
"molecules_water": molecules_water,
|
| 86 |
+
"molecules_benzene": molecules_benzene,
|
| 87 |
+
"atoms_zinc": atoms_zinc,
|
| 88 |
+
"atoms_magnesium": atoms_magnesium
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
def main():
|
| 92 |
+
st.title("Расчет числа молекул и атомов")
|
| 93 |
+
|
| 94 |
+
results = calculate_molecules_and_atoms()
|
| 95 |
+
|
| 96 |
+
st.write(f"💧 Количество молекул в 1,2 см³ воды: {int(results['molecules_water'])} молекул")
|
| 97 |
+
st.write(f"🧪 Количество молекул в 5,0 см³ бензола: {int(results['molecules_benzene'])} молекул")
|
| 98 |
+
st.write(f"🔩 Количество атомов в 2 см³ цинка: {int(results['atoms_zinc'])} атомов")
|
| 99 |
+
st.write(f"🔧 Количество атомов в 3,0 г магния: {int(results['atoms_magnesium'])} атомов")
|
| 100 |
+
|
| 101 |
+
def calculate_water_fraction():
|
| 102 |
+
# Молекулярные массы
|
| 103 |
+
mol_w_h2o = 18.0 # г/моль
|
| 104 |
+
compounds = {
|
| 105 |
+
"CuSO4 · 5H2O": (159.5, 5 * mol_w_h2o),
|
| 106 |
+
"AlNH4(SO4)2 · 12H2O": (132.1, 12 * mol_w_h2o),
|
| 107 |
+
"FeSO4 · 7H2O": (151.0, 7 * mol_w_h2o),
|
| 108 |
+
"Na2SO4 · 10H2O": (142.0, 10 * mol_w_h2o)
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
results = {}
|
| 112 |
+
for name, (molar_mass_salt, mass_water) in compounds.items():
|
| 113 |
+
total_mass = molar_mass_salt + mass_water
|
| 114 |
+
water_fraction = (mass_water / total_mass) * 100
|
| 115 |
+
results[name] = water_fraction
|
| 116 |
+
|
| 117 |
+
return results
|
| 118 |
+
|
| 119 |
+
def main():
|
| 120 |
+
st.title("Расчет массовой доли воды в кристаллогидратах")
|
| 121 |
+
|
| 122 |
+
results = calculate_water_fraction()
|
| 123 |
+
|
| 124 |
+
for name, fraction in results.items():
|
| 125 |
+
st.write(f"{name}: {fraction:.2f}% воды 💧")
|
| 126 |
+
|
| 127 |
+
def calculate_masses():
|
| 128 |
+
# Живое приложение расчета
|
| 129 |
+
elements = {}
|
| 130 |
+
|
| 131 |
+
# 1. Масса железа в магнетите Fe3O4
|
| 132 |
+
M_Fe = 55.85
|
| 133 |
+
M_O = 16.0
|
| 134 |
+
M_Fe3O4 = 3 * M_Fe + 4 * M_O
|
| 135 |
+
mass_magnetite = 330
|
| 136 |
+
iron_mass = (3 * M_Fe / M_Fe3O4) * mass_magnetite
|
| 137 |
+
elements['Железо в 330 г магнетита Fe3O4'] = iron_mass
|
| 138 |
+
|
| 139 |
+
# 2. Масса серы в Na2SO4
|
| 140 |
+
M_Na = 22.99
|
| 141 |
+
M_S = 32.07
|
| 142 |
+
M_Na2SO4 = 2 * M_Na + M_S + 4 * M_O
|
| 143 |
+
mass_Na2SO4 = 2.80
|
| 144 |
+
sulfur_mass = (M_S / M_Na2SO4) * mass_Na2SO4
|
| 145 |
+
elements['Сера в 2,80 г Na2SO4'] = sulfur_mass
|
| 146 |
+
|
| 147 |
+
# 3. Масса фосфора в Ca3(PO4)2
|
| 148 |
+
M_Ca = 40.08
|
| 149 |
+
M_P = 30.97
|
| 150 |
+
M_Ca3PO42 = 3 * M_Ca + 2 * (M_P + 4 * M_O)
|
| 151 |
+
mass_Ca3PO42 = 3.10
|
| 152 |
+
phosphorus_mass = (2 * M_P / M_Ca3PO42) * mass_Ca3PO42
|
| 153 |
+
elements['Фосфор в 3,10 г Ca3(PO4)2'] = phosphorus_mass
|
| 154 |
+
|
| 155 |
+
# 4. Масса азота в Fe(NO3)3
|
| 156 |
+
M_N = 14.01
|
| 157 |
+
M_FeNO3_3 = M_Fe + 3 * (M_N + 3 * M_O)
|
| 158 |
+
mass_FeNO3_3 = 4.70
|
| 159 |
+
nitrogen_mass = (3 * M_N / M_FeNO3_3) * mass_FeNO3_3
|
| 160 |
+
elements['Азот в 4,70 г Fe(NO3)3'] = nitrogen_mass
|
| 161 |
+
|
| 162 |
+
return elements
|
| 163 |
+
|
| 164 |
+
def main():
|
| 165 |
+
st.title("Расчет массы элементов в соединениях")
|
| 166 |
+
|
| 167 |
+
results = calculate_masses()
|
| 168 |
+
|
| 169 |
+
for description, mass in results.items():
|
| 170 |
+
st.write(f"{description}: {mass:.2f} г")
|
| 171 |
+
|
| 172 |
+
def calculate_mass_fraction():
|
| 173 |
+
# Константы
|
| 174 |
+
M_K = 39.10 # г/моль
|
| 175 |
+
M_N = 14.01 # г/моль
|
| 176 |
+
M_O = 16.00 # г/моль
|
| 177 |
+
M_C = 12.01 # г/моль
|
| 178 |
+
|
| 179 |
+
# Молекулярная масса KNO₃
|
| 180 |
+
M_KNO3 = M_K + M_N + 3 * M_O # = 85.01 г/моль
|
| 181 |
+
|
| 182 |
+
# Молекулярная масса K₂CO₃
|
| 183 |
+
M_K2CO3 = 2 * M_K + M_C + 3 * M_O # = 138.21 г/моль
|
| 184 |
+
|
| 185 |
+
# Массы соединений
|
| 186 |
+
mass_KNO3 = 25.25
|
| 187 |
+
mass_K2CO3 = 41.4
|
| 188 |
+
|
| 189 |
+
# Количество атомов К
|
| 190 |
+
m_K_KNO3 = (mass_KNO3 / M_KNO3) * 1 * M_K # масса K из KNO₃
|
| 191 |
+
m_K_K2CO3 = (mass_K2CO3 / M_K2CO3) * 2 * M_K # масса K из K2CO3
|
| 192 |
+
|
| 193 |
+
# Общая масса смеси
|
| 194 |
+
total_mass = mass_KNO3 + mass_K2CO3
|
| 195 |
+
|
| 196 |
+
# Общая масса K
|
| 197 |
+
total_K = m_K_KNO3 + m_K_K2CO3
|
| 198 |
+
|
| 199 |
+
# Массовая доля K
|
| 200 |
+
mass_fraction_K = total_K / total_mass * 100 # в процентах
|
| 201 |
+
|
| 202 |
+
return mass_fraction_K
|
| 203 |
+
|
| 204 |
+
def main():
|
| 205 |
+
st.title("Расчет массовой доли атомов калия в смеси")
|
| 206 |
+
|
| 207 |
+
mass_fraction = calculate_mass_fraction()
|
| 208 |
+
|
| 209 |
+
st.write(f"🔬 Массовая доля атомов калия в смеси: {mass_fraction:.2f}%")
|
| 210 |
+
|
| 211 |
+
def calculate_mass_and_moles():
|
| 212 |
+
# Молекулярные массы
|
| 213 |
+
M_P = 30.97 # г/моль
|
| 214 |
+
M_O = 16.00 # г/моль
|
| 215 |
+
M_S = 32.07 # г/моль
|
| 216 |
+
|
| 217 |
+
M_P2O5 = 2 * M_P + 5 * M_O # = 141.94 г/моль
|
| 218 |
+
M_SO3 = M_S + 3 * M_O # = 80.07 г/моль
|
| 219 |
+
|
| 220 |
+
# Общая масса смеси
|
| 221 |
+
total_mass = 26.2 # г
|
| 222 |
+
mass_fraction_P = 0.236 # массовая доля фосфора
|
| 223 |
+
|
| 224 |
+
# Масса фосфора в смеси
|
| 225 |
+
mass_P = mass_fraction_P * total_mass
|
| 226 |
+
|
| 227 |
+
# Уравнения:
|
| 228 |
+
# 1) x + y = 26.2 (где x - масса P2O5, y - масса SO3)
|
| 229 |
+
# 2) (2 * M_P / M_P2O5) * x = mass_P
|
| 230 |
+
|
| 231 |
+
# Выразим y через x: y = 26.2 - x
|
| 232 |
+
# Подставим в второе уравнение:
|
| 233 |
+
# (2 * M_P / M_P2O5) * x = mass_P
|
| 234 |
+
|
| 235 |
+
# Решаем:
|
| 236 |
+
x = (mass_P * M_P2O5) / (2 * M_P) # масса P2O5
|
| 237 |
+
y = total_mass - x # масса SO3
|
| 238 |
+
|
| 239 |
+
# Количества вещества
|
| 240 |
+
n_P2O5 = x / M_P2O5 # моль P2O5
|
| 241 |
+
n_SO3 = y / M_SO3 # моль SO3
|
| 242 |
+
|
| 243 |
+
return x, y, n_P2O5, n_SO3
|
| 244 |
+
|
| 245 |
+
def main():
|
| 246 |
+
st.title("Расчет химического количества и масс веществ в смеси")
|
| 247 |
+
|
| 248 |
+
mass_P2O5, mass_SO3, moles_P2O5, moles_SO3 = calculate_mass_and_moles()
|
| 249 |
+
|
| 250 |
+
st.write(f"⚗️ Масса P₂O₅: {mass_P2O5:.2f} г")
|
| 251 |
+
st.write(f"⚗️ Масса SO₃: {mass_SO3:.2f} г")
|
| 252 |
+
st.write(f"🔬 Количество вещества P₂O₅: {moles_P2O5:.2f} моль")
|
| 253 |
+
st.write(f"🔬 Количество вещества SO₃: {moles_SO3:.2f} моль")
|
| 254 |
+
|
| 255 |
+
def calculate_empirical_formula():
|
| 256 |
+
# Массовые доли элементов
|
| 257 |
+
mass_percent_C = 68.85
|
| 258 |
+
mass_percent_H = 4.92
|
| 259 |
+
mass_percent_O = 26.23
|
| 260 |
+
|
| 261 |
+
# Атомные массы
|
| 262 |
+
M_C = 12.01 # г/моль
|
| 263 |
+
M_H = 1.008 # г/моль
|
| 264 |
+
M_O = 16.00 # г/моль
|
| 265 |
+
|
| 266 |
+
# Количество молей
|
| 267 |
+
n_C = mass_percent_C / M_C
|
| 268 |
+
n_H = mass_percent_H / M_H
|
| 269 |
+
n_O = mass_percent_O / M_O
|
| 270 |
+
|
| 271 |
+
# Минимальное количество молей
|
| 272 |
+
min_n = min(n_C, n_H, n_O)
|
| 273 |
+
|
| 274 |
+
# Нахождение целочисленных коэффициентов
|
| 275 |
+
formula_C = n_C / min_n
|
| 276 |
+
formula_H = n_H / min_n
|
| 277 |
+
formula_O = n_O / min_n
|
| 278 |
+
|
| 279 |
+
# Округление до ближайших целых
|
| 280 |
+
formula_C = round(formula_C)
|
| 281 |
+
formula_H = round(formula_H)
|
| 282 |
+
formula_O = round(formula_O)
|
| 283 |
+
|
| 284 |
+
return formula_C, formula_H, formula_O
|
| 285 |
+
|
| 286 |
+
def main():
|
| 287 |
+
st.title("Определение эмпирической формулы вещества")
|
| 288 |
+
|
| 289 |
+
formula_C, formula_H, formula_O = calculate_empirical_formula()
|
| 290 |
+
|
| 291 |
+
st.write(f"🧪 Эмпирическая формула вещества: C{formula_C}H{formula_H}O{formula_O}")
|
| 292 |
+
|
| 293 |
+
|
| 294 |
+
def calculate_empirical_formula():
|
| 295 |
+
# Данные задачи
|
| 296 |
+
mass_P = 6.2 # г
|
| 297 |
+
mass_oxide = 14.2 # г
|
| 298 |
+
|
| 299 |
+
# Атомные массы
|
| 300 |
+
M_P = 30.97 # г/моль
|
| 301 |
+
M_O = 16.00 # г/моль
|
| 302 |
+
|
| 303 |
+
# Масса кислорода
|
| 304 |
+
mass_O = mass_oxide - mass_P
|
| 305 |
+
|
| 306 |
+
# Количество молей
|
| 307 |
+
n_P = mass_P / M_P
|
| 308 |
+
n_O = mass_O / M_O
|
| 309 |
+
|
| 310 |
+
# Минимальное количество молей
|
| 311 |
+
min_n = min(n_P, n_O)
|
| 312 |
+
|
| 313 |
+
# Нахождение целочисленных коэффициентов
|
| 314 |
+
formula_P = n_P / min_n
|
| 315 |
+
formula_O = n_O / min_n
|
| 316 |
+
|
| 317 |
+
# Округление до ближайших целых
|
| 318 |
+
formula_P = round(formula_P)
|
| 319 |
+
formula_O = round(formula_O)
|
| 320 |
+
|
| 321 |
+
return formula_P, formula_O
|
| 322 |
+
|
| 323 |
+
def main():
|
| 324 |
+
st.title("Определение эмпирической формулы оксида фосфора")
|
| 325 |
+
|
| 326 |
+
formula_P, formula_O = calculate_empirical_formula()
|
| 327 |
+
|
| 328 |
+
st.write(f"🧪 Эмпирическая формула оксида фосфора: P{formula_P}O{formula_O}")
|
| 329 |
+
|
| 330 |
+
|
| 331 |
+
def calculate_metal():
|
| 332 |
+
# Данные задачи
|
| 333 |
+
mass_water = 1.62 # г
|
| 334 |
+
molar_mass_water = 18.0 # г/моль (молярная масса H2O)
|
| 335 |
+
|
| 336 |
+
# Определение количества молей воды
|
| 337 |
+
n_water = mass_water / molar_mass_water # кол-во моль воды
|
| 338 |
+
|
| 339 |
+
# Определение количества моль водорода
|
| 340 |
+
n_hydrogen = n_water * 2 # в одной молекуле воды 2 атома водорода
|
| 341 |
+
|
| 342 |
+
# Находим массу водорода
|
| 343 |
+
mass_hydrogen = n_hydrogen * 1.008 # г/моль (молярная масса H)
|
| 344 |
+
|
| 345 |
+
# Масса оксида
|
| 346 |
+
mass_oxide = 4.80 # г
|
| 347 |
+
|
| 348 |
+
# Масса металла в оксиде
|
| 349 |
+
mass_metal = mass_oxide - mass_hydrogen
|
| 350 |
+
|
| 351 |
+
# Общая формула для металла
|
| 352 |
+
# M + 3 O → металл с зарядом +3
|
| 353 |
+
# Определяем молекулярную массу металла
|
| 354 |
+
metal_molar_mass = mass_metal / (n_hydrogen / 3)
|
| 355 |
+
|
| 356 |
+
return metal_molar_mass
|
| 357 |
+
|
| 358 |
+
def main():
|
| 359 |
+
st.title("Определение металла по его оксиду")
|
| 360 |
+
|
| 361 |
+
metal_molar_mass = calculate_metal()
|
| 362 |
+
|
| 363 |
+
st.write(f"🔍 Молярная масса металла: {metal_molar_mass:.2f} г/моль")
|
| 364 |
+
|
| 365 |
+
# Пример того, какой металл соответствует найденной молярной массе
|
| 366 |
+
if 45 < metal_molar_mass < 55:
|
| 367 |
+
st.write("⚙️ Металл может быть: Феррум (Fe), с молярной массой примерно 55.85 г/моль.")
|
| 368 |
+
elif 65 < metal_molar_mass < 75:
|
| 369 |
+
st.write("⚙️ Металл может быть: Манган (Mn), с молярной массой примерно 54.94 г/моль.")
|
| 370 |
+
|
| 371 |
+
if __name__ == "__main__":
|
| 372 |
+
main()
|