как понимать какой индекс указал пользователь

у меня есть код для получения всех составляющих молекулы например вода "H 2 O".split(" ") я указываю все через пробел и в результате етого кода я получаю список ['H','2','O'], мне надо узнать сколько гидрогена (или другого атома) в етом списке по числу стоящему после атома, а если числа нету то писать в консоль что атом один, как можно это сделать?


Ответы (1 шт):

Автор решения: Алексей Р

Можно сделать через регулярные выражения

import re

atom = 'h'

for substance in 'H 2 O', 'c2h5oh', 'HCl', 'CH 3 COO H', 'O2':
    res = re.findall(rf'{atom.lower()}\s*(\d*)', substance.lower())
    if len(res) > 0:
        s = sum(1 if t == '' else int(t) for t in res)
        print(f'Атомов `{atom.upper()}` в веществе `{substance}` - {s} шт.')
    else:
        print(f'Атомов `{atom.upper()}` в веществе `{substance}` не обнаружено')
Атомов `H` в веществе `H 2 O` - 2 шт.
Атомов `H` в веществе `c2h5oh` - 6 шт.
Атомов `H` в веществе `HCl` - 1 шт.
Атомов `H` в веществе `CH 3 COO H` - 4 шт.
Атомов `H` в веществе `O2` не обнаружено
→ Ссылка