A função split

tudo separadinho


Material de apoio para a disciplina Linguagem de Programação da UACSA/UFRPE

Produzido pelo prof. João Pimentel

Às vezes a gente tem uma string com vários valores, e queremos fazer alguma coisa com esses valores. Como faz? Aí é que entra a função split! Mas primeiro vamos ver um exemplo em que isso acontece.

Suponha que você quer que o usuário digite 4 números, para depois calcular o somatório. Poderia ser assim:

print('digite 4 números:') valor1 = float(input('1: ')) valor2 = float(input('2: ')) valor3 = float(input('3: ')) valor4 = float(input('4: ')) resultado = valor1 + valor2 + valor3 + valor4 print('a soma é', resultado)

Nada de extraordinário, certo?

Mas agora que sou um(a) super-programador(a), quero facilitar a vida do(a) usuário(a): vou deixar a pessoa escrever os 4 números de uma vez só, separados por um espaço. Assim, ó:

Para separar os quatro números e poder fazer a conta, usamos a função split.

A função split separa um texto em vária partes, separando onde tem um espaço e guardando todas as partes em uma lista.

texto = 'oi blz tchau' separado = texto.split() print(separado)

Nesse exemplo o resultado é uma lista contendo 3 strings: 'oi', 'blz' e 'tchau'. Se eu quiser usar o a segunda palavra, é só pegar o segundo elemento da lista, então print(separado[1]) vai imprimir a palavra 'blz', blz?

Às vezes os nossos dados são separados por algum símbolo, como por exemplo uma vírgula. Nesse caso, o código
texto = 'oi,blz,tchau' separado = texto.split() print(separado)

vai dar erro, por que a função split vai tentar separar nos espaços, mas nesse texto não tem espaços. Nada tema, podemos mandar o split separar pela vírgula, assim: texto.split(',')

Isso é muito prático para salvar e carregar dados de um arquivo - por exemplo, o save de um jogo. Existe até um formato de arquivo, muito usado, chamado CSV, da sigla em inglês para "valores separados por vírgulas".

Naquele nosso primeiro exemplo usamos números, mas uma coisa importante sobre números é que strings não são números. Em

texto = '5.1 9 3 0' separado = texto.split() print(separado) print(separado[1]*5)
O split vai separar os "números", mas eles permanecerão sendo strings, então é preciso usar a função int() ou float() para transformar o texto em um número de fato, senão não conseguiremos fazer as contas nem as comparações numéricas. Veja o resultado:
['5.1', '9', '3', '0'] 99999

Para conseguirmos fazer a conta vamos transformar cada uma das strings em números, usando a função float(). O programa completo fica assim:

entrada = input('digite 4 números: ') entrada = entrada.split() resultado = float(entrada[0]) + float(entrada[1]) + float(entrada[2]) + float(entrada[3]) print('a soma é', resultado)
Se a gente tem muitos números, tipo assim, mais que 10 números, começa a ficar ruim ter que converter de um em um. Pior ainda é se não sabemos quantos números serão. Uma solução é mandar o computador fazer a conversão de cada elemento da lista pra gente, com um comando de repetição como o for:
entrada = input('digite quantos números quiser: ') entrada = entrada.split() entrada_convertida = [] for elemento in entrada: #converte o elemento para float e o acrescenta na outra lista entrada_convertida.append(float(elemento)) print('a soma é', sum(entrada_convertida))
Legal, né? Agora a pessoa pode digitar quantos números quiser, que o nosso programa irá somar todos eles.

Quando estudamos mais acabamos aprendendo funções que facilitam a nossa vida, e uma delas é a função map. Podemos usá-la para fazer a conversão de uma lista de strings para uma lista de números de uma forma mais enxuta, mas que acaba sendo mais complicada para quem não conhece bem a função map ainda. O nosso programa pode ficar assim:

entrada = input('digite quantos números quiser: ') #converte a lista de strings para uma lista de números, aplicando a função float: entrada = list(map(float, entrada.split())) print('a soma é', sum(entrada))
abra e execute esse exemplo no repl.it
fim =)