• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lanah_

Funcao: Atomos de uma molecula

2 mensagens neste tópico

Como que faco para obter uma lista de strings que tenha somente os atomos de uma molecula?

Por exemplo, na funcao: atoms(Fe1O1), o resultado seria ['Fe','O'].

Eu tentei fazer algo, mas o 'F' sempre fica separado do 'e'... Minha funcao abaixo

def atoms(molecule): 
    atoms_list = []    
    for each_atom in letters(molecule):    
        if not each_atom in atoms_list:    
            atoms_list.append(each_atom)    
    return atoms_list

resultado:

>>> atoms("Fe1O1")
['F', 'e', 'O']

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para moleculas simples e assumindo que há sempre o quantificador, aqui fica uma função que retorna os átomos e as quantidades respectivas. Tenta perceber como funciona :P

>>> def atoms(molecule):
    atoms_list = {}
    buff = ''
    tmpqtd = ''
    for char in molecule:
        if ord(char)-48 in range(10):
            tmpqtd += char
        else:
            if tmpqtd != '':
                atoms_list[buff] = int(tmpqtd)
                buff = ''
                tmpqtd = ''
            buff += char
    if tmpqtd != '':
        atoms_list[buff] = int(tmpqtd)
    return atoms_list

>>> atoms("Fe1O1")
{'Fe': 1, 'O': 1}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora