S04 - Atividade de Aprendizagem (3 de 3): Percorrendo Strings
Material de Preparação
Laços em Strings
Link Direto: Percorrendo Strings
Você pode percorrer cada letra de uma string usando qualquer estilo de loop for (o estilo "for each" ou o estilo "for i in range"). Por exemplo, você pode fazer o loop em cada letra, uma de cada vez, com o seguinte código:
nome = "Brigham"
for letra in nome:
print(f"A letra é: {letra}")
A saída deste código é:
A letra é: B
A letra é: r
A letra é: i
A letra é: g
A letra é: h
A letra é: a
A letra é: m
Assim como antes, não há nada de especial no nome da variável letra. Qualquer nome poderia ter sido usado. Mas a escolha de letra nos ajuda a manter o código organizado e fácil de ler.
Acessando Letras por Posição
Às vezes, você precisa acessar uma letra de acordo com sua posição (ou índice) em uma string. Em outras palavras, você pode querer saber qual é a terceira ou a sétima letra de uma string. Isso será útil quando for comparar letras na mesma posição em duas strings, como no projeto desta aula.
Você pode acessar uma letra específica em uma string usando colchetes [], como palavra[3] ou palavra[12]. Mas esteja ciente de que a contagem começa em 0, então você usará 3 para obter a quarta letra (não a terceira letra). O exemplo a seguir obtém a quarta letra do nome:
nome = "Brigham"
quarta_letra = nome[3] # Perceba, usando 3 em vez de 4
print(quarta_letra) # exibe um 'g' na tela
Percorrendo cada letra usando um índice
Nas seções anteriores, você aprendeu como percorrer cada letra de uma string, mas isso só lhe deu acesso à letra, e não ao índice dessa letra. Em muitos casos, isso é suficiente. Porém, em outros casos, você precisará conhecer a letra e seu índice. Por exemplo, no seu projeto você precisará conhecer a letra e também verificar sua posição em outra palavra.
Nesse caso, em vez de fazer loop nas letras, você pode fazer loop usando os números de índice. Se você souber o comprimento da palavra, pode fazer o seguinte:
palavra = "vida"
numero_de_letras = 4
for index in range(numero_de_letras):
print(index)
Este código exibe o seguinte:
0
1
2
3
Então, você pode usar colchetes para acessar a letra nesse índice da seguinte maneira:
palavra = "vida"
numero_de_letras = 4
for index in range(numero_de_letras):
letra = palavra[index]
print(f"Índice: {index} Letra: {letra}")
Este código exibe o seguinte:
Índice: 0 Letra: v
Índice: 1 Letra: i
Índice: 2 Letra: d
Índice: 3 Letra: a
Com este exemplo, você tem acesso à letra e ao índice em cada etapa do loop.
Encontrando o Comprimento da String
O exemplo anterior presumiu que o número de letras, ou comprimento (length) da string, seria sempre 4, mas isso não vai funcionar se a string tiver mais ou menos letras. Em vez de digitar 4 diretamente, você pode deixar o computador encontrar o comprimento usando a função len. O código a seguir mostra como usar len para obter o comprimento de uma string:
nome_do_cachorro = input("Qual é o nome do seu cachorro? ")
contagem_de_letras = len(nome_do_cachorro)
print(f"O nome do seu cachorro tem {contagem_de_letras} letras")
A saída deste código deve ser:
Qual é o nome do seu cachorro? Thor
O nome do seu cachorro tem 4 letras
Combinar a função len com o loop anterior é altamente eficiente, porque agora você pode percorrer pelos índices e letras de strings de qualquer comprimento, da seguinte maneira:
palavra = "vida"
numero_de_letras = len(palavra) # Observe que isso agora pode funcionar para qualquer string
for index in range(numero_de_letras):
letra = palavra[index]
print(f"Índice: {index} Letra: {letra}")
Este código exibirá o seguinte:
índice: 0 Letra: v
Índice: 1 Letra: i
Índice: 2 Letra: d
Índice: 3 Letra: a
Listas
Muitos dos exemplos que você vê com loops for costumam percorrer uma lista de itens, incluindo números em uma lista ou letras em uma string. Isto naturalmente se estende a processos com outras propriedades de listas, como encontrar o comprimento da palavra ou a posição da letra.
O material desta semana apresenta alguns desses conceitos, mas esteja ciente de que o material da próxima semana se concentrará inteiramente nas atividades com listas. Assim, embora você comece a usar um pouco das listas agora, você praticará muito mais e aprenderá os detalhes ainda melhor à medida que avançar para a próxima semana.
(Opcional) Enumeração em Python
Usar um loop for e o comprimento da string é uma maneira padrão de acessar o índice e a letra. No entanto, Python também tem uma maneira de acessar essas duas variáveis diretamente usando uma função especial chamada enumerate, conforme mostrado no exemplo a seguir:
nome = "Brigham"
# Observe que usando enumerate, especificamos i e letra
for i, letra in enumerate(nome):
print(f"A letra {letra} está na posição {i}")
A saída deste código é:
A letra B está na posição 0
A letra r está na posição 1
A letra i está na posição 2
A letra g está na posição 3
A letra h está na posição 4
A letra a está na posição 5
A letra m está na posição 6
Isso é um pouco diferente do loop for padrão, porque retorna duas variáveis. Esta função não é suportada em muitas linguagens, mas está disponível em Python e você pode usá-la em seus programas, se desejar.
Instruções da Atividade
Escreva um programa que solicite ao usuário a letra favorita dele. Então, faça um loop em uma palavra programada, uma letra de cada vez. Se a letra da palavra programada for a favorita do usuário, primeiro você a exibirá em maiúscula, então a "ocultará". Se a letra não for a favorita, você a exibirá em minúscula.
Exibição sem novas linhas
Até este ponto, toda vez que usamos uma instrução print, ela sempre esteve em sua própria linha, de modo que a próxima linha comece em uma nova linha. Se não quiser que a instrução print termine com uma nova linha, você pode especificar o final, usando end, da seguinte maneira:
print("Esta é a linha um.", end="")
print("Esta é a linha dois.")
Isso exibirá o seguinte:
Esta é a linha um.Esta é a linha dois.
Observe que, como você disse à primeira instrução print para terminar com nada (usando ""), ela não termina com uma nova linha e a próxima linha é impressa diretamente após ela.
Trabalhando em Etapas
A versão final deste programa ocultará as letras, transformando-as em um sublinhado _. Para ajudar você a chegar a esse ponto, você seguirá três etapas.
Coloque a Letra Favorita em Maiúscula
Crie uma variável de string para conter a palavra “Compromisso”.
Escreva um código que faça loop na palavra letra por letra. Se a letra for “m”, exiba-a em maiúscula. Se a letra for qualquer outra coisa, exiba-a como letra minúscula.
Para esta parte, não há problema em exibir cada letra em sua própria linha.
A saída deve ser a seguinte:
c
o
M
p
r
o
M
i
s
s
o
Limpe a Saída
Altere as instruções de exibição (print) para que cada letra não seja exibida em sua própria linha, mas uma ao lado da outra, na mesma linha.
Além disso, altere o programa para permitir que o usuário especifique a letra (em vez de sempre usar “m”). Certifique-se de que seu programa corresponda à letra da palavra, independentemente de o usuário inseri-la como maiúscula ou minúscula e independentemente de a letra ser maiúscula ou minúscula na palavra original.
A saída poderia ser a seguinte:
Qual é a sua letra favorita? I
compromIsso
Oculte a Letra
Mude o programa para que, em vez de colocar a letra favorita do usuário em maiúscula, ele a “oculte” e a substitua por um sublinhado na exibição.
A saída poderia ser a seguinte:
Qual é a sua letra favorita? m
co_pro_isso
Outro exemplo poderia ser:
Qual é a sua letra favorita? s
compromi__o
Exemplo de Solução
Quando terminar seu programa, por favor, consulte o exemplo de solução para comparar sua abordagem com a apresentada.
Primeiro, trabalhe para concluir o programa sem consultar o exemplo de solução. Caso tenha trabalhado por um longo tempo e ainda enfrente dificuldades, sinta-se à vontade para usar o exemplo para ajudá-lo a finalizar seu programa.
Procedimento de Teste
Verifique se o seu programa funciona fazendo alterações e garantindo que ele funcione conforme o esperado:
- Experimente algumas letras diferentes como favoritas.
- Experimente uma palavra diferente.
- Experimente uma palavra com um espaço.
- Experimente uma letra que não esteja presente na palavra.
Envio de Tarefa
Agora você concluiu todas as atividades de aprendizagem da semana!
Lembre-se de:
- Voltar ao Canvas e responder ao respectivo questionário.
Próxima Atividade
- S04 - Questionário: Laços de Repetição
Outros Links:
- Voltar para: Visão Geral da Semana | Página Inicial