Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Error en una lista.

Estas en el tema de Error en una lista. en el foro de Python en Foros del Web. Tengo una lista donde cada elemento a su vez es una lista de varios valores, cadenas, numeros hexadecimales, etc. Al correrlo no protestaba hasta hace ...
  #1 (permalink)  
Antiguo 22/07/2013, 14:24
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Error en una lista.

Tengo una lista donde cada elemento a su vez es una lista de varios valores, cadenas, numeros hexadecimales, etc.

Al correrlo no protestaba hasta hace poco.
El error es el siguiente.
Cita:
Traceback (most recent call last):
File "gb_z80Asm.py", line 128, in <module>
["ld", "(ff00+c),a", 0xE2],
TypeError: string indices must be integers, not tuple
Dice que los indices de las cadenas deben ser enteros, no tuplas, pero pues la verdad para mi eso no tiene nada de sentido.
No estoy usando tuplas, ni indices....
Alguien podrian ayudarme.

Saludos
  #2 (permalink)  
Antiguo 22/07/2013, 16:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error en una lista.

Me gustaría ver mas código para agarrar contexto.

Pero si te dice ese error es porque probablemente estas haciendo algo así:

Código Python:
Ver original
  1. "" \
  2. ['ld', '(ff00+c),a', 226]

o así

Código Python:
Ver original
  1. a = ""
  2. a \
  3. ['ld', '(ff00+c),a', 226]

Checa las lineas anteriores a ese código.
  #3 (permalink)  
Antiguo 22/07/2013, 19:49
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Error en una lista.

Hola.
Gracias por tu respuesta.

Pongo un fragmento del codigo.
Código:
 ["jr", "dir", 0x18],

    '''All this are the different ways of writing the opcode parameters'''
    '''The next opcodes mean the same'''
    ["ld", "(ff00+c),a", 0xE2],
    ["ld", "[ff00+c],a", 0xE2],
    ["ld", "(c),a", 0xE2],
    ["ld", "[c],a", 0xE2],
    '''Finish the opcodes that means the same'''

    '''All this is the same opcode'''
    ["ld", "(hli),a", 0x22],
Si no mal recuerdo puedo usar 3 comillas simples para poner comentarios.

Saludos
  #4 (permalink)  
Antiguo 22/07/2013, 20:39
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Error en una lista.

Me parece que en ese caso las tres comillas te las interpreta como un string que querés agregar en la lista. Probá eliminando los "comentarios" o usando el numeral (#). Y, si no me equivoco, las tres comillas, simples o dobles, se suelen usar únicamente para documentar una función, y no en el resto del código:

Código Python:
Ver original
  1. def f(p):
  2.    """Acerca de la función"""
  3.    ...

  #5 (permalink)  
Antiguo 22/07/2013, 20:45
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Error en una lista.

Si, efectivamente erso soluciono el problema.
Aun me queda una pequeña duda. Por que sucedio esto ahora? Antes corria sin problemas. Alguna diferencia entre las versiones? Estoy usando 2.7

Saludos
  #6 (permalink)  
Antiguo 22/07/2013, 21:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error en una lista.

Es porque las 3 comillas son efectivamente un string (y no un comentario) y muchas veces es usando como un doc string, mas que nada por convención.

PD: Yo corri tu código y no me dio error. Sin saber cual era tu código anterior no te podemos decir porque te daba ese error. Tal vez en primer lugar no esta corriendo el código anterior (por eso es bueno usar control de versiones), con un diff de tus archivos podrías ver donde estuvo el error.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:07.