Entrada e Saída de Dados no Python: input() e print()

Cansado de programar?

Conheça a melhor e mais completa formação de Python e Django e sinta-se um programador verdadeiramente competente. Além de Python e Django, você também vai aprender Banco de Dados, SQL, HTML, CSS, Javascript, Bootstrap e muito mais!

Quero aprender Python e Django de Verdade! Quero aprender!
Suporte

Tire suas dúvidas diretamente com o professor

Projetos práticos

Projetos práticos voltados para o mercado de trabalho

Prática profissional

Formação moderna com foco na prática profissional

Download do Artigo

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 retorna str, mesmo quando o usuário digita um número.
  • int(input()) lê inteiros e float(input()) lê decimais; texto inválido gera ValueError.
  • input() * 2 repete o texto ("3" * 2 vira "33"), não dobra o número.
  • Vários valores numa linha: a, b = map(int, input().split()).
  • print() tem sep (separador, padrão espaço) e end (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() e print() em Python? A função input() lê dados que o usuário digita no teclado e os devolve sempre como str (texto). Já a print() 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

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. :wink:

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? :thumbsup:

Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Assine as PyDicas e receba 30 dias do melhor conteúdo Python na sua Caixa de Entrada: direto e sem enrolação!

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.

:bulb: 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! :wink:

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.

Começe agora sua Jornada na Programação!

Não deixe para amanhã o sucesso que você pode começar a construir hoje!

#newsletter Olá :wave: Curtiu o artigo? Então faça parte da nossa Newsletter! Privacidade Não se preocupe, respeitamos sua privacidade. Você pode se descadastrar a qualquer momento.