Lógica de Programação com Python
40 Exercícios Completos com Códigos e Explicações para o Ensino
Técnico
1. Olá, Mundo Personalizado
Código Fonte:
nome = input('Qual é o seu nome? ')
print(f'Olá, {nome}! Bem-vindo ao mundo do Python.')
O que este código faz?
A função input() aguarda o usuário digitar algo e guarda na variável 'nome'. A letra 'f'
antes das aspas no print() permite injetar a variável diretamente no texto usando
chaves {}.
2. Soma de Dois Números
Código Fonte:
n1 = int(input('Digite o primeiro número: '))
n2 = int(input('Digite o segundo número: '))
soma = n1 + n2
print(f'A soma entre {n1} e {n2} é {soma}')
O que este código faz?
Usamos int() para converter o texto capturado pelo input() em números inteiros. Sem
o int(), o Python apenas juntaria os dois textos (concatenação).
3. Calculadora de Média Escolar
Código Fonte:
nota1 = float(input('Primeira nota: '))
nota2 = float(input('Segunda nota: '))
media = (nota1 + nota2) / 2
print(f'A média final é {media:.2f}')
O que este código faz?
Utilizamos float() para permitir notas com casas decimais (ex: 7.5). Os parênteses
garantem que a soma ocorra antes da divisão. O ':.2f' formata o resultado para duas
casas decimais.
4. Conversor de Medidas
Código Fonte:
metros = float(input('Digite um valor em metros: '))
centimetros = metros * 100
milimetros = metros * 1000
print(f'{metros}m equivale a {centimetros}cm e {milimetros}mm.')
O que este código faz?
Um simples processamento matemático onde multiplicamos o valor de entrada para
obter os múltiplos do metro.
5. Tabuada Simples
Código Fonte:
num = int(input('Digite um número para ver sua tabuada: '))
print(f'{num} x 1 = {num*1}')
print(f'{num} x 2 = {num*2}')
print(f'{num} x 3 = {num*3}')
O que este código faz?
Este exemplo mostra a lógica sequencial sem usar repetição ainda. Multiplicamos a
variável diretamente dentro das f-strings.
6. Conversor de Temperatura
Código Fonte:
celsius = float(input('Temperatura em °C: '))
fahrenheit = (celsius * 9/5) + 32
print(f'A temperatura de {celsius}°C corresponde a {fahrenheit}°F.')
O que este código faz?
Aplicação de uma fórmula matemática na programação. A ordem de precedência dos
operadores (multiplicação/divisão antes de soma) é respeitada pelo Python.
7. Aluguel de Carros
Código Fonte:
dias = int(input('Quantos dias alugados? '))
km = float(input('Quantos Km rodados? '))
pago = (dias * 60) + (km * 0.15)
print(f'O total a pagar é de R${pago:.2f}')
O que este código faz?
Calcula múltiplos custos (diária de R$60 e R$0.15 por km) e os soma em uma única
variável de processamento.
8. Reajuste Salarial
Código Fonte:
salario = float(input('Qual o salário do funcionário? R$'))
novo_salario = salario + (salario * 15 / 100)
print(f'Com 15% de aumento, o salário passa a ser R${novo_salario:.
2f}')
O que este código faz?
Calculamos a porcentagem multiplicando por 15 e dividindo por 100, e somamos esse
valor ao salário original.
9. Preço com Desconto
Código Fonte:
preco = float(input('Qual o preço do produto? R$'))
desconto = preco * 0.05
preco_final = preco - desconto
print(f'O produto com 5% de desconto custará R${preco_final:.2f}')
O que este código faz?
Em vez de dividir por 100, multiplicamos diretamente pelo fator decimal (0.05 para
5%). É uma forma mais enxuta de calcular porcentagens.
10. Pintando a Parede
Código Fonte:
largura = float(input('Largura da parede: '))
altura = float(input('Altura da parede: '))
area = largura * altura
tinta = area / 2
print(f'Sua parede tem {area}m². Você precisará de {tinta}L de
tinta.')
O que este código faz?
Mostra a dependência de variáveis: calculamos a área primeiro, e usamos a variável
'area' para calcular os litros de tinta (1 litro para cada 2m²).
11. Radar Eletrônico
Código Fonte:
velocidade = float(input('Qual a velocidade do carro? '))
if velocidade > 80:
multa = (velocidade - 80) * 7
print(f'MULTADO! Você pagará uma multa de R${multa:.2f}')
print('Tenha um bom dia! Dirija com segurança.')
O que este código faz?
O bloco 'if' só executa se a condição for verdadeira. Note a indentação (espaços à
esquerda) obrigatória no Python. O último print() ocorre sempre, pois está fora do if.
12. Par ou Ímpar
Código Fonte:
numero = int(input('Me diga um número qualquer: '))
resultado = numero % 2
if resultado == 0:
print(f'O número {numero} é PAR')
else:
print(f'O número {numero} é ÍMPAR')
O que este código faz?
O operador '%' (módulo) retorna o resto da divisão. Todo número par dividido por 2
tem resto 0.
13. Custo da Viagem
Código Fonte:
distancia = float(input('Qual a distância da viagem em Km? '))
if distancia <= 200:
preco = distancia * 0.50
else:
preco = distancia * 0.45
print(f'O preço da sua passagem será de R${preco:.2f}')
O que este código faz?
A estrutura if/else permite duas rotas diferentes no código. Viagens curtas têm um
preço por km, viagens longas são mais baratas por km.
14. Ano Bissexto
Código Fonte:
ano = int(input('Que ano quer analisar? '))
if ano % 4 == 0 and ano % 100 != 0 or ano % 400 == 0:
print(f'O ano {ano} é BISSEXTO')
else:
print(f'O ano {ano} NÃO é BISSEXTO')
O que este código faz?
Uso de operadores lógicos 'and' (e) e 'or' (ou) para criar uma condição composta
baseada nas regras do calendário gregoriano.
15. Maior e Menor Valores
Código Fonte:
a = int(input('Primeiro valor: '))
b = int(input('Segundo valor: '))
menor = a
if b < a:
menor = b
print(f'O menor valor digitado foi {menor}')
O que este código faz?
Uma técnica comum: assumimos que o primeiro é o menor. Depois testamos o
segundo. Se for menor, substituímos a variável.
16. Aprovando Empréstimo
Código Fonte:
casa = float(input('Valor da casa: R$'))
salario = float(input('Salário do comprador: R$'))
anos = int(input('Quantos anos de financiamento? '))
prestacao = casa / (anos * 12)
minimo = salario * 0.30
if prestacao <= minimo:
print('Empréstimo CONCEDIDO!')
else:
print('Empréstimo NEGADO!')
O que este código faz?
Programa prático que cruza múltiplos dados. Se a parcela não exceder 30% do salário,
aprova.
17. Classificando Atletas
Código Fonte:
idade = int(input('Qual a sua idade? '))
if idade <= 9:
print('Categoria: MIRIM')
elif idade <= 14:
print('Categoria: INFANTIL')
elif idade <= 19:
print('Categoria: JÚNIOR')
else:
print('Categoria: MASTER')
O que este código faz?
Apresentação do 'elif' (senão se). Permite testar várias condições em cascata. Assim
que uma for verdadeira, o resto é ignorado.
18. Índice de Massa Corporal (IMC)
Código Fonte:
peso = float(input('Qual o seu peso (Kg)? '))
altura = float(input('Qual a sua altura (m)? '))
imc = peso / (altura ** 2)
print(f'Seu IMC é de {imc:.1f}')
if imc < 18.5:
print('Abaixo do peso')
elif 18.5 <= imc < 25:
print('Peso ideal')
O que este código faz?
Mostra como calcular potência matemática (altura ** 2) e como o Python permite
encadear operadores lógicos matemáticos diretamente na condição (18.5 <= imc < 25).
19. Gerenciador de Pagamentos
Código Fonte:
preco = float(input('Preço das compras: R$'))
print('1 - À vista (10% desc)\n2 - Cartão (Preço normal)')
opcao = int(input('Qual a opção? '))
if opcao == 1:
total = preco - (preco * 0.10)
elif opcao == 2:
total = preco
print(f'Sua compra vai custar R${total:.2f}')
O que este código faz?
Criação de um pequeno menu de opções utilizando 'if' e 'elif' para escolher a regra de
negócio aplicada.
20. Jogo da Adivinhação v1.0
Código Fonte:
import random
computador = [Link](0, 5)
jogador = int(input('Pensei num número entre 0 e 5. Tente adivinhar:
'))
if jogador == computador:
print('PARABÉNS! Você conseguiu me vencer!')
else:
print(f'GANHEI! Eu pensei no número {computador} e não no
{jogador}!')
O que este código faz?
Introdução à importação de módulos com 'import random'. A máquina gera um
número aleatório e o aluno usa lógica para verificar acerto.
21. Contagem Regressiva
Código Fonte:
import time
print('Iniciando contagem...')
for c in range(10, 0, -1):
print(c)
[Link](1)
print('BUM! BUM! POOOW!')
O que este código faz?
O laço 'for' usando 'range'. O -1 no final do range indica que a contagem é
decrescente. Importamos 'time' para pausar a tela por 1 segundo a cada volta.
22. Contagem de Pares
Código Fonte:
print('Números pares entre 1 e 50:')
for n in range(2, 51, 2):
print(n, end=' ')
print('Fim!')
O que este código faz?
O parâmetro de passo do range (terceiro número) é 2, o que faz o Python pular de 2
em 2. O 'end=" "' no print faz com que não pule linha.
23. Tabuada com Laço FOR
Código Fonte:
num = int(input('Digite um número para ver sua tabuada: '))
for c in range(1, 11):
print(f'{num} x {c} = {num*c}')
O que este código faz?
Reescrevendo o exercício 5 com 'for'. Com apenas 3 linhas de código, fazemos 10
operações. Isso ilustra o poder da repetição.
24. Validação de Dados
Código Fonte:
sexo = str(input('Informe seu sexo [M/F]: ')).strip().upper()
while sexo not in 'MF':
sexo = str(input('Dados inválidos. Informe seu sexo [M/F]:
')).strip().upper()
print(f'Sexo {sexo} registrado com sucesso.')
O que este código faz?
O 'while' (enquanto) cria um loop infinito até que o usuário digite a informação
correta. strip() remove os espaços e upper() garante que seja lido como maiúsculo.
25. Criando um Menu de Opções
Código Fonte:
opcao = 0
while opcao != 3:
print('[ 1 ] Somar\n[ 2 ] Multiplicar\n[ 3 ] Sair')
opcao = int(input('Sua opção: '))
if opcao == 1:
print('A soma é realizada')
elif opcao == 2:
print('A multiplicação é realizada')
print('Fim do programa!')
O que este código faz?
Um laço 'while' guiado por uma variável de controle. O programa fica rodando
enquanto o usuário não escolher a opção de saída (3).
26. Calculadora de Fatorial
Código Fonte:
n = int(input('Digite um número para calcular seu Fatorial: '))
c = n
f = 1
print(f'Calculando {n}! = ', end='')
while c > 0:
print(f'{c}', end=' ')
print('x ' if c > 1 else '= ', end='')
f *= c
c -= 1
print(f'{f}')
O que este código faz?
Exemplo clássico de matemática. A variável 'f' serve como acumulador (multiplicando
os valores). c -= 1 reduz o contador a cada loop.
27. Sequência de Fibonacci
Código Fonte:
termos = int(input('Quantos termos você quer mostrar? '))
t1 = 0
t2 = 1
print(f'{t1} - {t2}', end='')
cont = 3
while cont <= termos:
t3 = t1 + t2
print(f' - {t3}', end='')
t1 = t2
t2 = t3
cont += 1
print(' - FIM')
O que este código faz?
Lógica um pouco mais complexa, onde a próxima variável depende da soma das duas
anteriores. Exige manipulação e transição de variáveis na memória.
28. Tratamento de Vários Valores (Flag)
Código Fonte:
n = soma = cont = 0
while True:
n = int(input('Digite um número [999 para parar]: '))
if n == 999:
break
soma += n
cont += 1
print(f'Você digitou {cont} números e a soma foi {soma}.')
O que este código faz?
O uso de 'while True' cria um loop intencionalmente infinito, que só é quebrado
(interrompido) de dentro para fora usando o comando 'break'.
29. Maior e Menor Valores em Repetição
Código Fonte:
resp = 'S'
maior = menor = soma = quant = 0
while resp in 'Ss':
num = int(input('Digite um número: '))
soma += num
quant += 1
if quant == 1:
maior = menor = num
else:
if num > maior: maior = num
if num < menor: menor = num
resp = str(input('Quer continuar? [S/N] ')).upper().strip()
print(f'Média foi {soma/quant:.2f}, maior foi {maior} e menor
{menor}')
O que este código faz?
Combina quase tudo aprendido: variáveis acumuladoras, contadoras, condicionais
para detectar maior/menor e um laço while condicionado a uma string de resposta.
30. Tabuada com Interrupção
Código Fonte:
while True:
n = int(input('Quer ver a tabuada de qual valor? (Negativo para
parar): '))
if n < 0:
break
for c in range(1, 11):
print(f'{n} x {c} = {n*c}')
print('Programa encerrado!')
O que este código faz?
Uso de laços aninhados: um 'for' dentro de um 'while'. O while gerencia a repetição
geral do programa, e o for desenha a tabuada atual.
31. Valores Únicos em uma Lista
Código Fonte:
numeros = list()
while True:
n = int(input('Digite um valor: '))
if n not in numeros:
[Link](n)
print('Valor adicionado com sucesso...')
else:
print('Valor duplicado! Não vou adicionar.')
resp = str(input('Quer continuar? [S/N] '))
if resp in 'Nn':
break
print(f'Você digitou os valores {sorted(numeros)}')
O que este código faz?
Introdução às Listas. Usamos .append() para adicionar elementos. O operador 'not in'
é perfeito para garantir que não haverá números repetidos na coleção.
32. Dividindo Valores em Várias Listas
Código Fonte:
num = list()
pares = list()
impares = list()
while True:
[Link](int(input('Digite um número: ')))
resp = str(input('Quer continuar? [S/N] '))
if resp in 'Nn':
break
for v in num:
if v % 2 == 0:
[Link](v)
else:
[Link](v)
print(f'A lista completa é {num}\nA lista de pares é {pares}')
O que este código faz?
Armazena todos os números em uma lista e depois utiliza um 'for' para varrer a lista e
distribuir os números em duas listas secundárias baseado em uma condição if.
33. Boletim com Listas Compostas
Código Fonte:
ficha = list()
while True:
nome = str(input('Nome: '))
nota1 = float(input('Nota 1: '))
nota2 = float(input('Nota 2: '))
media = (nota1 + nota2) / 2
[Link]([nome, [nota1, nota2], media])
resp = str(input('Quer continuar? [S/N] '))
if resp in 'Nn':
break
print('-' * 26)
for indice, aluno in enumerate(ficha):
print(f'{indice:<4}{aluno[0]:<10}{aluno[2]:>8.1f}')
O que este código faz?
Listas dentro de listas (matrizes/estruturas complexas). Guardamos o nome (índice 0),
uma lista de notas (índice 1) e a média (índice 2). O :<10 formata as colunas na hora de
imprimir.
34. Dicionário de Aluno
Código Fonte:
aluno = dict()
aluno['nome'] = str(input('Nome: '))
aluno['media'] = float(input(f'Média de {aluno["nome"]}: '))
if aluno['media'] >= 7:
aluno['situacao'] = 'Aprovado'
else:
aluno['situacao'] = 'Reprovado'
for chave, valor in [Link]():
print(f'- {chave} é igual a {valor}')
O que este código faz?
Introdução aos Dicionários (dict). Em vez de usar índices numéricos como as listas, os
dicionários usam 'chaves' (strings) como 'nome' ou 'media', permitindo dar significado
aos dados guardados.
35. Cadastro de Trabalhador em Dicionário
Código Fonte:
dados = dict()
dados['nome'] = str(input('Nome: '))
dados['ctps'] = int(input('Carteira de Trabalho (0 não tem): '))
if dados['ctps'] != 0:
dados['contratacao'] = int(input('Ano de Contratação: '))
dados['salario'] = float(input('Salário: R$'))
print('-=' * 15)
for k, v in [Link]():
print(f' - {k} tem o valor {v}')
O que este código faz?
Mostra como um dicionário é dinâmico. As chaves de contratação e salário só são
criadas se a pessoa tiver carteira de trabalho (CTPS != 0).
36. Função que Calcula Área
Código Fonte:
def area(larg, comp):
a = larg * comp
print(f'A área de um terreno {larg}x{comp} é de {a}m².')
print('Controle de Terrenos')
l = float(input('LARGURA (m): '))
c = float(input('COMPRIMENTO (m): '))
area(l, c)
O que este código faz?
Criação de funções (def). Em vez de escrever todo o código matematico solto, isolamos
a lógica em uma função 'area' que recebe parâmetros, tornando o código reutilizável.
37. Função com Parâmetros Dinâmicos
Código Fonte:
def maior(* num):
cont = maior_valor = 0
for valor in num:
if cont == 0 or valor > maior_valor:
maior_valor = valor
cont += 1
print(f'Foram informados {cont} valores e o maior foi
{maior_valor}.')
maior(2, 9, 4, 7, 1)
maior(4, 7, 0)
O que este código faz?
O asterisco '*' antes do parâmetro empacota múltiplos argumentos passados em uma
tupla. Isso permite chamar a função com quantos números quisermos (como o print
faz).
38. Função com Retorno (Return)
Código Fonte:
def somar(a=0, b=0, c=0):
s = a + b + c
return s
r1 = somar(3, 2, 5)
r2 = somar(2, 2)
print(f'Meus cálculos deram {r1} e {r2}.')
O que este código faz?
O 'return' faz a função devolver um valor para o programa principal em vez de
imprimi-lo diretamente. Note também que os parâmetros 'a=0' tornam os argumentos
opcionais.
39. Função Analisando e Gerando Dicionários
Código Fonte:
def notas(*n):
r = dict()
r['total'] = len(n)
r['maior'] = max(n)
r['menor'] = min(n)
r['media'] = sum(n) / len(n)
return r
resp = notas(5.5, 2.5, 1.5)
print(resp)
O que este código faz?
Uma função avançada que recebe uma quantidade indefinida de notas, usa funções
embutidas (max, min, sum, len) para processá-las, armazena num dicionário e o
devolve pronto.
40. Sistema de Cores no Terminal
Código Fonte:
def escreva_colorido(msg, cor_codigo):
print(f'\033[{cor_codigo}m{msg}\033[m')
texto = input('Digite uma mensagem: ')
escreva_colorido(texto, '31') # 31 é vermelho
escreva_colorido(texto, '32') # 32 é verde
escreva_colorido(texto, '34') # 34 é azul
O que este código faz?
Usa códigos ANSI para formatar a saída de texto. É uma ótima maneira de fechar a
lista e ensinar aos alunos como dar 'vida' visual aos seus programas no console.