Conversão entre tipos

Converter dados quando a origem e o uso exigirem tipos diferentes.

Conversão entre tipos

Objetivo da aula

Converter dados quando a origem e o uso exigirem tipos diferentes.

Regra desta aula: vamos assumir que você nunca viu este assunto antes. Nenhum termo importante será usado sem explicação e todo exemplo deve ser entendido linha por linha, não apenas copiado.

Começando do zero

Dados nem sempre chegam no tipo que queremos. input(), por exemplo, devolve texto. Se o usuário digita “25” e queremos somar números, precisamos converter esse texto para int ou float. Conversão é uma tentativa: ela pode funcionar ou falhar conforme o conteúdo.

Uma imagem mental para entender

Imagine receber uma etiqueta escrita “25”. Para fazer uma conta, você precisa interpretar essa etiqueta como número. Se a etiqueta disser “vinte e cinco” e sua regra só reconhece dígitos, a interpretação falha. Conversão de tipos é exatamente esse processo explícito de interpretação.

Conceitos essenciais, sem pular etapas

int()

Tenta produzir um inteiro. int("25") funciona; int("25.5") e int("vinte") não representam inteiros no formato esperado e geram erro.

float()

Tenta produzir um número de ponto flutuante. float("25.5") funciona. Em Python, o formato literal usual usa ponto como separador decimal.

str()

Produz representação textual de um valor para composição de mensagens ou armazenamento em contextos que exigem texto.

bool()

Converte pela regra de “truthiness”, que não é uma leitura semântica da palavra. Por exemplo, bool("False") é True porque a string não está vazia. Não use isso para interpretar respostas humanas “sim/não” sem uma regra própria.

Conversão não é validação completa

Conseguir converter "150" para inteiro não prova que 150 é uma idade aceitável para seu sistema. Primeiro você interpreta o tipo; depois verifica a regra do domínio.

Modelo mental

TEXTO RECEBIDO → CONVERSÃO → TIPO ADEQUADO → VALIDAÇÃO DE REGRA → USO

Exemplo 1 — primeiro veja o programa inteiro

idade_texto = "25"
idade = int(idade_texto)
print(idade + 1)

preco_texto = "19.90"
preco = float(preco_texto)
print(preco * 2)

Agora vamos ler linha por linha

  • O valor original idade_texto é str.
  • int(idade_texto) cria um novo valor inteiro 25.
  • Agora idade + 1 é uma soma numérica.
  • O mesmo raciocínio vale para float e o texto de preço.

Saída esperada

26
39.8

Exemplo 2 — o mesmo conceito em outra situação

texto = "False"
print(bool(texto))
print(bool(""))

A primeira saída é True, porque qualquer string não vazia é considerada verdadeira em contexto booleano. A segunda é False, pois a string está vazia. Isso mostra por que bool() não “entende” o significado da palavra.

Experimento guiado

Não pule esta parte. Programação só começa a fazer sentido quando você prevê um resultado, executa e compara a previsão com o que realmente aconteceu.

  1. Teste int("10"), int("10.5") e float("10.5"). Observe quais funcionam.
  2. Converta o número 42 para texto e concatene com uma mensagem.
  3. Teste bool("False") e explique o resultado com suas palavras.
  4. Diferencie conversão de faixa válida: depois de converter uma nota, ainda verifique se está entre 0 e 10.

Mini desafio

Escreva um trecho que receba o texto "7.5", converta para float, some 1 ponto e mostre o resultado.

Solução comentada

nota_texto = "7.5"
nota = float(nota_texto)
nota_final = nota + 1
print("Nota final:", nota_final)

Depois de executar a solução, altere pelo menos um valor e explique por que o novo resultado mudou. Se você só copiou e não consegue explicar cada linha, refaça o desafio em uma versão menor.

Erros comuns e por que acontecem

  • Esperar que int("12.3") simplesmente descarte a parte decimal. A string não está no formato de inteiro esperado.
  • Usar bool("False") para interpretar texto do usuário e obter um resultado inesperado.
  • Achar que conversão bem-sucedida significa dado válido para a regra do negócio.

Cheque se você realmente entendeu

Qual é o tipo retornado por int("25")?

Resposta: int.

Por que int("abc") falha?

Resposta: Porque o texto não representa um inteiro no formato que a função consegue interpretar.

Converter uma nota para float garante que ela esteja entre 0 e 10?

Resposta: Não. Essa faixa é uma validação adicional.

Resumo em linguagem simples

Nesta aula, o ponto central foi Conversão entre tipos. Tente explicar o modelo TEXTO RECEBIDO → CONVERSÃO → TIPO ADEQUADO → VALIDAÇÃO DE REGRA → USO sem olhar a tela. Depois, escreva um exemplo próprio menor que os apresentados. Esse exercício de explicação é parte do aprendizado, não um extra.

Conexão com a próxima aula

Na próxima aula, Operadores e precedência, vamos aproveitar exatamente o que foi construído aqui. Você não precisa memorizar tudo; precisa conseguir reconhecer o conceito e reconstruí-lo com raciocínio e testes.