====== 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.