Olá Pythonista!
Nesse post vamos falar sobre entrada de dados, saída de dados, a função input() do Python, a função print() e MUITO MAIS!
Com essa funções, podemos tornar um simples script Python muito mais dinâmico e poderoso, ao possibilitar a interação com o usuário.
Veremos como utilizar a função input para adquirir dados de entrada passados pelo usuário, assim como mostrar informações aos usuários com a função print.
Então, vamos nessa!
Para que servem
input()eprint()em Python? A funçãoinput()lê dados que o usuário digita no teclado e os devolve sempre comostr(texto). Já aprint()faz o contrário: mostra valores na tela (o terminal). Juntas, elas formam a entrada e a saída básicas de um programa, permitindo que ele interaja com quem o usa.
Vá Direto ao Assunto…
- Entrada de dados com a Função
input - O
input()SEMPRE retorna uma string - Saída de dados com a Função
print - Juntando entrada e saída com
inputeprint - Utilizando
printpara gravar dados em arquivos
Entrada de dados com a Função input
A função input() pausa o programa, lê o que o usuário digita e devolve o conteúdo como uma string. É assim que pegamos dados de quem está usando o programa.
Vamos começar falando sobre entrada do usuário.
Esse é um artifício muito comum em programação, quando precisamos que o usuário passe ao programa algum tipo de dado.
Em Python, fazemos isso utilizando a função input(), que é literalmente ‘entrada’ em inglês.
A função input() recebe como parâmetro uma string que será mostrada como auxílio ao usuário, geralmente o informando que tipo de dado o programa está aguardando receber.
Vejo um exemplo:
1
input("Escreva seu nome: ")
Quando fazemos isso, o terminal ou prompt de comando irá:
- Mostrar o texto
"Escreva seu nome: "na tela; e - Aguardar até que o usuário digite alguma informação.
Após a entrada de dados pelo usuário, o programa irá continuar sua execução, passando para as instruções seguintes.
Ao rodar o script, no terminal aparecerá algo mais ou menos assim (o Lucas foi digitado pelo usuário):
1
Escreva seu nome: Lucas
O input() SEMPRE retorna uma string
Esse é o ponto que mais confunde quem está começando: não importa o que o usuário digite, o input() devolve sempre uma str (texto). Se a pessoa digitar 42, você recebe a string '42', e não o número 42.
Dá para confirmar isso com a função type(), que mostra o tipo de um valor:
1
2
valor = input("Digite um número: ")
print(type(valor))
Digitando 42, a saída é:
1
2
Digite um número: 42
<class 'str'>
Mesmo o usuário tendo digitado um número, o Python guardou como string. (Se o conceito de tipos ainda está nebuloso, vale revisar os tipos de variáveis no Python.)
Convertendo (cast) a entrada para número
Para tratar a entrada como número, você precisa converter a string explicitamente - isso se chama cast. As duas conversões mais comuns são:
-
int(input(...))→ para números inteiros (ex.: idade, quantidade); -
float(input(...))→ para números com casas decimais (ex.: preço, altura).
Veja como ler uma idade e já usá-la em uma conta:
1
2
3
idade = int(input("Digite sua idade: "))
print("No ano que vem você terá", idade + 1, "anos.")
Digitando 30, a saída é:
1
2
Digite sua idade: 30
No ano que vem você terá 31 anos.
Repare que o int() “embrulha” o input(): primeiro o input() lê o texto, depois o int() o transforma em número inteiro. Com float() funciona igual, mas para valores decimais.
O erro clássico: somar str com int
Se você esquecer o cast e tentar somar a entrada (uma string) com um número, o Python levanta um TypeError. Esse é, provavelmente, o erro nº 1 de quem está aprendendo input().
Veja o que acontece ao tentar "23" + 5:
1
print("23" + 5)
O Python interrompe o programa com o erro:
1
2
3
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
A mensagem é literal: o Python só sabe concatenar (juntar) uma str com outra str. Ele não tenta adivinhar se você queria somar ou colar os valores.
A correção é converter antes de somar - aí o + vira uma soma de verdade:
1
2
print("23" + 5) # TypeError
print(int("23") + 5) # 28
Com o cast, a segunda linha imprime:
1
28
Cuidado: somar dois inputs sem cast só junta as strings
Há um caso traiçoeiro: como input() sempre retorna str, o operador + entre dois inputs não soma - ele concatena (cola) os textos. O programa não dá erro, mas o resultado fica errado.
Imagine uma “calculadora” que pede dois números:
1
2
3
4
a = input("Primeiro número: ")
b = input("Segundo número: ")
print(a + b)
Digitando 2 e depois 3, em vez de 5 você obtém:
1
2
3
Primeiro número: 2
Segundo número: 3
23
Faz sentido: "2" + "3" é a mesma coisa que colar dois textos, resultando em "23". Para somar de verdade, basta converter cada entrada com int():
1
2
3
4
a = int(input("Primeiro número: "))
b = int(input("Segundo número: "))
print(a + b)
Agora a saída é a soma correta:
1
2
3
Primeiro número: 2
Segundo número: 3
5
ValueError: quando o texto não é um número
Há um detalhe importante: o int() e o float() só convertem textos que realmente representam números. Se o usuário digitar letras (ou você passar um texto não-numérico), o Python levanta um ValueError.
1
print(int("abc"))
O resultado é:
1
2
3
Traceback (most recent call last):
File "<string>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'
Ou seja: "abc" não é um número inteiro válido. Em programas reais, é comum proteger essa conversão com tratamento de erros (try/except), mas isso é assunto para um próximo post. ![]()
Saída de dados com a Função print
A função print() mostra valores na tela (o terminal) e aceita parâmetros para controlar como esses valores aparecem. É a função para imprimir dados em Python.
Ela é responsável por mostrar valores em seu terminal:
1
print('Olá Mundo')
Imprime a string no terminal:
1
Olá Mundo
Além do que você quer imprimir, o print() aceita alguns parâmetros que controlam o formato da saída. Os três mais usados são:
| Parâmetro | O que faz | Padrão |
|---|---|---|
sep |
Separa os itens passados (separados por vírgula) |
' ' (espaço) |
end |
Define o caractere colocado no fim da impressão |
'\n' (nova linha) |
flush |
Força a saída a aparecer na hora, sem esperar buffer | False |
Vamos ver cada um na prática.
Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
O parâmetro sep= da função print
O sep= define qual caractere fica entre os itens que você passa ao print separados por vírgula.
Por padrão, quando utilizamos virgula para separar os itens, a função print utiliza espaços para separar cada saída.
Porém, podemos utilizar o parâmetro sep= para definir um caractere de separação.
Entenda no exemplo a seguir:
1
2
3
print('Dia', 'Mês', 'Ano', sep='/')
print('ontem', 'Hoje', 'Amanhã', sep='-')
print("B", "n", "n", ".", sep='a')
Observe a saída com os caracteres definidos:
1
2
3
Dia/Mês/Ano
ontem-Hoje-Amanhã
Banana.
Perceba que a função print incluiu o caracter indicado em sep= como separador dos dados a serem mostrados ao usuário!
O parâmetro end= da função print
O end= controla o que vem depois do que foi impresso - é ele que decide se a próxima impressão fica em uma nova linha ou continua na mesma.
Por padrão, a função print utiliza a quebra de linha (\n) como último caracter.
O parâmetro end= é responsável por alterar esse comportamento, possibilitando ao desenvolvedor trocar qual caracter será adicionado ao final do dado impresso no terminal.
Vamos entender melhor no exemplo a seguir:
1
2
3
4
5
6
7
8
9
10
11
# Exemplo com fim de linha sem nenhum caracter
print('Vamos estudar Na ', end='')
print('Python Academy')
# Exemplo com fim de linha igual à ->
print('As rosas são', end=' -> ')
print('Vermelhas')
# Exemplo com fim de linha igual à :
print("Quantidade", end=': ')
print(40)
Dessa forma, a saída será:
1
2
3
Vamos estudar Na Python Academy
As rosas são -> Vermelhas
Quantidade: 40
O parâmetro flush= da função print
O flush= força o texto a aparecer na tela imediatamente, em vez de ficar aguardando em um buffer interno.
Por padrão (flush=False), o Python pode segurar a saída em memória e só exibi-la quando “junta o suficiente” ou quando o programa encontra uma quebra de linha. Na maioria dos casos isso passa despercebido - mas faz diferença quando você imprime aos poucos, sem \n, e quer ver o progresso na hora (como uma barra de carregamento).
Veja um exemplo que imprime pontinhos um a um:
1
2
3
4
5
6
7
import time
print('Carregando', end='', flush=True)
for _ in range(3):
time.sleep(1)
print('.', end='', flush=True)
print(' Pronto!')
Com flush=True, cada ponto aparece na tela na hora em que é impresso (a cada segundo). Ao final, a saída completa é:
1
Carregando... Pronto!
Sem o flush=True, todos os pontos só apareceriam de uma vez, no fim - o que estragaria o efeito de progresso.
Imprimindo variáveis com f-strings no print
A forma mais legível de juntar texto e variáveis dentro do print() é usar uma f-string - uma string iniciada por f em que você coloca variáveis entre { }:
1
2
3
4
nome = 'Erick'
idade = 30
print(f'Olá, {nome}! Você tem {idade} anos.')
A saída é:
1
Olá, Erick! Você tem 30 anos.
Repare que, dentro da f-string, o {idade} já mostra o número sem precisar de cast - o Python cuida da conversão para texto na hora de imprimir. Para se aprofundar nesse recurso, veja o guia completo de f-strings no Python.
Estou construindo o Ebookr.ai, uma plataforma onde você cria ebooks profissionais com IA sobre qualquer assunto - do zero ao PDF pronto, com capas e infográficos gerados automaticamente. Dá uma olhada!
Juntando entrada e saída com input e print
Combinando input() e print() você já consegue montar programas interativos: pede um dado, processa e mostra o resultado.
Agora que conhecemos as duas funções, podemos juntá-las para fazer programas mais completos.
Vamos armazenar o nome do usuário utilizando input e mostrar o dado para ele com print.
Podemos juntar e imprimir vários itens em print(), basta separá-los por virgula, como no exemplo abaixo:
1
2
3
nome = input("Escreva seu nome: ")
print('Seu nome é:', nome)
Perceba que a função input retorna para nós aquilo que o usuário digitou. Portanto, nesse caso, o que o usuário digitar será passado à variável nome!
Observe a saída:
1
2
Escreva seu nome: Erick
Seu nome é: Erick
Quando você precisar pedir vários dados em sequência - ou repetir uma pergunta até o usuário responder corretamente - vale combinar o input() com as estruturas de repetição (os loops).
Utilizando print para gravar dados em arquivos
A função print() também funciona para gravar dados em arquivos.
Para isso, utilizamos o parâmetro file= da função print.
Também precisamos de um arquivo aberto, o que é feito utilizando-se a função open.
Veja o exemplo abaixo:
1
2
3
with open('arquivo.txt', 'w') as arquivo:
print("Escreva isso dentro do arquivo,", file=arquivo)
print("Escreva outra linha dentro do arquivo.", file=arquivo)
Se abrirmos o arquivo.txt, veremos o seguinte conteúdo:
1
2
Escreva isso dentro do arquivo,
Escreva outra linha dentro do arquivo.
Conclusão
Vimos nesse post como utilizar as funções input e print e como utilizá-las para pegar dados do usuários e mostrar dados para o usuário.
O ponto mais importante para guardar: o input() sempre retorna str, então, sempre que precisar de número, faça o cast com int() ou float() - caso contrário, você esbarra no famoso TypeError. No print(), lembre que sep, end e flush dão controle total sobre a saída, e que f-strings deixam tudo mais legível.
Esse é um conhecimento básico que todo programador Python, os chamados Pythonistas, devem saber!
Se ficou com alguma dúvida, fique à vontade para deixar um comentário no box aqui embaixo! Será um prazer te responder! ![]()
Perguntas frequentes
O input() retorna string em Python?
Sim. O input() sempre retorna uma str, mesmo quando o usuário digita números. Por isso input() de 42 vira '42' (texto), e não o número 42. Para usar como número, faça o cast com int() ou float().
Como ler um número com input() no Python?
Envolva o input() com a função de conversão: use idade = int(input('Idade: ')) para inteiros e preco = float(input('Preço: ')) para decimais. Assim o texto digitado vira número e já pode entrar em contas.
Como imprimir sem quebrar linha com print() em Python?
Use o parâmetro end. Por padrão o print() termina com \n (nova linha); passando end='' os próximos print continuam na mesma linha. Ex.: print('Carregando', end='').
Como separar valores no print() com sep em Python?
O parâmetro sep define o que vai entre os itens separados por vírgula. Por padrão é um espaço; com print('Dia', 'Mês', 'Ano', sep='/') a saída fica Dia/Mês/Ano.
Como mostrar uma variável junto com texto no print()?
Você pode passar vários itens separados por vírgula, como print('Seu nome é:', nome), ou usar uma f-string: print(f'Seu nome é: {nome}'). A f-string costuma ser mais legível.
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6