Operações com String

Teoria Completa

Indexação de strings

Okay, agora que a gente já aprendeu a usar as strings, vou te contar o que elas são: sequências de caracteres. Cara, na verdade, todo texto é composto por um conjunto de várias letras, né? Por isso, em Python é a mesma coisa. E a ideia que a gente vai trocar é sobre como pegar essas letras individualmente e como formatar as strings!

Primeiro, se toda string é uma sequência de caracteres, como a gente pode pegar um único termo dessa sequência?!

Relaxa! Vou te mostrar que é simples! Começando por um exemplo prático. Olha esse código:

O resultado desse programa vai ser esse:

Viu que só apareceu o Y, e não a string toda?! Isso é porque a gente usou aqueles colchetes ali ([]). A gente pode, depois da string, colocar os colchetes pra especificar qual letra da sequência a gente quer.

Além disso, repara que a primeira letra tem o índice 0. Isso porque os computadores começam as contagens no 0, diferente da gente, que começa a contar no 1. Por isso, a primeira posição é a 0, beleza?! Essa é a relação entre as letras da string nome e os índices:

Fatiamento de String

Mas além de usar os colchetes pra pegar só uma letra, a gente também consegue pegar uma fatia da nossa string. Por exemplo:

O resultado desse código é:

Olha lá! Também dá pra pegar uma fatia da string usando “:” dentro dos colchetes. Nesse caso, a gente pegou uma fatia de string começando na letra do índice 0 e parou na letra de índice 2, sem contar com ela (lembra disso, a última letra da fatia não vem junto).

Porém, as strings são imutáveis. Isso significa que depois que você cria uma string você pode ler ela toda ou ler uma parte dela, mas não pode editar!

Formatação de strings

Cara, é muito comum a gente precisar fazer combinações de textos com dados de diversos tipos que a gente tem no nosso programa. A gente podia ficar fazendo conversão de tipos e concatenando, mas pra facilitar a nossa vida existem algumas formas de formatar strings.

Porém, Python é uma linguagem bem velhinha. Com o passar do tempo, várias formas de formatação de string foram criadas. Mas você não precisa aprender todas, óbvio. Você só precisa aprender a que cai na sua prova! Eu vou ensinar 3 aqui, mas você tem que me prometer que só vai ler a que cai na sua faculdade, ok???

Aqui, eu vou escrever um código com três tipos de formatação ao mesmo tempo pra tu se familiarizar. Depois, vou descrever cada um deles!

Repara que em texto1 a gente usou só conversão de tipo e concatenação. Funcionou bem e teve resultado igual às demais! Já a variável texto2 usou um tipo de formatação que vou te falar agora!

Formatação com .format()

Tudo que você precisa fazer é colocar {n} dentro da sua string, com n sendo um número natural. No fim da string, você coloca um .format() e dentro dessa função você coloca os valores a serem substituídos.

É importante você reparar na ordem! Todo {0} no texto vai ser substituído pelo primeiro valor dentro de .format(), nesse caso, idade. Assim como todo valor de {1} vai ser substituído por idade, beleza?! Se liga nos testes:

E o resultado desse programa quando a gente executa é:

Formatação com %

Essa é de longe a mais complicadinha, porque você tem que especificar o tipo do dado que você quer passar, respeitando essa tabelinha:

Repara que tem um x ali no float. No lugar de x você coloca o número de casas decimais que você quer, beleza?! Essa formatação arredonda automaticamente o número de casas decimais, e isso é muito bom! Olha um exemplo aqui embaixo:

É bem parecido, né?! Só mudo que a gente precisa especificar o tipo. Olha o resultado:

Formatação com f’’

Esse tipo de formatação, colocando um f na frente da string, possibilita a gente colocar dentro da string {expressão}, que vai ser substituído automaticamente no texto. Essa formatação é de longe a mais fácil.

Se liga em como usar ela, na prática e sem enrolação:

E o resultado:

Show! Agora que a gente tá voando em string, bora fazer uns exercícios!!

Te espero lá!

Expandir

Exercício Resolvido #1

CEFET (Itaguaí), 2019.2 – P1

1 ) Implemente um script responsável por receber uma palavra e imprimi-la na ordem inversa.

Exemplo:

Entrada: Entre com a palavra: CEFET

Saída: TEFEC

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Cara, já que a gente tem que receber alguma coisa do usuário, vamos começar perguntando, com a função input().

Beleza! Agora a gente precisa inverter essa palavra. Pra isso, vamos usar as regras de fatiamento de string.

Passo 2

Pra inverter uma string, você só precisa pegar todos os caracteres de trás pra frente, ou seja, de -1 em -1.

Agora a gente tá guardando na variável “palavra” o inverso dela. Pra finalizar, só precisamos exibir.

Passo 3

Pra exibir, já sabe, né?! Função print()!!!

