continuous learning company
Voltar para publicações
Ana Clara
ana clara castro

A Função input() em Python: Como Capturar Dados do Usuário

Entenda como o input() captura dados durante a execução do programa, por que ele sempre retorna uma string e como converter o resultado para número com exemplos simples.

24/09/2026 Desenvolvimento
Infográfico A função input() em Python: exemplo de código com input() e print(), saída no terminal, fluxo usuário → entrada de dados → armazenamento → processamento, e o aviso de que input() sempre retorna uma string, exigindo int() ou float() para trabalhar com números

Todo programa que "conversa" com quem está usando ele precisa, em algum momento, perguntar alguma coisa: um nome, uma idade, uma opção de menu. Em Python, quem faz esse trabalho é a função input().

Neste artigo, vamos entender como o input() funciona, ver um exemplo simples e — o ponto que mais confunde quem está começando — por que ele sempre devolve uma string, mesmo quando você digita um número.

O que é o input()?

input() é uma função que pausa a execução do programa, exibe uma mensagem (opcional) no terminal e espera o usuário digitar algo e pressionar Enter. O texto digitado é devolvido como resultado da função.

nome = input("Digite o seu nome: ")
print("Olá,", nome, "! Bem-vindo!")

Saída no terminal:

Digite o seu nome: Ana
Olá, Ana ! Bem-vindo!

Repare no fluxo: o programa mostra a mensagem passada como argumento do input(), espera o usuário digitar, guarda o que foi digitado na variável nome e só então continua para a próxima linha.

O Caminho do Dado: Usuário → Entrada → Armazenamento → Processamento

É útil pensar no input() como uma esteira de quatro etapas:

  • Usuário: a pessoa que está usando o programa.
  • Entrada de dados: o input() captura o que foi digitado no terminal.
  • Armazenamento: o valor capturado é guardado em uma variável.
  • Processamento: o programa usa essa variável para calcular, comparar ou exibir algo.

É exatamente esse caminho que o exemplo do nome percorreu: o usuário digitou "Ana", o input() capturou o texto, a variável nome armazenou o valor, e o print() processou (exibiu) o resultado.

O Ponto Mais Importante: input() Sempre Retorna uma String

Não importa o que a pessoa digite — um nome, um número, uma data — o input() sempre entrega o resultado como texto (tipo str). Isso pega muita gente de surpresa na primeira vez.

Veja o que acontece se você tentar fazer uma conta direto com o resultado de um input():

ano_atual = 2026
ano_nascimento = input("Digite o ano em que você nasceu: ")

idade = ano_atual - ano_nascimento
print(f"Você tem {idade} anos.")

Saída no terminal:

Digite o ano em que você nasceu: 2005
Traceback (most recent call last):
  ...
TypeError: unsupported operand type(s) for -: 'int' and 'str'

Mesmo o usuário tendo digitado 2005, um número, o Python enxerga "2005" como texto. E não é possível subtrair um texto de um número — daí o TypeError.

Resolvendo com int() e float()

A solução é converter o texto para número antes de usá-lo em uma conta, com int() (números inteiros) ou float() (números com casas decimais):

ano_atual = 2026
ano_nascimento = input("Digite o ano em que você nasceu: ")

idade = ano_atual - int(ano_nascimento)
print(f"Você tem {idade} anos.")

Saída no terminal:

Digite o ano em que você nasceu: 2005
Você tem 21 anos.

A regra prática é simples:

  • Vai trabalhar com números inteiros (idade, quantidade, ano)? Use int(input(...)).
  • Vai trabalhar com números decimais (preço, peso, altura)? Use float(input(...)).
  • Vai apenas exibir ou comparar texto (nome, e-mail, opção de menu)? Não precisa converter nada — deixe como string mesmo.

Exemplo Prático: Calculando o Total de uma Compra

Vamos juntar tudo em um exemplo um pouco maior: um programa que pede o preço e a quantidade de um produto, e calcula o total.

nome_produto = input("Nome do produto: ")
preco = float(input("Preço unitário (R$): "))
quantidade = int(input("Quantidade: "))

total = preco * quantidade

print(f"{quantidade}x {nome_produto} = R$ {total:.2f}")

Saída no terminal:

Nome do produto: Caderno
Preço unitário (R$): 15.90
Quantidade: 3
3x Caderno = R$ 47.70

Note que nome_produto não precisou de conversão (é usado como texto), enquanto preco e quantidade foram convertidos na mesma linha em que o input() foi chamado — um padrão muito comum em código Python.

E se o Usuário Digitar Algo Inválido?

Se o programa pede um número e a pessoa digita uma letra, o int() ou float() não conseguem converter, e o programa quebra com um ValueError:

idade = int(input("Digite sua idade: "))
Digite sua idade: vinte
Traceback (most recent call last):
  ...
ValueError: invalid literal for int() with base 10: 'vinte'

Para evitar que o programa pare de funcionar nessa situação, use try/except para tratar o erro:

entrada = input("Digite sua idade: ")

try:
    idade = int(entrada)
    print(f"Daqui a 5 anos você terá {idade + 5} anos.")
except ValueError:
    print("Por favor, digite um número válido.")

Saída no terminal:

Digite sua idade: vinte
Por favor, digite um número válido.

Assim, em vez de o programa travar com um traceback assustador, ele avisa o usuário de forma amigável e pode, inclusive, pedir a digitação novamente.

Erros Comuns com input()

  • Esquecer de converter o tipo: tentar somar ou subtrair o resultado do input() direto, sem int() ou float().
  • Converter texto que não é número: gera ValueError se o usuário digitar algo como "abc" onde se esperava um número.
  • Concatenar string com número sem converter: "Idade: " + idade também dá erro se idade for um número — use str(idade) ou, melhor ainda, um f-string como f"Idade: {idade}".
  • Não validar a entrada: assumir que o usuário sempre vai digitar exatamente o que o programa espera.

Boas Práticas

  • Sempre escreva uma mensagem clara dentro do input(), para o usuário saber o que digitar.
  • Converta o tipo assim que capturar o dado, para não esquecer depois.
  • Use try/except quando a entrada do usuário for crítica para o programa continuar funcionando.
  • Prefira f-strings (f"...") para exibir variáveis junto com texto, em vez de concatenar com +.

Resumindo

  • input(): pausa o programa, mostra uma mensagem e espera o usuário digitar algo.
  • Sempre retorna string: mesmo que o usuário digite números, o resultado é texto.
  • int() e float(): convertem o texto capturado em número inteiro ou decimal.
  • ValueError: acontece quando se tenta converter um texto que não é um número válido.
  • try/except: protege o programa de quebrar quando a entrada do usuário é inválida.

E você? Já tentou fazer uma conta com o resultado de um input() sem converter e tomou um TypeError de susto? Conte nos comentários!

Teste seu conhecimento

Responda às perguntas abaixo para revisar os principais pontos deste artigo.

1. Que tipo de dado o input() sempre retorna, independentemente do que o usuário digitar?

2. No exemplo do cálculo de idade, por que "idade = ano_atual - ano_nascimento" gera um TypeError quando ano_nascimento vem direto do input()?

3. Qual conversão você deve usar para capturar o preço de um produto (com casas decimais) digitado pelo usuário?

4. No exemplo com try/except, o que acontece quando o usuário digita "vinte" em vez de um número para a idade?

Livros recomendados