From ea275fca63ba008c8f374452a3cb9b78857068e8 Mon Sep 17 00:00:00 2001 From: TejDeepM Date: Tue, 30 Jun 2026 11:34:38 +0400 Subject: [PATCH 1/2] feat: Add mass_to_moles and moles_to_molecules conversions to molecular_chemistry.py --- conversions/molecular_chemistry.py | 42 +++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/conversions/molecular_chemistry.py b/conversions/molecular_chemistry.py index 51ffe534dd0d..b694a7d7acd8 100644 --- a/conversions/molecular_chemistry.py +++ b/conversions/molecular_chemistry.py @@ -4,6 +4,8 @@ * moles_to_pressure * moles_to_volume * pressure_and_volume_to_temperature +* mass_to_moles +* moles_to_molecules """ @@ -85,7 +87,45 @@ def pressure_and_volume_to_temperature( return round(float((pressure * volume) / (0.0821 * moles))) +def mass_to_moles(mass: float, molar_mass: float) -> float: + """ + Convert mass of a substance to moles. + Mass is taken in grams. + Molar mass is taken in grams per mole (g/mol). + + Wikipedia reference: https://en.wikipedia.org/wiki/Mole_(unit) + + >>> mass_to_moles(36.03, 18.015) + 2.0 + >>> mass_to_moles(11.0, 44.01) + 0.25 + """ + if molar_mass <= 0: + raise ValueError("Molar mass must be greater than zero.") + if mass < 0: + raise ValueError("Mass cannot be negative.") + + return round(float(mass / molar_mass), 2) + + +def moles_to_molecules(moles: float) -> float: + """ + Convert moles of a substance to total molecules using Avogadro's constant. + + Wikipedia reference: https://en.wikipedia.org/wiki/Avogadro_constant + + >>> moles_to_molecules(2) + 1.2044e+24 + >>> moles_to_molecules(0.5) + 3.011e+23 + """ + if moles < 0: + raise ValueError("Moles cannot be negative.") + + return float(f"{moles * 6.022e23:.4e}") + + if __name__ == "__main__": import doctest - doctest.testmod() + doctest.testmod() \ No newline at end of file From 452b32338b48e30a981e7676a7187a83a3f36a53 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 07:41:15 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- conversions/molecular_chemistry.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conversions/molecular_chemistry.py b/conversions/molecular_chemistry.py index b694a7d7acd8..69e3ae5b728f 100644 --- a/conversions/molecular_chemistry.py +++ b/conversions/molecular_chemistry.py @@ -104,7 +104,7 @@ def mass_to_moles(mass: float, molar_mass: float) -> float: raise ValueError("Molar mass must be greater than zero.") if mass < 0: raise ValueError("Mass cannot be negative.") - + return round(float(mass / molar_mass), 2) @@ -121,11 +121,11 @@ def moles_to_molecules(moles: float) -> float: """ if moles < 0: raise ValueError("Moles cannot be negative.") - + return float(f"{moles * 6.022e23:.4e}") if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod()