May-26-2020, 12:31 AM
So I coded a Program in python whith PyGameZero and the mu editor
Now Im getting this error:
UnboundLocalError: local variable 'node_list' referenced before assignment
Now I now what global and local variables are but the variable node_list is a global one in my program so I don't understand why this happens.
for better context here the whole code (its supposed to animate a few nodes that get connected when they are in a particular range to each other and move the nodes by a few pixel every frame):
thanks in advance <3
def animate_nodes(): for current_node in node_list: x = current_node[0] + current_node[2] y = current_node[1] + current_node[3] if current_node[2] > 0 and current_node[2] < 10: vx = current_node[2] + random.randrange(-1, 1) if current_node[3] > 0 and current_node[3] < 10: vx = current_node[3] + random.randrange(-1, 1) new_node_list.append = [x, y, vx, vy] node_list = new_node_list.copy()This is one part of my programm.
Now Im getting this error:
UnboundLocalError: local variable 'node_list' referenced before assignment
Now I now what global and local variables are but the variable node_list is a global one in my program so I don't understand why this happens.
for better context here the whole code (its supposed to animate a few nodes that get connected when they are in a particular range to each other and move the nodes by a few pixel every frame):
import random import math WIDTH = 1280 HEIGHT = 720 # defines the number of nodes visible on the screen (+ 1) node_count = 30 # defines the range in which the nodes will connect connection_range = 150 # stores the x and y coordinates of the nodes node_list = [] # stores the x and y values of the vectors connection_list = [] others_list = [] # creates the nodes for i in range(0, node_count): # generate random coordinates x = random.randrange(1, 1280) y = random.randrange(1, 720) vx = random.randrange(0, 10) vy = random.randrange(0, 10) # adds these x and y values to the nodelist node_list.append([x, y]) def calculate_connections(): others_list = node_list.copy() # after we have created the nodes we go over the nodes one by one for current_point in others_list: others_list.remove(current_point) # then we look at all the resting nodes (except for the current one) and we compare the distances # this is a so called nested loop (verschachtelte Schleife) for other_point in others_list: # coords_temp = [] x_temp = other_point[0] y_temp = other_point[1] x = current_point[0] y = current_point[1] # calculate the vector between the current and the other nodes vector_x = abs((x - x_temp)) vector_y = abs((y - y_temp)) vector_length = math.sqrt(vector_x ** 2 + vector_y ** 2) print(vector_length) # compare set connection range to vector range if vector_length <= connection_range: connection_temp = [] connection_temp.append([x, y]) connection_temp.append([x_temp, y_temp]) connection_list.append(connection_temp) def animate_nodes(): for current_node in node_list: x = current_node[0] + current_node[2] y = current_node[1] + current_node[3] if current_node[2] > 0 and current_node[2] < 10: vx = current_node[2] + random.randrange(-1, 1) if current_node[3] > 0 and current_node[3] < 10: vx = current_node[3] + random.randrange(-1, 1) new_node_list.append = [x, y, vx, vy] node_list = new_node_list.copy() # draws the Frame def draw(): calculate_connections() # draw the background screen.fill((255, 255, 255)) # draws the nodes for i in range(node_count): screen.draw.filled_circle(node_list[i-1], 3, (125, 125, 125)) # draw the connections for line in connection_list: print(line) screen.draw.line(line[0], line[1], (0, 0, 0)) animate_nodes()I hope you can help me :)
thanks in advance <3