# -*- coding:utf-8 -*- __projet__ = "Corrections" __nom_fichier__ = "mineraux" __author__ = "Prénom Nom" __date__ = "janvier 2022" def compose(symb, mineral): """ @param symb: symbole d'un élément chimique ex : "Ca" @param l_composants: liste de composants d'un minéral ex :["Ca-1", "C-1", "O-3"] @return: True si symb apparaît dans la composition du minéral False sinon """ for composant in mineral: # on découpe le composant pour récupérer le nom du symbole liste_comp = composant.split("-") if symb in liste_comp: # on teste si c'est le symbole cherché return True return False def inventaire(mineraux, symb): """ @param dico: dictionnaire contenant la composition des minéraux ex : mineraux = {"Calcite" : ["Ca-1", "C-1", "O-3"], "Diamant" : ["C-1"]} @param symb: le symbole d'un élément chimique @return: liste des composants dans lequel apparaît le symbole symb """ lcomposants = [] for mineral in mineraux: # pour chaque minéral, on regarde si symb apparaît dans sa composition if compose(symb, mineraux[mineral]): # dans ce cas on l'ajoute dans la liste lcomposants.append(mineral) return lcomposants def ajoute_mineral(mineraux, mineral, lcomposants): """ @param dico: dictionnaire de minéraux @param mineral: nom d'un minéral @param lcomposants: liste des composants de ce mineral exemple [("Ag", "1"), ("Au", "1"), ("Te", "4")] @return: """ # construction de la chaîne du composant composition = [] for symb, rep in lcomposants: # on construit le composant sous la bonne forme composant = symb + "-" + rep composition.append(composant) mineraux[mineral] = composition if __name__ == '__main__': mineraux = {"Gypse" : ["Ca-1", "S-1", "O-4", "H-2", "O-1"], "Orthose" : ["K-1", "Al-1", "Si-3", "O-8"], "Calcite" : ["Ca-1", "C-1", "O-3"], "Diamant" : ["C-1"], "Beryl" : ["Be-3", "Al-2", "Si-6", "O-18"]} lcomposants = inventaire(mineraux, "Ca") print(lcomposants) ajoute_mineral(mineraux, "Sylvanite", [("Ag", "1"), ("Au", "1"), ("Te", "4")]) print(mineraux)