Desafio Python

Conjunto de vogais únicas

Enunciado

Dada a string frase = 'A programação em Python é divertida', crie um set comprehension que extraia todas as vogais únicas (a, e, i, o, u) presentes na frase, ignorando maiúsculas/minúsculas e acentos. Imprima o conjunto resultante em ordem alfabética.

Requisitos

  • Usar set comprehension.
  • Considerar apenas vogais sem acento: a, e, i, o, u.
  • Ignorar maiúsculas/minúsculas.
  • Imprimir as vogais em ordem alfabética.

Código inicial

frase = 'A programação em Python é divertida'
# Crie o set de vogais únicas
vogais = set()
print(sorted(vogais))

Saída esperada

['a', 'e', 'i', 'o', 'u']
Ver dica

Converta a frase para minúsculas e verifique se cada caractere está em 'aeiou'.

Mostrar solução
frase = 'A programação em Python é divertida'
# Set comprehension: filtra vogais sem acento, em minúsculas
vogais = {c for c in frase.lower() if c in 'aeiou'}
print(sorted(vogais))

Passo a passo

  1. frase.lower() transforma toda a string em minúsculas, facilitando a comparação.
  2. O for c in frase.lower() percorre cada caractere da string.
  3. A condição if c in 'aeiou' seleciona apenas as vogais sem acento.
  4. O set comprehension {c for ...} cria um conjunto, eliminando duplicatas automaticamente.
  5. sorted(vogais) retorna uma lista com as vogais em ordem alfabética.
  6. print exibe essa lista.

Por que funciona

O set comprehension é ideal quando queremos valores únicos. Ao percorrer a string e filtrar apenas vogais, o conjunto resultante conterá cada vogal no máximo uma vez. A ordenação com sorted garante uma saída previsível.

Erros comuns

  • Não converter para minúsculas: {c for c in frase if c in 'aeiou'} perderia o 'A' maiúsculo.
  • Incluir vogais acentuadas: if c in 'aeiouáéíóú' adicionaria 'á' e 'é' ao conjunto, mas o enunciado pede apenas sem acento.
  • Usar list comprehension em vez de set: [c for c in ...] manteria duplicatas e a saída teria repetições.
  • Esquecer sorted: a ordem de um conjunto não é garantida, então a saída poderia variar.

Outra forma de resolver

Com loop for e um set:

vogais = set()
for c in frase.lower():
    if c in 'aeiou':
        vogais.add(c)
print(sorted(vogais))

A compreensão é mais concisa e igualmente legível.

Saída esperada

['a', 'e', 'i', 'o', 'u']