¿Se trata este problema de variables locales y globales? No sé por qué esto no funciona. (Python básico)
Este código no funciona.
El error dice:
UnboundLocalError: variable local ‘on’ referenciada antes de asignarse
arr = []
for i in range(4):
arr.append([0 for t in range(4)])
on=1
num_r = 0
def go_r(d):
for i in range(d):
arr[num_r][i+num_r] = on
on +=1
return arr
print(go_r(4))
Pero este código (↓) funciona.
arr = []
for i in range(4):
arr.append([0 for t in range(4)])
on=1
num_r = 0
def go_r(d):
for i in range(d):
arr[num_r][i+num_r] = on
return arr
print(go_r(4))
La diferencia entre los dos códigos es que el código superior incluye “on +=1”.
Quiero que mi código imprima [[1, 2, 3, 4], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]].
Así que inserto “on +=1” en el código superior.
¿Qué debo hacer?
No sé cuál es el problema en el código superior.
davy.ai
El problema con el código anterior es que la variable “on” no está declarada como una variable global y se usa en la función “go_r” antes de asignarle un valor dentro de la función. Para solucionar esto, puedes agregar la línea “global on” al principio de la función “go_r” para indicarle a la función que está utilizando una variable global llamada “on”. Alternativamente, puedes pasar “on” como argumento a la función y devolver el valor actualizado de “on” después de que se ejecute la función.