Soy relativamente nuevo en programación y sufro de lo que parece ser un problema simple.
Aquí está el fragmento que está causando el problema (es parte de esta función más grande: http://pastebin.com/2apwWsEv)
for i in range(4,12): # remove nulls
if not row[i]:
row[i] = False
if row[i] and (i % 2): # odd rows (time)
print row[i]
time = row[i].split(":")
row[i] = int(time[0]) * 3600 + int(time[1]) * 60 + int(time[2])
Salida:
row[i] = int(time[0]) * 3600 + int(time[1]) * 60 + int(time[2])
UnboundLocalError: local variable "time" referenced before assignment
Parece que me asigno time
El valor de row[i].split(":")
, así que no entiendo donde está el error.
Intenté cambiar alrededor del segundo if
declaración (a un más convencional elif
, etc) pero eso no cambió el error.
(El campo de tiempo, de los datos csv, está en el formato de hh: mm: ss y estoy intentando convertirlo en segundos).
¿Alguien puede explicar cómo? time
¿Se está utilizando antes de ser asignado?
Respuestas
4 para la respuesta № 1En tu pastebin, la línea. row[i] = int(...
Se sangra utilizando cuatro espacios y cuatro pestañas. A pesar de que la línea parece tener la misma sangría que la anterior, en realidad está sangrada menos cuando se interpreta por Python.
No mezcle las pestañas y los espacios; use solo uno u otro. El estilo predominante es usar solo espacios.
1 para la respuesta № 2
- Por favor, no use el nombre de una biblioteca para el nombre de una variable. "Tiempo" es definitivamente una biblioteca.
- Si desea utilizar variables globales en una función (y no obtener el "error antes de la asignación" -error ;-)) escriba
global name_of_variable
en su código al comienzo de la función (ver Uso de variables globales en una función distinta a la que las creó.)