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
frase.lower()transforma toda a string em minúsculas, facilitando a comparação.- O
for c in frase.lower()percorre cada caractere da string. - A condição
if c in 'aeiou'seleciona apenas as vogais sem acento. - O set comprehension
{c for ...}cria um conjunto, eliminando duplicatas automaticamente. sorted(vogais)retorna uma lista com as vogais em ordem alfabética.printexibe 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']