elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [PYTHON] Problema con (len)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PYTHON] Problema con (len)  (Leído 4,125 veces)
DameBanda

Desconectado Desconectado

Mensajes: 65


Hollywood Whore


Ver Perfil
[PYTHON] Problema con (len)
« en: 2 Septiembre 2013, 23:27 pm »

Hola a todos

Iré directo al grano ya que mi duda es simple:

en un archivo de texto hago:

Código:
f = open("texto.txt")
for linea in f:
      print len(linea)


Cuando el resultado debiera ser:

Código:
4
4
4
4
4

El resultado es:

Código:
4
4
4
4
3

El contenido de texto.txt es

Código:
B02
R04
G06
P08
Y10

Si me decis vosotros los expertos en la materia porque sucede esto y como solucionarlo os estaría tremendamente agradecido :D


En línea

"Amarillo, pensó" Douglas Adams




[img]http:/
Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #1 en: 3 Septiembre 2013, 00:07 am »

Porque la ultima linea no tiene CRLF :)

saludos


En línea

DameBanda

Desconectado Desconectado

Mensajes: 65


Hollywood Whore


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #2 en: 3 Septiembre 2013, 01:05 am »

Ok, fallo mio. Al final lo solucioné de una forma algo chapuzera:

Puse una linea mas al archivo y hice un elif para controlar cuando llegara ahí:

Citar
for linea in cancion_scr:
         cancion_scr = load_song_scr("SONG1.txt", SONG_DIR)
         if linea[0] == 'B':
            ThreadBN = BN_init(linea[1:])
            ThreadBN.start()
         elif linea[0] == 'R':
            ThreadRN = RN_init(linea[1:])
            ThreadRN.start()
         elif linea[0] == 'G':
            ThreadGN = GN_init(linea[1:])
            ThreadGN.start()
         elif linea[0] == 'P':
            ThreadPN = PN_init(linea[1:])
            ThreadPN.start()
         elif linea[0] == 'Y':
            ThreadYN = YN_init(linea[1:])
            ThreadYN.start()
         elif linea[0] == 'E':
            eos()

Es un codigo la mar de chapuzero, lo sé. No me mateis por ello.

Por cierto. Sabeis si es normal que un
Código:
time.sleep(i) #siendo i = 2 
De como resultado:

 
Código:
TypeError: a float is required

Lo pregunto aquí por no abrir otro post. (si hago mal avisadme  :rolleyes:)
En línea

"Amarillo, pensó" Douglas Adams




[img]http:/
Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #3 en: 3 Septiembre 2013, 03:11 am »

Podrías hacer algo así para las lineas

Código
  1. f = open("1.txt","r")
  2. for cadena in f.read().split('\n'):
  3.      print len(cadena)
  4. f.close()
  5.  


Lo del timer a mi me funciona bien asi:

Código
  1. import time
  2. numero=2
  3. con=1
  4. while True:
  5.    print "Sleep durante "+ str(con) +" Segundos"
  6.    time.sleep(numero)
  7.    con+=1
  8.  


saludos
En línea

DameBanda

Desconectado Desconectado

Mensajes: 65


Hollywood Whore


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #4 en: 3 Septiembre 2013, 16:14 pm »

Ok. Me estas salvando la vida  ;D

Eso si, en el timer sigo atascado. tengo algo así:
Código:
class BN_init(threading.Thread):

def __init__(self, tiempo):
threading.Thread.__init__(self)
self.tiempo = tiempo

def run(self):
time.sleep(self.tiempo)
screen.blit(BN.image, BN.rect)


La cosa es meter el timer en un hilo independiente para que el sleep no paralice el resto del programa (o eso creo)

A la clase la llamo con el codigo que te pase antes:

Código:
cancion_scr = load_song_scr("SONG1.txt", SONG_DIR)

for linea in cancion_scr:
cancion_scr = load_song_scr("SONG1.txt", SONG_DIR) #esto es para que la cargue en cada ciclo
if linea[0] == 'B':
ThreadBN = BN_init(linea[1:])
ThreadBN.start()

y la funcion load_song_scr simplemente carga el archivo de texto:

Código:
def load_song_scr(nombre, dir_cancion):
ruta = os.path.join(dir_cancion, nombre)
try:
file = open(ruta)
except:
print "Error, no se puede cargar la transcripcion: ", ruta
sys.exit(1)
return file

El contenido de SONG1.txt es:

Código:
B2
R4
G6
P8
Y11
END

Y cuando ejecuto todo el resultado que da es:

Código:
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Python27\Lib\threading.py", line 808, in __bootstrap_inner
    self.run()
  File "PYGAME TEST 1.py", line 127, in run
    time.sleep(delay)
TypeError: a float is required

Ya no se que mas puedo hacer. Si sustituyo self.tiempo por un numero funciona.
Si hago un tiempo = 10 tambien
el contenido de self.tiempo es un numero entero (lo he comprovado imprimiendo la variable antes de ejecutar el sleep

Alguna idea? Gracias por adelantado  :rolleyes:
En línea

"Amarillo, pensó" Douglas Adams




[img]http:/
Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #5 en: 3 Septiembre 2013, 17:44 pm »

TypeError: a float is required. gracias por avisarme.  :¬¬  :laugh:

Código
  1. ThreadBN = BN_init(float(linea[1:]))

saludos
En línea

DameBanda

Desconectado Desconectado

Mensajes: 65


Hollywood Whore


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #6 en: 3 Septiembre 2013, 17:49 pm »

Gracias. (estoy muy verde, si)

El caso es que ya habia probado a convertir a float antes (aunque dentro del propio thread) y no me habia funcionado.

Ahora si. Con esto creo que ya tengo casi todo el code hecho.

La idea es hacer una especie de guitar hero con pygame  ;D

Cuando lo tenga os posteo el code y le hechais un ojo

Salu2
En línea

"Amarillo, pensó" Douglas Adams




[img]http:/
Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [PYTHON] Problema con (len)
« Respuesta #7 en: 3 Septiembre 2013, 17:51 pm »

Que bien espero ver el proyecto terminado.

saludos  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Python - Problema
Scripting
h0oke 1 2,746 Último mensaje 14 Noviembre 2009, 17:35 pm
por h0oke
problema con python y gtk
Scripting
Belial & Grimoire 1 2,244 Último mensaje 26 Diciembre 2010, 06:05 am
por leogtz
Problema con python y len
Scripting
eagle17 1 2,629 Último mensaje 5 Mayo 2011, 17:54 pm
por eagle17
Problema en Python
Scripting
WaAYa HaCK 6 5,898 Último mensaje 20 Mayo 2011, 03:39 am
por criskapunk
Problema con python
Scripting
flash-back 2 2,963 Último mensaje 1 Febrero 2012, 01:29 am
por criskapunk
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines