Submódulo 2: Tipos de dados básicos e operações

Site: Lumina
Curso: Python para Iniciantes: Lógica e Programação
Livro: Submódulo 2: Tipos de dados básicos e operações
Impresso por: Usuário visitante
Data: quarta-feira, 17 set. 2025, 21:06

Descrição

Este submódulo apresenta os tipos primitivos de Python (int, float, bool, str), como identificá-los e convertê-los; explora operadores aritméticos, de comparação e lógicos; e mostra manipulação básica de strings e leitura de dados com input(), com atenção a erros comuns e boas práticas para preparar você aos próximos tópicos.

Tipos básicos: int, float, bool e str — por que eles importam

🎯 Por que os tipos importam antes de escrever código?

Primeiro, vamos entender o problema: quando um programa recebe dados (do teclado, de um arquivo ou de uma API), precisamos saber que tipo de dado estamos manipulando para escolher operações corretas. Imagine tentar somar "dez" com 5 — isso não faz sentido até definirmos regras de conversão. Em Python, os tipos básicos que você encontrará o tempo todo são int (inteiros), float (números com vírgula), bool (True/False) e str (texto). Essa classificação e comportamento estão documentados na referência de tipos do Python (1).

Data type
The standard type hierarchy of Python 3

Vamos ver como criar e inspecionar variáveis — primeiro o porquê, depois o como. Saber o tipo evita erros e ajuda a planejar validações em entradas que serão comuns na vida profissional (ex.: formularios de users, dados financeiros).

Exemplos (explicamos antes de mostrar o código)

Queremos: (a) criar exemplos simples; (b) mostrar o resultado de type(); (c) comentar o comportamento esperado.

# Criando valores e checando tipo
a = 10            # inteiro
b = 3.14          # float (ponto flutuante)
c = True          # booleano
d = "olá"       # string

print(type(a))    # <class 'int'>
print(type(b))    # <class 'float'>
print(type(c))    # <class 'bool'>
print(type(d))    # <class 'str'>

Nota: o tipo booleano é tratado como subtipo numérico em várias operações (True==1, False==0), mas não devemos depender dessa equivalência sem intenção explícita — converta quando necessário para manter o código claro (2).

Saiba mais

Para referência detalhada sobre tipos embutidos e regras de conversão, consulte a documentação oficial do Python — ela descreve regras de verdade/falsidade, tipos numéricos e sequências (1).

Atividade curta — mão na massa

  1. Crie 4 variáveis: uma de cada tipo (int, float, bool, str).
  2. Use type() e isinstance() para verificar os tipos e imprima mensagens diferentes dependendo do tipo.
  3. Publique sua solução no repositório de exercício do curso ou copie aqui para revisão.

Dica: experimente isinstance(valor, (int, float)) para testar múltiplos tipos.

Resumo rápido: entender e identificar tipos é o primeiro passo para escrever código confiável e para a depuração eficiente — isto será útil quando começarmos a combinar estruturas de controle e coleções no próximo submódulo.

Operadores: aritméticos, de comparação e lógicos — como e por quê

🔧 Operadores — primeiro o porquê

Quando resolvemos problemas, transformamos perguntas em expressões: "quanto custa X?" vira soma/ multiplicação; "o usuário digitou a senha correta?" vira comparação. Escolher o operador certo evita resultados estranhos (por exemplo: divisão inteira quando você queria ponto flutuante). A especificação de avaliação e precedência de operadores do Python explica essa ordem e é essencial quando escrevemos expressões mais complexas (1).

Order of operations
Order of operations

Operadores aritméticos principais

  • +, -, *, / (divisão float)
  • // (divisão inteira — quociente sem parte fracionária)
  • % (módulo — resto da divisão)
  • ** (exponenciação)

Exemplo e explicação antes do código: vamos calcular preço com imposto, quociente e resto para demonstrar / vs //. Depois mostramos precedência em uma expressão mista.

# Operadores aritméticos e precedência
preco = 99.90
imposto = 0.08
total = preco + preco * imposto   # multiplica antes da soma
print(total)                       # 107.892

a = 7
b = 2
print(a / b)   # 3.5  (divisão float)
print(a // b)  # 3    (divisão inteira)
print(a % b)   # 1    (resto)

Comparações e operadores lógicos

Comparadores: == != > < >= <=. Combine comparações com and, or, not. Atenção ao encadeamento: 1 < x < 10 funciona como matemática em Python (1).

graph TD; A[Expressões Aritméticas] --> B[Comparações]; B --> C[Operadores Lógicos]; C --> D[Decisões (if/while)]

Atividade prática

Crie uma função calcula_preco(qtd, preco_unitario, desconto_percent) que retorna o total arredondado com 2 casas. Teste casos: desconto 0, desconto 100, quantidade 0. Use asserts para validar saídas esperadas.

Resumo: entenda a ordem das operações e escolha operadores conforme a necessidade. Para detalhes formais sobre precedência e avaliação use a referência oficial do Python (1). Para o comportamento booleano e conversões implícitas consulte a seção de tipos embutidos (2).

Strings, f-strings, input() e conversões — práticas e armadilhas

💬 Strings e I/O: contar a história antes do código

Problema real: um sistema pede idade do usuário; queremos armazenar como número para cálculos — mas input() sempre retorna str. Portanto, precisamos converter com segurança e validar a entrada. A documentação oficial do Python explica o comportamento de input() e mostra como usar f-strings para formatar saída (1).

String (computer science)
Strings are typically made up of characters, and are often used to store human-readable data, such as words or sentences.

Manipulação básica de strings — explicação

Concatenar com + e repetir com * funcionam, mas f-strings são a forma moderna e legível de interpolar valores em textos. Use métodos como .upper(), .lower() e fatiamento s[1:4] para extrair partes do texto. Antes do código, pense: que formatos de entrada aceitaremos? Isso guia validação.

# Strings e entrada segura
nome = input("Digite seu nome: ")    # sempre str
idade_str = input("Digite sua idade: ")  # precisamos converter

try:
    idade = int(idade_str)   # pode gerar ValueError se a entrada não for numérica
except ValueError:
    print("Idade inválida. Informe um número inteiro.")
else:
    print(f"Olá {nome.title()}, você tem {idade} anos.")  # f-string

Dica de robustez: trate entradas vazias e espaços com .strip(). Para conversões mais complexas, recorra a float() ou a bibliotecas como decimal quando precisão for crítica (2). Formatted string literals (f-strings) são documentadas na seção de I/O e mostram formas de especificar precisão e formatos (3).

Reflita

Um erro comum é chamar int('') sem checar; isso gera ValueError. Como você validaria uma entrada que pode aceitar números decimais ou texto vazio? Escreva três casos de teste para sua função de parsing.

Atividade prática

  1. Implemente le_int(prompt) que pede até o usuário inserir um inteiro válido (laço com try/except).
  2. Adicione testes usando asserts: entrada '42' → 42; entrada '' deve repetir o pedido; entrada '3.14' deve falhar até inserir inteiro.

Resumo: usar input() exige validação; f-strings tornam mensagens legíveis; sempre trate exceções de conversão para não quebrar o programa em produção. Para referências oficiais sobre input() e f-strings, veja a documentação do Python (1) e a seção sobre literais formatadas (3). Para melhores práticas de conversão e comportamento de tipos, consulte guias confiáveis como Real Python (2).

🎯 Exercícios

🎯 Exercícios: Tipos de dados básicos e operações

Teste seus conhecimentos com estas questões de múltipla escolha. Cada questão tem apenas uma resposta correta.

Questão 1

Qual opção verifica se a variável a é exatamente do tipo int, sem incluir bool?

Questão 2

Qual prática é recomendada para evitar depender da igualdade True == 1 em decisões lógicas críticas?

Questão 3

Dado x = 7 e y = 3, quais são os resultados de x / y, x // y e x % y em Python?

Questão 4

Qual prática é apropriada para ler um inteiro do usuário usando input(), lidando com entradas inválidas?

Questão 5

Qual é a principal vantagem de decimals.Decimal em cálculos financeiros?