Autor Tema: Hacer una lista de vocales de una string

0 Usuarios y 1 Visitante están viendo este tema.

20 Noviembre, 2020, 02:54 pm
Leído 161 veces

Quema

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,722
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Si quiero hacer una lista donde figuren la vocales de una palabra, probé, primero que extraiga la primera vocal.

name='vocals'
list=[]
    for char in name:
    if char=='a':
         list.append['char']
print(list)

si me funciona seguiría hacia abajo con el resto de las vocales. Se que me dirán otros métodos, pero quiero ver qué estoy haciendo mal.

20 Noviembre, 2020, 04:50 pm
Respuesta #1

ingmarov

  • Moderador Global
  • Mensajes: 4,900
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola Quema

Si quiero hacer una lista donde figuren la vocales de una palabra, probé, primero que extraiga la primera vocal.

name='vocals'
list=[]
    for char in name:
    if char=='a':
         list.append['char']
print(list)

si me funciona seguiría hacia abajo con el resto de las vocales. Se que me dirán otros métodos, pero quiero ver qué estoy haciendo mal.

Pues el indentado está mal, no sé si así lo tienes realmente.

Debe ser

name='vocals'
list=[]
    for char in name:
        if char=='a':
            list.append['char']
print(list)


Yo utilizo python 3.x y list es una palabra reservada ¿por qué no utilizas lista en lugar de list?

Yo tengo problemas mínimos con el indentado porque utilizo Idle un programa para escribir programas en python. Idle se encarga de indentar siempre que es necesario.

Dejo en el spoiler otra poción opción

Spoiler
def vocales(palabra):
   lista=[]
   vocals=["a","e","i","o","u","á","é","í","ó","ú"# Solo le quite la "e" a vocales para que la lista de vocales no se llamara igual que la función.
   for i in palabra:
      if i in vocals:
         lista.append(i)
   return(lista)

vocales("murcielago")
[cerrar]

Añado

Para nuestro idioma habrá que añadir las vocales con tilde.


Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Noviembre, 2020, 06:49 pm
Respuesta #2

Quema

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,722
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Pero en tu solución la vocal no se repite en la lista? Siguiendo tu consejo, utilicé set para los casos repetidos

set=set()
a='abadeibdag'
vocales=['a','e','i','o','u']
for char in a:
    if char in vocales:
        set.add(char)
print(list(set))

20 Noviembre, 2020, 07:20 pm
Respuesta #3

ingmarov

  • Moderador Global
  • Mensajes: 4,900
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Pero en tu solución la vocal no se repite en la lista? Siguiendo tu consejo, utilicé set para los casos repetidos

Ah sí, la función "vocales" extrae todas las vocales de la palabra ingresada. Pero es fácil hacer que no se repita cada vocal.

Spoiler
def vocales(palabra):
   lista=[]
   vocals=["a","e","i","o","u","á","é","í","ó","ú"]
   for i in palabra:
      if (i in vocals and i not in lista):
         lista.append(i)
   return(lista)
[cerrar]



Pensé que terminarías tu idea inicial, te pongo algunos comentarios en tu código.

set=set()  # No conocía este tipo de objeto "set", muy conveniente. No uses palabras reservadas para nombrar variables.
a='abadeibdag'
vocales=['a','e','i','o','u']
for char in a:
    if char in vocales:
        set.add(char)
print(list(set))

Te funciona bien, supongo. Yo en lugar de set=set() habría escrito algo como lista=set().


Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...