Resposta rápida
input() lê o que o usuário digita e sempre devolve uma str; print() mostra valores na tela. Para ler um número, converta a entrada: int(input("Idade: ")) ou float(input("Preço: ")). Para formatar a saída, use f-strings: print(f"{valor:.2f}").
1
2
3
idade = int(input("Digite sua idade: ")) # Digite sua idade: 25
print(f"Ano que vem você terá {idade + 1} anos")
# Ano que vem você terá 26 anos
Resumo em 30 segundos:
-
input()sempre retornastr, mesmo quando o usuário digita um número. -
int(input())lê inteiros efloat(input())lê decimais; texto inválido geraValueError. -
input() * 2repete o texto ("3" * 2vira"33"), não dobra o número. - Vários valores numa linha:
a, b = map(int, input().split()). -
print()temsep(separador, padrão espaço) eend(final, padrão quebra de linha).
Olá Pythonista!
Nesse post vamos falar sobre entrada e saída de dados: a função input(), a função print() e MUITO MAIS!
Com essas funções, um simples script Python fica muito mais dinâmico, porque passa a interagir com o usuário: pedimos dados com input e mostramos informações com 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 - Por que
input() * 2repete o texto em vez de dobrar o número? - Saída de dados com a Função
print - Como formatar casas decimais no
print(f-string com:.2f) - Juntando entrada e saída com
inputeprint - Como ler vários valores na mesma linha com
split()emap() - Utilizando
printpara gravar dados em arquivos - Erros comuns
- Exercícios resolvidos
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 (o chamado prompt). Os detalhes estão na documentação oficial da função input().
Veja 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. Depois da conversão, o valor pode entrar em qualquer conta com os operadores aritméticos do Python.
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. O mesmo acontece se o usuário apenas apertar Enter sem digitar nada (a entrada vira ''). Em programas reais, é comum proteger essa conversão com tratamento de erros com try/except. ![]()
Por que input() * 2 repete o texto em vez de dobrar o número?
Porque input() devolve uma string, e em Python multiplicar uma string por um inteiro repete o texto. "3" * 2 resulta em "33", e não em 6. Esse caso aparece muito em questões de prova.
Veja o código clássico:
1
2
quantidade = input("Quantos produtos você quer? ")
print(quantidade * 2)
Digitando 3, o programa não dá erro, mas mostra:
1
2
Quantos produtos você quer? 3
33
Diferente do + com um número (que gera TypeError), o * entre str e int é uma operação válida: é a repetição de strings, a mesma que faz "ab" * 3 virar "ababab" (veja mais sobre isso no guia de strings no Python). Para multiplicar de verdade, converta a entrada:
1
2
quantidade = int(input("Quantos produtos você quer? "))
print(quantidade * 2)
Agora sim:
1
2
Quantos produtos você quer? 3
6
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 (a assinatura completa está na documentação oficial do print()). 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. Se quiser um guia dedicado só ao print(), com casos como barras de progresso e tabelas no terminal, veja também o post print no Python.
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!
Como formatar casas decimais no print (f-string com :.2f)
Para mostrar um número com um número fixo de casas decimais, coloque :.2f depois da variável dentro da f-string: print(f"{valor:.2f}"). O 2 é a quantidade de casas e o f indica número de ponto flutuante (decimal).
1
2
3
4
5
6
preco = 19.9
pi = 3.14159265
print(f"Total: R$ {preco:.2f}")
print(f"{pi:.2f}")
print(f"{pi:.4f}")
A saída é:
1
2
3
Total: R$ 19.90
3.14
3.1416
Repare que o :.2f arredonda (3.1416 com 4 casas) e completa com zeros (19.90). O round() não faz a segunda parte, porque devolve um número, e o Python não mostra zeros à direita:
1
2
print(round(3.10, 2))
print(f"{3.10:.2f}")
1
2
3.1
3.10
Regra prática: use round() quando precisar do número arredondado para fazer contas, e :.2f quando o objetivo é exibir o valor.
Os especificadores mais úteis no dia a dia (todos fazem parte da mini-linguagem de formatação do Python; nos exemplos de alinhamento, nome = "Python"):
| Especificador | Exemplo | Saída | Para que serve |
|---|---|---|---|
.2f |
f"{3.14159:.2f}" |
3.14 |
Fixar casas decimais |
,.2f |
f"{1234567.891:,.2f}" |
1,234,567.89 |
Separador de milhar (padrão americano) |
.1% |
f"{0.256:.1%}" |
25.6% |
Porcentagem |
03d |
f"{7:03d}" |
007 |
Completar inteiro com zeros |
>10 |
f"[{nome:>10}]" |
[ Python] |
Alinhar à direita em 10 posições |
^10 |
f"[{nome:^10}]" |
[ Python ] |
Centralizar em 10 posições |
Para exibir valores no padrão brasileiro (ponto no milhar e vírgula nos centavos), uma saída simples é trocar os caracteres depois de formatar:
1
2
3
valor = 1234567.891
br = f"{valor:,.2f}".replace(",", "X").replace(".", ",").replace("X", ".")
print(f"R$ {br}")
1
R$ 1.234.567,89
Você também vai encontrar código antigo usando "%.2f" % valor ou "{:.2f}".format(valor). Os dois produzem o mesmo 3.14 para pi, mas em código novo a f-string é a opção mais legível.
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). E para tomar decisões com base no que foi digitado (maior de idade? número par?), o próximo passo são as estruturas condicionais com if, elif e else.
Dominar entrada e saída de dados é a base de qualquer programa interativo - e é exatamente daí que a gente parte, do zero até projetos completos, na Jornada Python:
Como ler vários valores na mesma linha com split() e map()
Para ler vários valores digitados na mesma linha, use input().split(), que quebra o texto nos espaços e devolve uma lista de strings. Para já convertê-los em números, combine com map(): a, b = map(int, input().split()).
Primeiro, só o split():
1
2
a, b = input("Digite dois números: ").split() # Digite dois números: 10 20
print(a, b, type(a))
1
2
Digite dois números: 10 20
10 20 <class 'str'>
Os valores foram separados, mas continuam sendo texto. O map(int, ...) aplica o int() em cada pedaço de uma vez (a função map é explicada em detalhes no post sobre as funções map e filter no Python):
1
2
a, b = map(int, input("Digite dois números: ").split()) # Digite dois números: 10 20
print("Soma:", a + b)
1
2
Digite dois números: 10 20
Soma: 30
Quando a quantidade de valores varia, guarde tudo em uma lista com list(map(...)):
1
2
3
notas = list(map(float, input("Digite as notas: ").split())) # Digite as notas: 7.5 8 9.5
print(notas)
print(f"Média: {sum(notas) / len(notas):.1f}")
1
2
3
Digite as notas: 7.5 8 9.5
[7.5, 8.0, 9.5]
Média: 8.3
O split() também aceita outro separador. Para ler uma data como 26/09/2026:
1
2
dia, mes, ano = map(int, input("Data (dd/mm/aaaa): ").split("/")) # Data (dd/mm/aaaa): 26/09/2026
print(dia, mes, ano)
1
2
Data (dd/mm/aaaa): 26/09/2026
26 9 2026
Repare que o int("09") virou 9: zeros à esquerda somem na conversão.
Qual forma de leitura usar? Resumo para consultar na hora de escrever o programa:
| Situação | Como ler | Exemplo digitado |
|---|---|---|
| Texto (nome, cidade) | nome = input("Nome: ") |
Ana |
| Número inteiro (idade, quantidade) | n = int(input("Idade: ")) |
25 |
| Número decimal (preço, altura) | x = float(input("Preço: ")) |
19.9 |
| Decimal com vírgula (padrão BR) | x = float(input().replace(",", ".")) |
3,5 |
| Quantidade fixa de valores na mesma linha | a, b = map(int, input().split()) |
10 20 |
| Quantidade variável de valores | nums = list(map(int, input().split())) |
1 2 3 4 |
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.
Erros comuns
Estes são os erros que mais aparecem com input() e print(). Os tracebacks abaixo são reais, gerados rodando cada script com python3 main.py.
1. TypeError ao fazer conta com o input sem converter
1
2
idade = input("Digite sua idade: ") # Digite sua idade: 25
print("Ano que vem:", idade + 1)
1
2
3
4
Traceback (most recent call last):
File "main.py", line 2, in <module>
print("Ano que vem:", idade + 1)
TypeError: can only concatenate str (not "int") to str
Correção: converta na leitura, com idade = int(input("Digite sua idade: ")).
2. ValueError ao digitar um decimal num int(input())
1
n = int(input("Digite um número: ")) # Digite um número: 3.5
1
2
3
4
Traceback (most recent call last):
File "main.py", line 1, in <module>
n = int(input("Digite um número: "))
ValueError: invalid literal for int() with base 10: '3.5'
Correção: o int() não aceita texto com ponto. Se o valor pode ter casas decimais, use float(input(...)). Se você quer o inteiro mesmo assim, converta em duas etapas: int(float(input(...))) (com 3.5, resulta em 3).
3. ValueError ao digitar decimal com vírgula
1
preco = float(input("Preço: ")) # Preço: 3,5
1
2
3
4
Traceback (most recent call last):
File "main.py", line 1, in <module>
preco = float(input("Preço: "))
ValueError: could not convert string to float: '3,5'
Correção: o Python usa ponto como separador decimal. Troque a vírgula antes de converter:
1
2
preco = float(input("Preço: ").replace(",", ".")) # Preço: 3,5
print(preco * 2) # 7.0
4. ValueError no split() com quantidade errada de valores
1
a, b, c = input("Digite três números: ").split() # Digite três números: 10 20
1
2
3
4
Traceback (most recent call last):
File "main.py", line 1, in <module>
a, b, c = input("Digite três números: ").split()
ValueError: not enough values to unpack (expected 3, got 2)
Correção: o número de variáveis à esquerda precisa bater com a quantidade de valores digitados. Se a quantidade pode variar, leia tudo para uma lista: valores = input().split().
5. SyntaxError ao usar print sem parênteses (código de Python 2)
1
print "Olá, mundo!"
1
2
3
File "main.py", line 1
print "Olá, mundo!"
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
Correção: no Python 3, print é uma função e exige parênteses: print("Olá, mundo!"). Esse erro costuma aparecer ao copiar exemplos de tutoriais antigos, escritos para Python 2.
Exercícios resolvidos
Tente resolver cada um antes de abrir a solução. Nos exercícios com input(), o comentário mostra o que foi digitado no teste.
Exercício 1. Escreva um programa que pergunte o nome do usuário e responda Olá, <nome>! Bem-vinda ao Python.
Ver solução
1
2
nome = input("Qual é o seu nome? ") # Qual é o seu nome? Ana
print(f"Olá, {nome}! Bem-vinda ao Python.")
Saída (digitando Ana): Olá, Ana! Bem-vinda ao Python.
Como o nome é texto, não é preciso converter nada: a str devolvida pelo input() vai direto para a f-string.
Exercício 2. Leia dois números inteiros e mostre a soma no formato 7 + 5 = 12.
Ver solução
1
2
3
a = int(input("Primeiro número: ")) # Primeiro número: 7
b = int(input("Segundo número: ")) # Segundo número: 5
print(f"{a} + {b} = {a + b}")
Saída (digitando 7 e 5): 7 + 5 = 12
Sem o int(), o a + b colaria os textos e mostraria 75.
Exercício 3 (questão de prova). Um estudante escreveu o código abaixo e, ao executar, digitou 3. O que aparece na tela?
1
2
quantidade = input("Quantos produtos você quer? ")
print(quantidade * 2)
a) 6
b) 33
c) TypeError
d) 3 3
Ver solução
Resposta: b).
Saída: 33
O input() devolve a string '3', e '3' * 2 repete o texto duas vezes. Não há erro porque multiplicar str por int é válido em Python. Para obter 6 (alternativa a), seria preciso int(input(...)).
Exercício 4. Leia o preço de um produto (decimal) e a quantidade (inteiro) e mostre o total com duas casas decimais.
Ver solução
1
2
3
4
preco = float(input("Preço do produto: ")) # Preço do produto: 19.9
quantidade = int(input("Quantidade: ")) # Quantidade: 3
total = preco * quantidade
print(f"Total a pagar: R$ {total:.2f}")
Saída (digitando 19.9 e 3): Total a pagar: R$ 59.70
Sem o :.2f, o print(total) mostraria 59.699999999999996, um efeito da forma como o computador guarda números decimais. O :.2f arredonda e exibe exatamente duas casas.
Exercício 5 (questão de prova). Qual é a saída de print("A", "B", "C", sep="-", end="!")?
a) A B C!
b) A-B-C!
c) A-B-C-!
d) ABC-!
Ver solução
1
print("A", "B", "C", sep="-", end="!")
Resposta: b).
Saída: A-B-C!
O sep vai só entre os itens (por isso não há - depois do C), e o end substitui a quebra de linha no final.
Exercício 6. Leia três notas digitadas na mesma linha, separadas por espaço, e mostre a média com uma casa decimal.
Ver solução
1
2
3
n1, n2, n3 = map(float, input("Digite as 3 notas: ").split()) # Digite as 3 notas: 7 8.5 6
media = (n1 + n2 + n3) / 3
print(f"Média: {media:.1f}")
Saída (digitando 7 8.5 6): Média: 7.2
O split() separa os três textos, o map(float, ...) converte cada um e o :.1f arredonda 7.1666… para 7.2.
Exercício 7 (questão de prova). O programa n = int(input("Digite um número: ")) é executado e o usuário digita 3.5. O que acontece?
a) n recebe 3
b) n recebe 3.5
c) n recebe 4
d) O programa para com ValueError
Ver solução
1
n = int(input("Digite um número: ")) # Digite um número: 3.5
Resposta: d).
Saída: ValueError: invalid literal for int() with base 10: '3.5'
O int() recebe a string '3.5', que não é um inteiro válido. Ele só trunca quando recebe um float (int(3.5) dá 3), não um texto com ponto.
Exercício 8. Leia um número inteiro e informe se ele é par ou ímpar.
Ver solução
1
2
3
4
5
6
numero = int(input("Digite um número inteiro: ")) # Digite um número inteiro: 7
if numero % 2 == 0:
print(f"{numero} é par")
else:
print(f"{numero} é ímpar")
Saída (digitando 7): 7 é ímpar (digitando 10: 10 é par)
O operador % devolve o resto da divisão: se o resto por 2 é zero, o número é par. O int() é obrigatório, porque '7' % 2 com string não faz a conta.
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 (ou em resultados estranhos como "3" * 2 virando 33). Para ler vários valores de uma vez, use split() com map(). No print(), lembre que sep, end e flush dão controle total sobre a saída, e que f-strings com :.2f resolvem a formatação de casas decimais.
Esse é um conhecimento básico que todo programador Python, os chamados Pythonistas, devem saber! Se quiser praticar isso com projetos guiados, do básico ao avançado, conheça o nosso curso de Python completo.
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.
Um estudante escreveu quantidade = input(‘Quantos produtos você quer?’) e depois print(quantidade * 2). Ao digitar 3, o que aparece?
Aparece 33. Como o input() retorna a string '3', a expressão '3' * 2 repete o texto duas vezes em vez de multiplicar o número. Para obter 6, converta a entrada antes: quantidade = int(input('Quantos produtos você quer?')).
Como ler vários números na mesma linha com input() no Python?
Use split() para quebrar o texto nos espaços e map() para converter cada parte: a, b = map(int, input().split()). Digitando 10 20, a recebe 10 e b recebe 20. Para uma quantidade variável de valores, use numeros = list(map(int, input().split())).
Como mostrar um número com 2 casas decimais no print() em Python?
Use uma f-string com o especificador :.2f, como em print(f'{valor:.2f}'). Com valor = 19.9 a saída é 19.90. Diferente de round(), que devolve um número e pode mostrar 3.1 em vez de 3.10, o :.2f sempre exibe as duas casas.
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6