Aulas do bloco

← Todas as aulas
Pythonaula 607/08/20261h37

Strings: declaração, concatenação, multiplicação e métodos

Detalha o tratamento completo de strings em Python: escape com contrabarra, \n, quebra com contrabarra/par8nteses, docstring com replace() e repr(), concatena840 impl8cita, multiplica840 por inteiro, m8tever_todos upper/title/capitalize com strings imut8veis e sanitiza840, al8m do contraste tipagem forte vs fraca e esquisitices como True+True e operador is. N8o traz aviso de prova,

▶ Abrir gravaçãoIniciar exercíciosMédia60/1000/24 exercícios

Para revisar rápido

Resumo da aula

7 pontos
  • Strings com aspas simples ou duplas precisam abrir e fechar com o mesmo tipo de aspa e na mesma linha.

  • Aspas internas usam escape com contrabarra; \n representa quebra de linha.

  • Textos longos se organizam com contrabarra no fim da linha, parênteses ou concatenação com +.

  • Docstrings (aspas triplas) aceitam várias linhas e aspas internas sem escape, mas as quebras de linha entram na string.

  • Vírgula no print só exibe valores lado a lado com espaço; concatenar de verdade usa +.

  • Python tem tipagem forte e não mistura string com int sem conversão explícita.

  • Multiplicar string por inteiro repete o texto; métodos como upper() e title() devolvem nova string para sanitizar dados.

Guia de estudo

Declarando strings: aspas, escape e mesma linha

Uma string em Python é um pedaço de texto. As formas básicas de declaração usam aspas simples ou aspas duplas. O motivo da regra da mesma aspa é o interpretador precisar saber onde o literal termina: se você abre com simples, fecha com simples; se abre com duplas, fecha com duplas. Misturar os dois tipos deixa um literal não finalizado e o programa nem chega a executar.

Quando o próprio texto contém aspas, entra o escape com contrabarra. A contrabarra imediatamente antes da aspa interna avisa que aquela aspa é conteúdo, não fechamento. Tem de ser a contrabarra (a tecla do lado do Z); a barra comum não funciona como escape. Se não houver aspas para escapar, essa contrabarra não é necessária nesse papel.

Outro escape essencial é a sequência \n, o caractere de quebra de linha. Ao imprimir, o cursor vai para a linha de baixo. Esse mesmo código de escape aparece em várias linguagens, não só no Python.

Strings declaradas com aspas simples ou duplas precisam começar e terminar na mesma linha. Quebrar a linha no meio do literal gera erro. Essa restrição é o motivo de existirem as técnicas da próxima seção para textos longos.

Aspas simples e duplas com o mesmo fechamento

nome = "Ada"
frase = 'Linguagem Python'
print(nome)
print(frase)

Cada literal abre e fecha com o mesmo tipo de aspa. Trocar o tipo no fechamento gera erro de literal não finalizado.

Escape de aspas e quebra de linha

fala = "Ele disse: \"olá\""
print(fala)
print("primeira linha\nsegunda linha")

A contrabarra imediatamente antes da aspa interna faz ela pertencer ao texto. A sequência \n vira linha nova na hora de imprimir.

Textos longos: contrabarra, parênteses, mais e docstring

Para continuar uma expressão na linha seguinte, coloque uma contrabarra no fim da linha. O Python entende que o código segue abaixo.

Outra forma é envolver a expressão em parênteses. Enquanto o fecha-parênteses não aparece, a expressão não acabou, então você pode quebrar linhas. Se o texto for dividido em vários pedaços entre aspas, cada pedaço é uma string e é preciso o operador + para conectá-los. Os parênteses só delimitam início e fim da expressão; quem une os pedaços é o +. Há ainda concatenação implícita: strings literais adjacentes, uma do lado da outra, são unidas automaticamente, sem sinal.

A docstring usa aspas triplas, simples ou duplas. Permite texto em várias linhas e aceita aspas internas sem escape. O detalhe crítico é que cada Enter vira quebra de linha dentro da string. Existe diferença entre como a informação é guardada e como é exibida: na tela você vê linha nova; na memória há o caractere \n. A função repr() devolve a representação guardada, deixando o \n visível. O método replace() substitui um trecho por outro e pode remover essas quebras, trocando-as por espaço, por exemplo.

