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
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP