Lys, oi, é verdade!
Você está certa, desculpa pela confusão! Outro método, o rfind()
, é o que busca a última ocorrência de uma letra na string, e retorna o nome certinho. Esses métodos também tem a possibilidade de usar mais dois parâmetros que definam onde inicia e onde termina a busca, considerando que cada caractere em uma string seria um número, começando pelo 0, e considerando também os espaços.
Então, se usássemos posicao = nome.find('y', 4, -1)
, o resultado retornaria correto: 4 representa o caractere M
, e -1 é sempre o último valor da string. Podemos utilizar o sinal de negativo para procurar valores de trás para frente.
Sobre essa linha que você ficou com dúvida, funciona assim:
Quando tratamos uma string como se fosse uma lista, cada caractere é um elemento. Fazendo essa concatenação que está na linha nome = nome[:posicao] + 't' + nome[posicao+1:]
, estamos separando a string nome
em
- nome[:posicao]: Todos os caracteres, desde o início, até o valor da variável posição, que contém o índice da letra 'y' encontrada
- 't' : a nova letra, que vai substituir
- nome[posicao+1:] : os caracteres a partir do valor seguinte ao índice da letra 'y' encontrada, até o final
Sendo assim, o valor atribuído a variável nome será a própria variável reconstruída por essa concatenação.
Abraços, Lys! Bons estudos :)