A docstring tem dois usos: comentário e string multilinha. Textos grandes escritos direto no código são informação hard-coded. Em aplicações reais, especialmente para localização (exibir o idioma conforme o usuário), o caminho é manter textos em arquivos separados e não misturar conteúdo enorme com a lógica.

Parênteses e concatenação com +

frase = (
    "Parte um "
    + "parte dois "
    + "parte três"
)
print(frase)

Os parênteses mantêm a expressão aberta em várias linhas. Como o texto foi fatiado em literais, o + cola os pedaços numa string só.

Concatenação implícita

frase = "Olá, " "mundo"
print(frase)

Literais vizinhos, um do lado do outro, são unidos pelo Python sem operador.

Docstring, repr e replace

texto = """linha um
linha dois"""
print(texto)
print(repr(texto))
print(texto.replace("\n", " "))

O Enter da docstring entra na string. repr() mostra o \n guardado; replace() troca esse caractere por espaço e achata o texto.

Concatenação versus vírgula no print e tipagem forte

Concatenar com + junta strings e produz uma string só, com os pedaços colados. A vírgula dentro do print não concatena. O print aceita vários argumentos e os exibe lado a lado, separados automaticamente por um espaço, sem criar uma string concatenada. Na tela os dois podem parecer parecidos; no programa são operações diferentes.

Essa distinção encontra a tipagem. Python tem tipagem forte: impede operações entre tipos diferentes, como concatenar string com inteiro, sem conversão explícita. JavaScript tem tipagem fraca e faz conversão implícita; nessas linguagens, o texto 10 somado ao número 1 pode virar o texto 101, um resultado estranho e fácil de passar batido. O Python evita essa classe de surpresa.

O mesmo símbolo + serve para somar números e para concatenar strings: a linguagem decide pelo tipo dos operandos. Em Haskell, citada na aula, concatenar e somar usam operadores diferentes, o que deixa a intenção explícita.

Na prática: se você precisa de uma string única, concatene. Se só quer exibir vários valores, passe vários argumentos ao print. A vírgula do print inclusive permite mostrar string e número lado a lado sem tentar colá-los numa string.

Mais cola; vírgula só exibe

print("Olá" + "mundo")
print("Olá", "mundo")

O + gera uma string só, sem espaço extra entre as partes. A vírgula do print mostra dois valores separados por espaço e não concatena.

print("Idade:", 18)

Vários argumentos no print são exibidos com espaço. Isso não é concatenação; misturar string e int com + seria recusado pela tipagem forte.

Multiplicação de strings, booleanos e o operador is

Uma das poucas operações entre tipos diferentes que o Python permite é multiplicar string por inteiro. A string se repete aquelas vezes. O exemplo da aula foi repetir o trecho ra dez vezes. A mesma ideia gerou um tabuleiro de jogo da velha na tela, só com repetição de texto.

Outras esquisitices vêm do começo da linguagem. Booleanos se comportam como inteiros: True equivale a 1 e False a 0, então True + True resulta em 2.

O operador is compara identidade: os dois objetos estão na mesma posição de memória? Ele não compara se os valores são iguais. O is não é um operador ruim; a má prática é usá-lo para testar igualdade. O Python pré-cria os inteiros de -5 a 256 na memória, então is entre esses números costuma dar verdadeiro. Fora dessa faixa, cada valor pode ocupar posições diferentes, e is pode falhar mesmo com o mesmo número. Para saber se dois valores são iguais, use o operador de igualdade, não o de identidade.

Repetir texto com multiplicação

print("ra" * 10)
print(True + True)

String vezes inteiro repete o texto. True conta como 1, então True + True resulta em 2.

is testa posição na memória

a = 256
b = 256
print(a is b)
c = 257
d = 257
print(c is d)

is pergunta se é o mesmo objeto, não se o valor é igual. Na faixa pré-instanciada o resultado costuma ser True; fora dela, pode não ser.

