TransWikia.com

Imprimir solo vocales de una palabra

Stack Overflow en español Asked on January 5, 2021

Tengo un programa que pide un nombre o frase, luego el programa solo imprimirá las vocales nada más. Tengo una mínima idea de como es, con un bucle for y if luego se añade a una lista vacía o cadena, y actualmente el programa que tengo es este:

frase = input("Frase: ")

vocales = 'aeiou'

a = ''

for x in frase:
    if vocales in frase:
        a += str(vocales)

print(a)

El programa no me funciona nada

One Answer

Primero hay que recorrer la frase con for x in frase. Eso devuelve letra a letra.

Luego preguntas si la letra está entre las vocales con if x in vocales. En tal caso, la agregas a la variable de salida.

frase = input("Frase: ")
vocales = 'aeiou'
a = ''
for x in frase:
    if x in vocales:
        a += x

print(a)

Produce:

Frase: la mona jacinta se ha puesto una cinta
aoaaiaeaueouaia

Solución pythonica

La anterior es una solución pedestre. Con Python podemos usar compresión de lista:

frase = input("Frase: ")
vocales = 'aeiou'
a = "".join([x for x in frase if x in vocales])

print(a)

La parte [x for x in frase] forma una lista con todas las letras de la frase, pero como solo nos interesan las vocales, agregamos una condición:

[x for x in frase if x in vocales]

lo que nos da esta lista:

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

Con join tomamos los elementos de la lista y los concatenamos. Hay que indicar una cadena que se insertara entre elemento y elemento. No queremos insertar nada; especificamos una cadena vacia:

"".join([x for x in frase if x in vocales])

Correct answer by Candid Moe on January 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP