Я попробовал решить несколько простых школьных задач по химии в Python с помощью библиотек mendeleev, chemlib и chempy. Каждая из “химических” библиотек Python содержит в себе оцифрованную базу данных химических элементов из периодической таблицы Менделеева. Из нее можно получить основные свойства химических элементов, например, атомную массу, группу, электронную конфигурацию и т.п. Имея под рукой быстрый доступ к свойствам химических элементов, физическим константам (например, число Авогадро, постоянная Планка, скорость света и др.) и ряду функций, я решил несколько задач, в том числе несколько заданий из ОГЭ и ЕГЭ. Начнем с простого - определим относительную молекулярную массу вещества на примере серной кислоты. В тетрадке эта задача решается так: В скрипте используем библиотеку chemlib и импортируем объект Compound для расчета: Во второй задаче рассчитаем массовую долю кислорода в серной кислоте: Используем функцию percentage_by_mass из библиотеки chemlib для расчета в Python: Сколько граммов сульфата меди (II) нужно внести в реакционную смесь, если для проведения реакции необходимо 8 г меди (II)? Для решения задачи сначала нужно рассчитать массовую долю меди в сульфате меди. После разделим необходимую массу меди на эту долю: В скрипте это будет выглядеть так: Рассчитаем массу и число молекул для метана взятого в количестве 0,5 Моль вещества. В скрипте применим уже готовые функции для расчета: Перейдем к другой библиотеке - mendeleev - в ней тоже есть готовые функции для решения первых четырех задач. В mendeleev можно визуализировать периодическую систему химических элементов: Вспомним как записывается электронная формула химического элемента и где у него расположены валентные электроны. Например, для ванадия (V) и мышьяка (As) в школьной тетради это выглядит так: Импортировать химический элемент из библиотеки mendeleev можно либо через функцию element(V), либо как показано ниже в коде. Выведем электронную формулу и валентные электроны для мышьяка и ванадия: В этой задаче нужно определить два элемента из списка [Cs, C, O, Cr, N], атомы которых в основном состоянии имеют одинаковое число неспаренных электронов.  Задача решается так же как и предыдущая через вывод электронной формулы элементов.  Добавим нужную функцию unpaired_electrons() и выведем количество неспаренных электронов для всех элементов:   Добавим шаг для получения итогового ответа: В задаче нужно рассчитать какая масса серной кислоты может быть получена из пирита массой 40 тонн.  Промышленный способ получения серной кислоты из пирита состоит из нескольких этапов и стехиометрическая цепочка выглядит следующим образом: FeS2 →SO2 →SO3 →H2SO4 Для расставления коэффициентов уравнений распишем каждый этап отдельно.  На первом этапе подбираем коэффициенты уравнения через количество отданных и принятых электронов для элементов, которые меняют валентность в процессе реакции:   Следующие два этапа уравниваются проще: Итоговая цепочка выглядит так:  4FeS2 →8SO2 →8SO3 →8H2SO4  или сокращенно так  FeS2→2H2SO4 Итоговый ответ получаем из решения пропорции: Теперь решим эту же задачу в Python. Для решения задачи со стехиометрическими цепочками воспользуемся библиотекой chempy. Импортируем функцию balance_stoichiometry и выведем коэффициенты для первого уравнения:   Аналогично для второго и третьего: Воспользуемся функциями расчета молярных масс исходного (пирита) и конечного вещества (серной кислоты): Выведем итоговый ответ: При сгорании 8,4 г этилена выделяется 423,3 кДж теплоты. Вычислите количество теплоты, которое выделится при сгорании 0,896 м3 (при н.у.) этилена. [C2H4 + 3O2 → 2CO2 + 2H2O + Q]   Эта задача решается в несколько действий: Определим количество этилена, которое участвует в первой реакции n(C2H4)1 через молярную массу. Определим количество этилена, которое участвует во второй реакции n(C2H4)2 через объем газа при нормальных условиях. Рассчитаем количество теплоты, которое выделится во второй реакции через пропорцию. Сделаем аналогичный расчет в Python: На этом я решил остановиться. Собрал все примеры вместе в одном ноутбуке School Chemistry Assignments.ipynb Есть и другие библиотеки химической тематики. Здесь хорошая подборка с кратким описанием - Awesome Python Chemistry. По итогу можно сделать вывод, что существующих библиотек с оцифрованной версией таблицей Менделеева и дополнительными функциями достаточно для решения простых задач по химии. Это можно использовать как инструмент для проверки ответов, рассчитанных вручную. На мой взгляд это интересный пример совмещения развития навыков программирования на Python с практическим решением задач по химии в школе.  аналитик данных