• Python
  • 09. Strings e Fatiamento

Strings e Fatiamento#

Métodos de uma string#

O que são métodos?#

Quando trabalhamos com listas sabemos que é possível usar o .append() para adicionar um elemento. O Python sabe em qual lista ele deve adicionar o novo elemento porque o .append() é sempre precedido pelo nome da lista. Por exemplo:

lista1 = [1,2,3,4]
lista2 = [9,8,7,6]
lista1.append(5)

O número 5 será adicionado à lista1, pois o append(5) está associado a ela através do ponto (.). Esse tipo especial de funções é o que chamamos de método (lembre-se que normalmente os argumentos de uma função são passados dentro dos parênteses). Por enquanto isso é tudo o que precisamos saber sobre um método: é uma função especial que está associada a um objeto (no caso uma lista) específico. Trabalharemos um pouco mais com métodos durante o projeto utilizando o Pygame.

Exercício 1

Vimos que o .append() é um tipo especial de função. Como são chamados esses tipos especiais de funções?

Resposta

Essas funções especiais chamamos de métodos.

Até o momento já vimos alguns desses métodos como o .append().

Alguns métodos de strings#

Vimos em aulas anteriores que é possível criar uma nova string a partir de outras duas strings usando o +: 'abcd' + 'efgh' vai gerar a string 'abcdefgh'. Assim, não precisamos do .append() (de fato, ele nem funciona para strings). Mas existem diversos métodos específicos de strings que podem ser bastante úteis. Uma lista completa pode ser encontrada na documentação, mas vamos focar em alguns métodos principais:

Método find#

O método que retorna a posição da primeira ocorrência de uma dada string em outra. Se não encontrou, retorna -1. Por exemplo: 'abcde'.find('c') devolve o número 2.

Exercício 2

Considere o código a seguir:

palavra = 'Developer Life'
print(palavra.find('r'))

Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 8.

Utilização do método .find para encontrar a letra 'r'

Exercício 3

Considere o código a seguir:

palavra = 'Developer Life'
print(palavra.find('e'))

Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 1.

Quando a string possui mais de uma ocorrência da letra que estamos procurando, o método retorno o índice da primeira ocorrência encontrada.

Utilização do método .find para encontrar a letra 'e'

Exercício 4

Resolva o exercício Posição do @.

Acessar exercício

Método replace#

O método que recebe duas strings e retorna uma nova string com todas as ocorrências da primeira substituídas pela segunda. Por exemplo: 'abcba'.replace('b', 'd') devolve a string 'adcda'.

Exercício 5

Considere o código a seguir:

palavra = 'Developer Life'
print(palavra.replace('e', '*'))
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 'D*v*lop*r Lif*'. O método replace retorna uma nova string, onde todas as ocorrências da letra 'e' foram trocadas por '*'.

Exercício 6

Considere o código a seguir:

palavra = 'Developer Life'
palavra.replace('e', '#')
print(palavra)
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 'Developer Life'. Note que o método .replace não altera o valor armazenado na variável palavra.

Se quisermos atualizar o valor da variável palavra podemos fazer da seguinte forma:

palavra = 'Developer Life'
palavra = palavra.replace('e', '#')
print(palavra)

Método strip#

O método que não recebe nenhum argumento e retorna uma nova string removendo os caracteres em branco (incluindo o caractere especial '\n') de ambas as pontas. Por exemplo: ' uma frase \n'.strip() devolve a string 'uma frase' (note que o espaço do meio não é removido).

Exercício 7

Considere o código a seguir:

palavra = '    Developer    Life    '
print(f'->{palavra.strip()}<-')
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso:

'->Developer    Life<-'

O método .strip() remove os caracteres em branco do início e fim da string. Note que, os espaços em branco do meio não foram removidos.

Exercício 8

Considere o código a seguir:

palavra = '    Developer    Life    '
palavra.strip()
print(f'->{palavra}<-')
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso:

'->    Developer    Life    <-'

Note que o método .strip() não altera o valor armazenado na variável palavra.

