# PART 3 - Check if two dictionaries representing # the type and number of atoms on two sides of # a chemical equation contain different # key-value pairs ######################################################## def find_unbalanced_atoms(reactant_atoms, product_atoms): """ (Dict,Dict) -> Set Determine if reactant_atoms and product_atoms contain equal key-value pairs. The keys of both dictionaries are strings representing the chemical abbreviation, the value is an integer representing the number of atoms of that element on one side of a chemical equation. Return a set containing all the elements that are not balanced between the two dictionaries. >>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "Na" : 1, "Cl" : 2}) {'Na'} >>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "Na" : 2, "Cl" : 2}) set() >>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "F" : 2, "Cl" : 2}) {'F', 'Na'} """ # TODO your code here (DO PART 3.)
# PART 1 - Complete the function below to deocompose
# a compound formula written as a string
# in a dictionary
######################################################
import chemparse
def mol_form(compound_formula):
"""(str) -> dictionary
When passed a string of the compound formula, returns a dictionary
with the elements as keys and the number of atoms of that element as values.
>>> mol_form("C2H6O")
{'C': 2, 'H': 6, 'O': 1}
>>> mol_form("CH4")
{'C': 1, 'H': 4}
"""
print((chemparse.parse_formula(compound_formula)))
mol_form("C2H6O")
mol_form("CH4")
######################################################
# PART 2 - Complete the function below that takes two
# tuples representing one side of a
# chemical equation and returns a dictionary
# with the elements as keys and the total
# number of atoms in the entire expression
# as values.
######################################################
def expr_form(expr_coeffs:tuple, expr_molecs: tuple) -> dict:
expr_Length = len(expr_molecs)
expr_result= {}
for i in range (expr_Length):
coefficient = expr_coeffs[i]
molecules = expr_molecs[i]
for item, num in molecules.items():
if item not in expr_result:
expr_result[item]= coefficient * num
else:
expr_result[item]+= coefficient * num
return expr_result
"""
(tuple (of ints), tuple (of dictionaries)) -> dictionary
This function accepts two input tuples that represent a chemical expression,
or one side of a chemical equation. The first tuple contains integers that
represent the coefficients for molecules within the expression. The second
tuple contains dictionaries that define these molecules. The molecule
dictionaries have the form {'atomic symbol' : number of atoms}. The order
of the coefficients correspond to the order of molecule dictionaries.
The function creates and returns a dictionary containing all elements within
the expression as keys and the corresponding number of atoms for each element
within the expression as values.
For example, consider the expression 2NaCl + H2 + 5NaF
>>> expr_form((2,1,5), ({"Na":1, "Cl":1}, {"H":2}, {"Na":1, "F":1}))
{'Na': 7, 'Cl': 2, 'H': 2, 'F': 5}
"""
# TODO your code here
########################################################
# PART 3 - Check if two dictionaries representing
# the type and number of atoms on two sides of
# a chemical equation contain different
# key-value pairs
########################################################
def find_unbalanced_atoms(reactant_atoms, product_atoms):
"""
(Dict,Dict) -> Set
Determine if reactant_atoms and product_atoms contain equal key-value
pairs. The keys of both dictionaries are strings representing the
chemical abbreviation, the value is an integer representing the number
of atoms of that element on one side of a chemical equation.
Return a set containing all the elements that are not balanced between
the two dictionaries.
>>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "Na" : 1, "Cl" : 2})
{'Na'}
>>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "Na" : 2, "Cl" : 2})
set()
>>> find_unbalanced_atoms({"H" : 2, "Cl" : 2, "Na" : 2}, {"H" : 2, "F" : 2, "Cl" : 2})
{'F', 'Na'}
"""
# TODO your code here
(DO PART 3.)
Step by step
Solved in 3 steps with 3 images