Nesta aula, vamos explorar como um programa Python pode se comunicar com o mundo exterior: recebendo dados do usuário (entrada) e exibindo resultados (saída). Dominar essas operações é essencial para criar programas interativos e úteis.

Veremos desde o uso básico de input() e print() até técnicas de formatação de strings e boas práticas de conversão de tipos. Ao final, você será capaz de criar pequenos programas que coletam informações, processam e mostram resultados de maneira clara.

input

A função input() é a principal forma de obter dados do usuário via terminal. Quando chamada, ela exibe um prompt opcional e aguarda que o usuário digite algo e pressione Enter. O valor retornado é sempre uma string.

Exemplo básico:

nome = input("Digite seu nome: ")
print("Olá, " + nome + "!")

É importante lembrar que input() sempre retorna uma string, mesmo que o usuário digite números. Portanto, para operações matemáticas, será necessário converter o valor para o tipo adequado (veja seção de conversão).

Dica: evite usar input() sem argumento, pois o usuário pode não saber o que digitar. Sempre forneça um prompt descritivo.

print (sep, end)

A função print() exibe um ou mais objetos no terminal, separando-os por espaço por padrão e adicionando uma quebra de linha ao final. Ela aceita dois parâmetros importantes: sep (separador) e end (final).

Exemplos:

print("Python", "é", "legal")  # saída: Python é legal
print("Python", "é", "legal", sep="-")  # saída: Python-é-legal
print("Linha 1", end="...")
print("Linha 2")  # saída: Linha 1...Linha 2

O parâmetro sep permite personalizar o caractere que separa os itens impressos. Já end controla o que é exibido após o último item; o padrão é \n (nova linha).

Esses parâmetros são úteis para formatar saídas sem precisar concatenar strings manualmente.

Conversão de tipos

Como input() retorna string, muitas vezes precisamos converter o valor para um tipo numérico (int, float) ou booleano. Python oferece funções de conversão explícita: int(), float(), str(), bool().

Exemplo de conversão para realizar soma:

idade_str = input("Quantos anos você tem? ")
idade = int(idade_str)
print("Daqui a 5 anos você terá", idade + 5)

Cuidado: se o usuário digitar algo que não pode ser convertido (por exemplo, "abc" para int), ocorrerá um erro (ValueError). Em programas mais robustos, usamos tratamento de exceções (try/except) para lidar com entradas inválidas.

Também é possível converter para float:

altura = float(input("Digite sua altura em metros: "))
print("Sua altura é", altura)

Conversão para booleano: bool() retorna False para valores como 0, 0.0, "" (string vazia), None, e True para os demais.

Formatação de saída

Existem várias maneiras de formatar strings em Python. As principais são:

  • Concatenação com + (menos recomendada para muitos valores)
  • Operador % (estilo antigo)
  • Método str.format()
  • f-strings (Python 3.6+) – a forma mais moderna e legível

Exemplo com f-strings:

nome = "Ana"
idade = 30
print(f"{nome} tem {idade} anos.")

f-strings permitem embutir expressões diretamente dentro das chaves: {nome}, {idade}. Também suportam especificadores de formatação, como número de casas decimais:

pi = 3.14159265
print(f"Pi com 2 casas: {pi:.2f}")  # saída: Pi com 2 casas: 3.14

Outros exemplos:

# Alinhamento
print(f"{nome:10} é alinhado à esquerda")
print(f"{nome:>10} é alinhado à direita")
# Preenchimento
print(f"{nome:_>10}")  # saída: _______Ana

O método str.format() é similar, mas usa placeholders com chaves vazias ou numeradas:

print("{} tem {} anos.".format(nome, idade))
print("{1} tem {0} anos.".format(idade, nome))  # invertendo ordem

O operador % é mais antigo e menos usado atualmente, mas ainda aparece em código legado:

print("%s tem %d anos." % (nome, idade))

Recomendação: prefira f-strings sempre que possível, por serem mais rápidas e legíveis.

Boas práticas

  • Sempre forneça prompts claros em input().
  • Converta tipos de forma segura, usando try/except se necessário.
  • Use f-strings para formatação de saída.
  • Evite concatenação excessiva com + dentro de print(); prefira passar múltiplos argumentos ou usar formatação.

Referências

Exercícios

  1. Escreva um programa que peça ao usuário seu nome e idade, e exiba: "Olá, [nome]! Você tem [idade] anos."

    ✓ Resposta:
    nome = input("Digite seu nome: ")
    idade = input("Digite sua idade: ")
    print(f"Olá, {nome}! Você tem {idade} anos.")
  2. Peça dois números inteiros ao usuário, calcule a soma e exiba o resultado usando sep e end apropriados.

    ✓ Resposta:
    a = int(input("Primeiro número: "))
    b = int(input("Segundo número: "))
    soma = a + b
    print("A soma de", a, "e", b, "é", soma, end="!\n")
  3. Peça ao usuário seu peso (kg) e altura (m), calcule o IMC e exiba com duas casas decimais.

    ✓ Resposta:
    peso = float(input("Peso (kg): "))
    altura = float(input("Altura (m): "))
    imc = peso / (altura ** 2)
    print(f"Seu IMC é {imc:.2f}")
  4. Leia três palavras do usuário e imprima-as separadas por vírgula e um espaço, sem quebra de linha no final.

    ✓ Resposta:
    p1 = input("Palavra 1: ")
    p2 = input("Palavra 2: ")
    p3 = input("Palavra 3: ")
    print(p1, p2, p3, sep=", ", end="")
  5. Peça um número decimal e exiba-o com 3 casas decimais, alinhado à direita em um campo de 10 caracteres.

    ✓ Resposta:
    num = float(input("Digite um número decimal: "))
    print(f"{num:>10.3f}")