Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Canariolp21 en 15 Noviembre 2010, 02:30 am



Título: [Python] Crear una lista a partir de una cadena
Publicado por: Canariolp21 en 15 Noviembre 2010, 02:30 am
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:
Código:
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.



Título: Re: [Python] Crear una lista a partir de una cadena
Publicado por: Canariolp21 en 15 Noviembre 2010, 03:03 am
Bueno, me contesto yo mismo:
Código:
# 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


Título: Re: [Python] Crear una lista a partir de una cadena
Publicado por: .:WindHack:. en 15 Noviembre 2010, 04:55 am
El error es prácticamente una tontería. Está en que, pides la variable K como una cadena (str).

Código
  1. #Introduccion de una cadena
  2. cadena = raw_input('Escribe una cadena: ')
  3. k = raw_input('Escribe un numero: ') # k = input('')
  4. lista= cadena.split()
  5. for i in range(len(lista)):
  6.    #print len(lista[i])
  7.    if len(lista[i])==k:
  8.         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
  1. sString = raw_input('Escribe una cadena: ')
  2. List = sString.split()
  3. K = input('Escribe un numero: ')
  4. sWords = 0
  5.  
  6. for i in List:
  7.    if len(i) == K:
  8. sWords += 1



Saludos.,


Título: Re: [Python] Crear una lista a partir de una cadena
Publicado por: Canariolp21 en 15 Noviembre 2010, 20:58 pm
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.