5 exercícios clássicos de lógica em Python, com solução passo a passo
Estes cinco exercícios aparecem em quase todo curso de lógica: par ou ímpar, maior de três números, fatorial, palíndromo e contagem de vogais. Tente resolver cada um sozinho antes de ver a solução, porque o aprendizado vem do esforço de tentar, e use as soluções abaixo para comparar o seu raciocínio.
Como usar esta lista
Para cada exercício, leia o enunciado, pare e tente por uns 10 minutos antes de abrir a solução. Se travar, use o método de 5 passos: entender o problema, resolver um exemplo à mão, escrever os passos em português, traduzir para código e testar. Todas as soluções abaixo foram executadas, e os resultados mostrados são os reais.
1. Par ou ímpar
Enunciado: dado um número, diga se ele é par ou ímpar.
Dica: um número é par quando o resto da divisão por 2 é zero. O operador % dá o resto.
def par_ou_impar(n):
if n % 2 == 0:
return "par"
return "ímpar"
print(par_ou_impar(7))
print(par_ou_impar(10))Resultado:
ímpar
par
2. O maior de três números, sem usar max
Enunciado: dados três números, devolva o maior.
Dica: comece achando que o primeiro é o maior e compare com os outros dois, trocando quando encontrar um maior.
def maior(a, b, c):
resultado = a
if b > resultado:
resultado = b
if c > resultado:
resultado = c
return resultado
print(maior(4, 9, 6))Resultado:
9
3. Fatorial
Enunciado: o fatorial de n é o produto de 1 até n (o de 5 é 1 × 2 × 3 × 4 × 5). O fatorial de 0 é 1.
Dica: comece com um resultado igual a 1 e multiplique por cada número de 2 até n.
def fatorial(n):
resultado = 1
for i in range(2, n + 1):
resultado = resultado * i
return resultado
print(fatorial(5))
print(fatorial(0))Resultado:
120
1Para o 0, o range(2, 1) não tem nenhum número, então o resultado fica em 1, que é o valor certo.
4. Palíndromo
Enunciado: diga se um texto se lê igual de trás para frente, ignorando maiúsculas e espaços.
Dica: texto[::-1] devolve o texto invertido.
def palindromo(texto):
limpo = texto.lower().replace(" ", "")
return limpo == limpo[::-1]
print(palindromo("arara"))
print(palindromo("Anotaram a data da maratona"))
print(palindromo("python"))Resultado:
True
True
FalseEsta solução funciona para textos sem acentos nem pontuação. Para frases com acentos, seria preciso tratá-los antes, um bom desafio extra.
5. Contar vogais
Enunciado: conte quantas vogais existem em uma palavra.
Dica: percorra as letras e some 1 quando a letra estiver em "aeiou".
def conta_vogais(texto):
total = 0
for letra in texto.lower():
if letra in "aeiou":
total = total + 1
return total
print(conta_vogais("programacao"))Resultado:
5Em "programacao" as vogais são o, a, a, a, o. Palavras com acento, como "programação", pedem um tratamento extra, porque "ã" não está na lista de vogais simples.
Mais três para treinar: tabuada, soma de lista e FizzBuzz
Quando os cinco acima ficarem fáceis, tente estes. A dica de cada um vem antes do código; tente sozinho primeiro.
Tabuada. Mostre a tabuada de um número de 1 a 10. Dica: uma repetição de 1 até 10.
n = 7
for i in range(1, 11):
print(n, "x", i, "=", n * i)Resultado:
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70Soma de uma lista, sem usar sum(). Dica: comece um total em zero e some cada item.
numeros = [4, 8, 15, 16, 23, 42]
total = 0
for x in numeros:
total += x
print(total)Resultado:
108FizzBuzz. De 1 a 15, mostre "Fizz" para múltiplos de 3, "Buzz" para múltiplos de 5 e "FizzBuzz" para múltiplos dos dois. Dica: teste primeiro o caso dos dois juntos, porque ele também é múltiplo de 3 e de 5. É um clássico de entrevista, e serve para checar se você domina condições e repetição.
for i in range(1, 16):
if i % 15 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)Resultado:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
Depois de resolver
Reescreva as soluções com outras palavras e outros números, e tente descobrir o que acontece nos casos estranhos: zero, número negativo, texto vazio. Esse hábito de testar o inesperado é o que separa quem decorou de quem entendeu. Para treinar mais, veja as funções em o que é função em Python.
Desafio extra: soma dos dígitos
Some os dígitos do número 1234 (1 + 2 + 3 + 4). Tente escrever sozinho antes de rodar este código. Depois teste com outros números.
numero = 1234
soma = 0
for digito in str(numero):
soma = soma + int(digito)
print(soma)
Resultado esperado:
10
Transformamos o número em texto com str para percorrer cada dígito, e voltamos para número com int na hora de somar.
Perguntas frequentes
Posso olhar a solução antes de tentar?
Pode, mas aprende bem menos. Tente por uns 10 minutos antes. O esforço de tentar é o que fixa o conteúdo.
Existe mais de uma solução certa?
Quase sempre. Se a sua funciona nos casos normais e nos estranhos, está certa, mesmo que seja diferente da nossa.
O que é um caso estranho?
É uma entrada fora do comum, como zero, um número negativo, um texto vazio ou uma lista sem itens. Testar esses casos mostra falhas escondidas.
Onde encontro mais exercícios?
No EasyCode, nos desafios do dia a dia, e na documentação oficial do Python. O importante é manter a prática todos os dias.
Fontes e para saber mais
Apoie o EasyCode 💜
O EasyCode é gratuito, independente e sem anúncios. Manter a plataforma rápida, com compiladores no navegador e novos conteúdos atualizados tem custos reais todo mês. Se o site está te ajudando a aprender, veja como apoiar o projeto para continuarmos sempre no ar e acessíveis para todos.