[Python] Crear una lista a partir de una cadena

Iniciado por Canariolp21, 15 Noviembre 2010, 02:30 AM

0 Miembros y 2 Visitantes están viendo este tema.

Canariolp21

Buenas Noches a todos:

Mi problema es el siguiente:

Necesito crear una lista a partir de una cadena, ya que estoy realizando un ejercicio del manual de python que hay por aqui.

de momento tengo esto:

cadena = raw_input('Escribe una cadena: ')
lista=[cadena]
print lista


el problema reside en que me sale esto:

['La casa de la pradera']

y debería salirme esto:

['La' ,'casa', 'de', 'la', 'pradera']

ya que despues voy a recorrer la lista y voy a mirar si hay alguna palabra que tenga de tamaño el que le introduciré por teclado declarando despues de la cadena una variable más.

Un saludo y espero que alguien me ilumine.


Canariolp21

Bueno, me contesto yo mismo:

# Importar librerias del sistema
import os
# Declarar variables e inicializarlas
sistema = (os.name)
palabras=0   
if sistema=="nt":
    os.system("cls")
else:
    os.system("clear")

#Introduccion de una cadena
cadena = raw_input('Escribe una cadena: ')
k = raw_input('Escribe un numero: ')
lista= cadena.split()
for i in range(len(lista)):
    #print len(lista[i])
    if len(lista[i])==k:
         palabras+=1

print palabras


El problema que tengo ahora es que no soy capaz de que me funcione que me sume cuantas palabras son iguales a las introducidas por la variable k.

Si descomentamos la linea (print len(lista)) vemos que nos imprime el tamaño de cada una de las palabras, pero no sé porqué el if no lo hace de forma correcta y no suma el contador.

¿Alguien me puede echar una mano?

Gracias

.:WindHack:.

El error es prácticamente una tontería. Está en que, pides la variable K como una cadena (str).

Código (python,3) [Seleccionar]
#Introduccion de una cadena
cadena = raw_input('Escribe una cadena: ')
k = raw_input('Escribe un numero: ') # k = input('')
lista= cadena.split()
for i in range(len(lista)):
   #print len(lista[i])
   if len(lista[i])==k:
        palabras+=1


En todo caso, podrías hacer un poco más limpio el código. Con el bucle for-in puedes recorrer directamente cada elemento de la lista.

Por ejemplo:
Código (python) [Seleccionar]
sString = raw_input('Escribe una cadena: ')
List = sString.split()
K = input('Escribe un numero: ')
sWords = 0

for i in List:
   if len(i) == K:
sWords += 1




Saludos.,

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."

Canariolp21

Gracias WindHack, es verdad era una tontería eso me pasa por querer ir a dormir, ya que 3 horas después me levanté para ir a currar.