es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.