Métodos, imutabilidade e sanitização de dados

Métodos de string devolvem uma string nova. upper() coloca todos os caracteres em maiúsculas. lower() coloca todos em minúsculas. title() capitaliza a primeira letra de cada palavra e deixa o restante em minúsculas, o que ajuda a padronizar nomes. capitalize() também ajusta maiúsculas e minúsculas do texto.

Strings são imutáveis: chamar o método não altera o original. O retorno precisa ser guardado em uma variável se você quiser usar o texto transformado depois. Só mudar o que aparece na impressão não muda o dado armazenado; o tratamento tem de acontecer antes de guardar ou de exibir de forma definitiva.

Sanitização é esse processo de limpar e preparar dados vindos do usuário, por exemplo corrigindo maiúsculas bagunçadas. A regra é nunca confiar no que o cliente envia: sempre verifique e prepare. A sanitização resolve uma parte dos problemas de formato. Nem tudo cai em método automático; uma revisão gramatical, por exemplo, pode precisar de uma pessoa.

Métodos devolvem outra string

nome = "maria silva"
print(nome.upper())
print(nome.lower())
print(nome.title())
print(nome.capitalize())
print(nome)

upper, lower, title e capitalize não mexem em nome. O último print mostra o original intacto, porque a string é imutável.

Guardar o resultado da sanitização

nome = "maria silva"
limpo = nome.title()
print(limpo)

Para aproveitar o texto tratado, atribua o retorno do método a uma variável antes de exibir ou guardar.

Avisos administrativos — 1 recados sobre prazos, regras e funcionamento do curso
  • 01:36:50 Próxima aula na terça-feira.
Perguntas de aluno — 11 perguntas respondidas na gravação

Professora, essa questão das 3 aspas não tem uma premissa que ela pode ser usada tmbém para comentar com quebra de linha sem ter que colocar o \n? 00:22:33 · chat 00:17:59 Sim, a docstring tem dois usos: comentário e string multilinha; falaremos sobre isso na aula.

tanto faz o lado da barra? 00:22:55 · chat 00:22:42 Não importa o lado, mas tem que ser contrabarra (a que fica do lado do Z); barra normal não funciona.

Natália: a contra barra sempre vai antes das aspas, certo? 00:35:05 Sim, se precisar escapar as aspas, ela vem exatamente antes; se não precisar escapar, não.

na tp1 a primeira pergunta é só fazer um comentário usando a #, mas ai eu só digito um monte reto ou faço algo para ficar bonitinho ? 00:35:35 · chat 00:31:52 Dica: colocar vários # no início de cada linha para não criar um comentário horizontal gigante.

Como ficaria tua frase gigante do Guns nesse formato de parênteses? 00:36:26 · chat 00:32:20 Seria a segunda versão: dividir a string em múltiplas partes e usar o + para concatenar.

Deixa eu ver se eu compreendi, uma é somente com a contrabarra e a outra tem que estar entre aspas e colocando os ”+”? 00:36:41 · chat 00:35:42 Sim; o parênteses delimita o início e fim da expressão, e quando você divide a string, precisa do + para unir.

José: não entendi o final sobre a string quebrada em múltiplas linhas / o contrabarra n invisível. 00:45:18 Existe diferença entre como a informação é guardada (com \n) e como é exibida (quebra de linha); na docstring os enters viram \n.

Tem algum método de print que mostre esse \n que fica oculto? 00:48:39 · chat 00:48:34 Pesquisamos e existe a função repr(), que devolve a representação da string mostrando o \n.

Isso seria pq o + de concatenar e o + de somar são o mesmo símbolo? 01:11:26 · chat 01:05:26 Sim, o Python decide pelo tipo; Haskell, por exemplo, usa ++ para concatenar e + para somar.

Oswaldo: por que manter o is se ele é recomendado para não usar? Não dá para remover? 01:25:46 O is não é ruim; ele compara posição de memória e é útil. A má prática é usar is para comparar igualdade.

