Pular para o conteúdo
EasyCode Praticar grátis

5 exercícios clássicos de lógica em Python, com solução passo a passo

Por Mattheus Moraes · Exemplos de código testados · Atualizado em 2 de novembro de 2026 · Leitura de 4 min

Resposta rápida

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
1

Para 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
False

Esta 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:

5

Em "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 = 70

Soma 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:

108

FizzBuzz. 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.

Praticar no editor do EasyCode

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.

💜 Conhecer e apoiar o projeto

Leia também

Gostou? Compartilhe: WhatsApp LinkedIn