Se quisermos atualizar o valor da variável palavra podemos fazer da seguinte forma:

palavra = '    Developer    Life    '
palavra = palavra.strip()
print(f'->{palavra}<-')

Método split#

O método que recebe uma string delimitadora (ex: ',') e retorna uma lista formada pela separação da string original pelo delimitador. Por exemplo: 'uma palavra, outra palavra, última palavra'.split(',') devolve a lista ['uma palavra', ' outra palavra', ' última palavra']. Se nenhum argumento for utilizado o delimitador utilizado será o espaço em branco. Por exemplo: 'palavras separadas por espaço'.split() devolve a lista de strings ['palavras', 'separadas', 'por', 'espaço'].

Exercício 9

Considere o código a seguir:

palavra = 'Developer Life'
print(palavra.split())
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso ['Developer', 'Life'].

Quando não passamos nenhum argumento para o método split, os caracteres em branco serão utilizados como delimitadores.

Exercício 10

Considere o código a seguir:

palavra = 'Deve\nloper Li   fe'
print(palavra.split())
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso ['Deve', 'loper', 'Li', 'fe']

Quando não passamos nenhum argumento para o método split, os caracteres em branco serão utilizados como delimitadores.

Note que, o caractere especial '\n' também é utilizado como delimitador.

Exercício 11

Considere o código a seguir:

palavra = 'Developer Life'
print(palavra.split('e'))
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso ['D', 'v', 'lop', 'r Lif', ''].

Exercício 12

Resolva o exercício Tamanho das senhas.

Acessar exercício

Método join#

O método que recebe uma lista de strings e retorna uma única string separada pelo delimitador. Por exemplo: ' '.join(['a', 'b', 'c']) devolve a string 'a b c'. Outro exemplo: ','.join(['a', 'b', 'c']) devolve a string 'a,b,c'.

Exercício 13

Considere o código a seguir:

lista = ['D', 'v', 'lop', 'r Lif', '']
print('e'.join(lista))
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 'Developer Life'.

O código 'e'.join(lista) define o caractere 'e' como delimitador e esse delimitador será colocado entre as strings da lista, gerando a string 'Developer Life'.

Exercício 14

Considere o código a seguir:

frutas = ['abacaxi', 'banana', 'caqui']
print(''.join(frutas))
Ao testar o código acima, o que foi impresso no terminal?

Resposta

Foi impresso 'abacaxibananacaqui'.

O código ''.join(frutas) define o caractere '' como delimitador e esse delimitador será colocado entre as strings da lista frutas, gerando a string 'abacaxibananacaqui'.

Exercício 15

Faça uma função que recebe uma string contendo uma frase, uma palavra original e uma nova palavra. A função deve retornar uma nova string com todas as ocorrências da palavra original substituídas pela nova palavra.

Exemplo:

texto = "Coloque banana na bananada"
palavra_original = "banana"
nova_palavra = "açúcar"

A função deve retornar a string:

"Coloque açúcar na bananada"

Perceba que a palavra "banana" foi substituída, mas a palavra "bananada" não foi alterada.

Arraste blocos daqui

return texto_alterado
if palavra == palavra_original:
else:
palavras_novas.append(nova_palavra)
texto_alterado = ' '.join(palavras_novas)
for palavra in texto.split():
def substituir_palavra(texto, palavra_original, nova_palavra):
palavras_novas.append(palavra)
palavras_novas = []
palavra = palavra.replace(palavra_original, nova_palavra)
texto = texto.replace(palavra_original, nova_palavra)
Solte os blocos aqui
def substituir_palavra(texto, palavra_original, nova_palavra):
    palavras_novas = []
    for palavra in texto.split():
        if palavra == palavra_original:
            palavras_novas.append(nova_palavra)
        else:
            palavras_novas.append(palavra)
    texto_alterado = ' '.join(palavras_novas)
    return texto_alterado

Resposta

Resposta errada

Resposta correta

Fatiamento de strings e listas#

Vamos ver como funciona a operação de fatiamento. 👉 Clique aqui