Prof, então em caso de precisar editar os dados antes de colocar na aplicação a gente só muda a impressão da variavel e não o dado dela? 01:35:17 · chat 01:35:14 Depende; a sanitização resolve alguns problemas e deve ser feita antes de guardar/exibir; revisão gramatical pode precisar de humano.

Trechos que valem reouvir — 6 momentos que mais rendem uma segunda escuta
  • 00:39:10 — Comparação das três formas de declarar strings longas (contrabarra, parênteses, docstring) — os exemplos estão na tela.
  • 00:46:21 — Explicação visual de como \n é guardado versus exibido; vale ver a tela para entender a diferença.
  • 01:02:50 — Código JavaScript mostrando conversão implícita e os resultados estranhos que o Python evita.
  • 01:18:00 — Demonstração do is e da pré-instanciação de inteiros -5 a 256 no terminal.
  • 01:22:16 — Multiplicação de strings e o exemplo do tabuleiro; o efeito visual está na tela.
  • 01:29:14 — Métodos de string em ação e a ideia de sanitização de dados do usuário.

Glossário da aula

Conceitos

Declaração de string com aspas simples ou duplas

00:16:42

É a forma básica de criar texto em Python usando aspas simples ou duplas. Serve para declarar strings curtas quando a abertura e o fechamento usam o mesmo tipo de aspa.

Regra da mesma aspa

00:17:42

É a regra que exige fechar a string com o mesmo tipo de aspa da abertura. É usada para evitar erro de literal não finalizado ao misturar aspas simples e duplas.

Escape com contrabarra

00:19:30

É o uso da contrabarra antes de uma aspa dentro do texto. Serve para dizer que a aspa faz parte do conteúdo e não fecha a string.

Caractere de quebra de linha (\n)

00:21:43

É o caractere de escape formado por contrabarra e n que cria uma quebra de linha. É usado em várias linguagens, não só no Python, para pular para a linha seguinte.

Regra de mesma linha para strings com aspas simples/duplas

00:27:50

É a regra que obriga strings com aspas simples ou duplas a começar e terminar na mesma linha. Serve para evitar erro ao tentar quebrar o texto em várias linhas.

Contrabarra para continuar código na próxima linha

00:28:36

É a contrabarra colocada no final da linha para indicar continuação do código. É usada quando a expressão é longa e precisa continuar na linha seguinte.

Parênteses para quebrar expressão

00:30:37

É o uso de parênteses ao redor de uma expressão para escrevê-la em várias linhas. Serve para que o Python só considere a expressão completa ao fechar o parêntese.

Concatenação com +

00:33:49

É o operador que junta duas ou mais strings em uma só. É usado para conectar partes separadas quando uma string longa é dividida em vários trechos.

Docstring (aspas triplas)

00:39:33

É a string criada com três aspas simples ou duplas para escrever texto em várias linhas. É usada quando precisa de texto longo e quer incluir aspas internas sem usar escape.

replace()

00:44:03

É o método que troca um caractere ou trecho da string por outro. É usado para alterar ou remover partes do texto, como tirar quebras de linha.

repr()

00:49:43

É a função que mostra como a string é guardada por dentro, exibindo caracteres ocultos como \n. É usada para enxergar quebras de linha e outros escapes invisíveis.

Concatenação implícita de strings

00:53:08

É a junção automática de strings escritas uma ao lado da outra sem usar operador. É usada para unir trechos vizinhos de texto de forma direta pelo Python.

Informação hard-coded

00:55:45

É o texto ou valor escrito diretamente dentro do código-fonte. É evitada em textos grandes, que devem ficar em arquivos separados para facilitar a localização.

Localização (textos em arquivos separados)

00:55:57

É a prática de guardar textos em arquivos externos ao código. É usada para mostrar o idioma certo ao usuário e evitar misturar conteúdo grande com o programa.

Tipagem forte

00:59:34

É o sistema que impede misturar tipos diferentes em uma mesma operação sem conversão explícita. É usada para evitar concatenar, por exemplo, string com número inteiro diretamente.

Tipagem fraca

01:02:43

É o sistema que permite operar tipos diferentes com conversão automática. É usada no JavaScript, mas pode gerar resultados inesperados como '10' + 1 virar '101'.