E assim a gente finaliza a questão! =)

Resposta

Exercício Resolvido #2

PUC-Rio, Adaptado

Uma biblioteca distribui um cartão magnético para que os alunos possam frequentá-la. A senha inicial, enviada pelo correio, é gerada automaticamente a partir da data de nascimento do aluno ('dd/mm/aaaa') do seguinte modo:

mm'$'dd(invertido) + '#' + dd'!'mm(invertido) + '\'+aaaa

Exemplo:

Data de nascimento: 25/10/1995

25$01#10!52\1995

Escreva um programa que leia o dia, mês e ano de nascimento de um aluno e retorne sua senha de acordo com as regras acima.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, seus doido! Cara, a primeira coisa que a gente tem que fazer aqui é pedir pro usuário os dados da data de nascimento. Vamos começar usando a função input() pra fazer essas perguntas pro usuário.

Criamos três variáveis, pra guardar os três dados da data de nascimento. Mas repara que a gente não converteu os dados pra números inteiros. O resultado da função input() é sempre texto (string). Mas como a gente não pretende fazer operações matemáticas, não precisamos converter pra números.

Na verdade, é justamente o contrário, pois a gente vai precisar fazer concatenações, que são operações de string. Por isso, a gente realmente precisa que esses dados fiquem na forma de string, ok?!

Passo 2

Agora, a gente tem que criar uma string de senha que vai seguir o modelo descrito no enunciado:

mm'$'dd(invertido) + '#' + dd'!'mm(invertido) + '\'+aaaa

O primeiro problema que a gente quer entender é que pra formatar essa senha a gente precisa do mês e o dia invertidos. Vamos começar invertendo essas variáveis.

Pra pegar uma cópia de string de trás pra frente, a gente pode pegar a string com seguida do fatiamento [::-1]. Strings de trás pra frente são muito comuns e é importante você lembrar desse padrão, beleza?!

Passo 3

Beleza! Agora já temos todos os dados necessários pra fazer a senha. Vamos seguir o modelo.

mm'$'dd(invertido) + '#' + dd'!'mm(invertido) + '\'+aaaa

Olha, a gente simplesmente foi concatenando (unindo) as strings pra que o resultado fique no formato esperado no enunciado. É importante tu se ligar que pra colocar uma contra barra na string, assim como manda no modelo do enunciado, a gente tem que colocar duas barras na string. (\\).

Isso é porque a contra barra (\) é usada pra inserir caracteres especiais na string, e pra adicionar a própria contra barra é necessário usar duas.

Agora, só precisamos exibir pro usuário.

Passo 4

No fim, a gente precisa exibir a senha que a gente montou pro aluno. Pra exibir, precisamos usar a função print().

Agora sim! O resultado vai ser exibido no final e assim a gente finaliza o exercício! Te espero no próximo, doido!

Resposta

Exercício Resolvido #3

PUC-Rio, Adaptado

Escreva um programa que receba uma string e exiba a string com o caractere ”#” no início, no meio e no final dela. Por exemplo, se a entrada for ”abcd”, a saída deve ser ”#ab#cd#”. Outro exemplo: se receber ”abcde”, a função deve retornar ”#ab#cde#

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Cara, se a gente precisa receber uma string do usuário, já lembramos logo da função input(). Vamos perguntar pro usuário!

Pronto! Agora a gente já tem na variável “string” a string que a gente quer “editar”. Vamos começar colocando os hashtags (#) no início e no fim, que é mais de boas de fazer.

Passo 2

Pra gente adicionar hashtags no início e no fim, a gente pode concatenar.

Viu?! A gente concatenou (vulgo “uniu”) a string que a gente recebeu com um hashtag antes e um depois. Agora só falta a gente colocar um hashtag no meio. Pra fazer isso a gente vai precisar lembrar dos fatiamentos de string.

Passo 3

No terceiro passo, a gente precisa separar a string no meio pra conseguir concatenar uma hashtag lá.

Vou te dar um exemplo antes pra tu se ligar na ideia. Vamos supor que nossa string até então tá assim:

Pra gente colocar uma hashtag ali no meio, vamos dividir a string em duas.

Isso porque depois que a gente separa, a gente consegue concatenar uma hashtag ali no meio! Saca só:

Depois, o resultado vai ser isso:

Viu? Malandramente!

Mas pra dividir nossa string em duas, precisamos saber o tamanho dela, e pra isso a gente precisa da função len().

Olha, a gente criou uma variável chamada “meio” com o índice do caractere na metade da string. É importante tu reparar que a gente precisa, nesse caso, fazer uma divisão inteira ali.

Isso porque não existe índice fracionário na string! Por exemplo, se a string tiver um comprimento ímpar, quando a gente dividir por 2 o resultado seria um número fracionário. A ideia de usar a divisão inteira é arredondar pra baixo, retornando sempre um número inteiro.