====== Reconnaître une espèce chimique ====== ===== Un alcane ===== Un **alcane** est une molécule composée de carbone et d'hydrogène. Le méthane, le propane, le butane sont des alcanes. Par exemple, le butane a pour composition C4H10, soit 4 atomes carbone et 10 atomes hydrogène. En général, si $n$ est le nombre d'atomes carbone, le nombre d'atomes hydrogène est $2n+2$. **À faire :** Écrire une fonction ''est_alcane(formule)'' qui pour une formule donnée sous forme de texte, par exemple ''%%"C4H10"%%'' renvoie ''True'' ou ''False'', selon si c'est un alcane ou non. L'usage est de ne pas écrire le 1 quand il n'y a qu'un seul atome. Par exemple ''%%"CH4"%%'' pour le méthane ou ''%%"CO2"%%'' pour le dioxyde de carbone. ==== Tests ==== Ajoutez les tests suivants à la suite de la fonction : # tests assert est_alcane("C") == False assert est_alcane("C2") == False assert est_alcane("CH4") == True assert est_alcane("C2H6") == True assert est_alcane("C3H8") == True assert est_alcane("C15H32") == True assert est_alcane("C15H62") == False assert est_alcane("CO2") == False assert est_alcane("CuB7C15Na3") == False assert est_alcane("4C10H") == False ===== Alcool ==== Vous pouvez vérifier une structure plus complexe qui précise l'organisation de la molécule. Par exemple, on note les alcools sous cette forme CH3-CH2-CH2-OH pour le propanol. **À faire :** écrire une fonction ''est_alcool(formule)''. ===== Pour aller plus loin ===== Découper une chaîne caractère après caractères est fastidieux et peu performant. L'informatique propose une théorie des langages qui étudie la capacité à reconnaître certains motifs. [Noam Chomsky](https://fr.wikipedia.org/wiki/Noam_Chomsky) a grandement contribué à cette théorie. Une application : **les expressions régulières**. Voici un exemple pour le cas précédent : import re # expressions régulières def decomposeFormule(formule): regex = "([A-Z][a-z]*)([0-9]*)" return re.findall(regex, formule) On obtient un découpage parfait même pour des formules comme ''%%"Cu12N3HB"%%''. La suite du travail en est grandement facilitée.