Conversão implícita

01:03:44

É a conversão automática de tipo feita durante a operação em linguagens fracas. É útil lá, mas no Python é preciso converter o tipo de forma explícita.

Vírgula no print não é concatenação

01:08:45

É o uso da vírgula dentro do print para exibir valores separados por espaço. Serve para mostrar itens lado a lado sem juntá-los em uma única string.

print() com múltiplos argumentos

01:09:01

É a função print recebendo vários valores para exibir de uma vez. É usada para mostrar itens separados por espaço sem precisar concatenar em uma string só.

Haskell

01:12:01

É uma linguagem funcional pura e estaticamente tipada. É citada como exemplo por usar operador diferente para concatenação (++) e para soma (+).

Cálculo lambda

01:12:33

É a base teórica que fundamenta a programação funcional. É citada como o fundamento teórico por trás da linguagem Haskell.

Booleanos como inteiros

01:14:01

É o comportamento do Python onde True vale 1 e False vale 0. Por isso True + True resulta em 2, uma curiosidade herdada do início da linguagem.

Pré-instanciação de inteiros -5 a 256

01:18:00

É o recurso onde o Python já deixa guardados os inteiros de -5 a 256 na memória. É usado por isso o is costuma dar True nessa faixa e pode dar False fora dela.

Multiplicação de string por inteiro

01:21:38

É a operação que repete uma string ao multiplicá-la por um inteiro, como 'ra' * 10. É uma das poucas misturas entre tipos que o Python permite diretamente.

is (operador de identidade)

01:26:01

É o operador que verifica se dois objetos ocupam a mesma posição na memória. É usado para checar identidade, não para comparar se os valores são iguais.

upper()

01:29:14

É o método que cria uma nova string com todas as letras em maiúsculas. É usado para padronizar texto quando precisa exibir tudo em caixa alta.

title()

01:32:03

É o método que deixa a primeira letra de cada palavra em maiúscula e o resto em minúscula. É usado para sanitizar nomes e padronizar a escrita.

Strings imutáveis (métodos retornam nova string)

01:34:08

É a característica de a string não mudar com os métodos, que devolvem uma nova string. É usada por isso é preciso atribuir o resultado a uma variável para guardar.

Sanitização de dados

01:31:09

É o processo de limpar e preparar dados vindos do usuário antes de usar. Serve para remover espaços extras e corrigir maiúsculas antes de guardar ou exibir.

Nunca confie no input do usuário

01:31:43

É a regra que diz para sempre verificar e preparar dados enviados pelo usuário. É usada para garantir que nada seja processado sem antes ser limpo e validado.

Ataque de força bruta

00:13:55

É a tentativa de descobrir uma chave testando todas as combinações possíveis. Tornou-se viável quando o gerador reduziu o espaço de chaves a testar.

Números pseudoaleatórios (random)

00:14:37

É o número gerado por computador de forma determinística, não verdadeiramente aleatória sem hardware próprio. O módulo random usa relógio e memória para criar esses falsos aleatórios.

Prática autocorrigida

Exercícios

0/24 concluídos
  1. Aspas internas e quebra de linhaLeia uma linha. Mostre o texto entre aspas duplas na primeira linha e ok na segunda.facilDeclaração de string com aspas simples ou duplasEscape com contrabarraCaractere de quebra de linha (\n)
  2. Cola sem o espaço da vírgulaLeia duas linhas e use concatenação com + para mostrá-las coladas na mesma linha, sem separador.facilConcatenação com +Vírgula no print não é concatenaçãoprint() com múltiplos argumentos
  3. Repetir o bloco lidoLeia um texto e depois um inteiro n não negativo. Use multiplicação para repetir o texto n vezes na mesma linha. Para n = 0, imprima uma linha em branco.facilMultiplicação de string por inteirointinput()
  4. Nome sanitizado com titleLeia uma linha e mostre o resultado de title(): o início de cada palavra em maiúscula e as demais letras em minúscula.faciltitle()Sanitização de dadosStrings imutáveis (métodos retornam nova string)
  5. Versão em maiúsculasLeia uma linha e mostre sua versão em maiúsculas usando upper().facilupper()Strings imutáveis (métodos retornam nova string)Sanitização de dados
  6. Traços e quebra no meioLeia um inteiro n não negativo. Mostre duas linhas iguais, cada uma com n hífens. Para n = 0, imprima duas linhas em branco.facilMultiplicação de string por inteiroCaractere de quebra de linha (\n)
  7. Texto todo em minúsculasLeia uma linha e mostre sua versão em minúsculas usando lower().facillower()strings imutáveis (métodos retornam nova string)sanitização de dados
  8. Só a primeira letra maiúsculaLeia uma linha e mostre o resultado de capitalize(): o primeiro caractere em maiúscula, quando aplicável, e o restante em minúsculas.facilmétodos de stringstrings imutáveis (métodos retornam nova string)sanitização de dados
  9. Repetir o texto lidoLeia um texto e depois um inteiro n não negativo. Use * para repetir o texto n vezes em uma linha. Para n = 0, imprima uma linha em branco.facilmultiplicação de string por inteiroint()tipagem forte
  10. Espaços viram underlineLeia uma linha e use replace() para substituir cada espaço por _. Preserve os demais caracteres.facilreplace()sanitização de dadosstring
  11. Duas partes com uma quebraLeia duas linhas. Use um único print() e concatenação com a string de quebra de linha 'mediacaractere de quebra de linha (\n)concatenação com +escape com contrabarra
  12. Grito e depois o originalLeia uma linha e guarde-a. Mostre upper() desse texto e, na segunda linha, a entrada original. Não reatribua a variável.mediaupper()strings imutáveis (métodos retornam nova string)sanitização de dados
  13. Troca vírgula por pontoLeia uma linha e use replace() para trocar cada vírgula por ponto. Preserve os demais caracteres.mediareplace()stringsanitização de dados
  14. Minúsculas e depois títuloLeia uma única linha. Mostre sua versão em minúsculas com lower() e, abaixo, sua versão com title().medialower()title()strings imutáveis
  15. Duas leituras em um print com nLeia duas linhas. Monte uma string com a primeira, uma quebra de linha 'mediacaractere de quebra de linha (\n)concatenação com +print()
  16. Produto dos três menos umLeia três inteiros. Multiplique os três, subtraia 1 do produto e mostre o resultado.mediaintmultiplicaçãosubtração
  17. Somente a segunda e a sextaLeia seis linhas e mostre somente a segunda e a sexta, uma por linha. Descarte as demais.mediainput()execução sequencialvariável
  18. Resto da divisão de dois inteirosLeia dois inteiros e mostre o resto da divisão do primeiro pelo segundo usando %. O divisor não será zero.mediaoperador resto %intinput()
  19. Resto do produto de dois inteirosLeia três inteiros. Multiplique os dois primeiros e mostre o resto da divisão desse produto pelo terceiro usando %. O terceiro não será zero.mediaintresto %produto
  20. Rótulo, espaço e inteiro em textoLeia um rótulo e depois um inteiro. Use + e str() para mostrá-los na mesma linha, separados por um espaço.mediaconcatenaçãostr()int()
  21. Cruzar extremos de seis linhasLeia seis linhas e mostre as posições 6, 1, 5 e 2, uma por linha. Descarte as posições 3 e 4.dificilinput()execução sequencialseleção de linhas
  22. Soma, produto e divisão de quatro inteirosLeia quatro inteiros w, x, y e z. Mostre w + x * y / z. O divisor z não será zero.dificilprecedência de operadoresdivisão /int
  23. Quociente de dois floats e a classeLeia dois decimais e divida o primeiro pelo segundo, que não será zero. Mostre o quociente e, abaixo, seu tipo usando type().dificilfloatdivisão /type()
  24. Cola extremos e ecoa o meio de cincoLeia cinco linhas. Mostre a primeira concatenada com a quinta, sem separador, e na segunda linha mostre a terceira leitura. Descarte as posições 2 e 4.dificilconcatenaçãoinput()seleção de linhas