jdf / Processing.py-Bugs

A home for all bugs and feature requests about Python Mode for the Processing Development Environment.
41 stars 8 forks source link

I'm getting a NameError I don't think was supposed to happen #256

Open Hinomupi opened 5 years ago

Hinomupi commented 5 years ago

I'm new to programing. I wrote a program and I'm getting the error "NameError: global name 'taman' is not defined" even though I have already defined taman. Here's the code:

def setup():
    global taman
    global linhas
    global colunas
    global start
    try:
        file = open("settings.txt","r")
    except FileNotFoundError:
        file = open("settings.txt","w")
        file.write("Número de colunas:\n3\nNúmero de linhas:\n3\nRaio:\n30\nEspaço (~distância entre as figuras):\n10\nVelocidade (em rad/s):\n0.01\nFase do x (fração do pi):\n0\nFase do y (fração do pi):\n0\nEspessura do traçado:\n3")
        file.close()
        file = open("settings.txt","r")
    taman = file.read().split('\n')
    file.close()
    file.close()
    for x in [1,3,5,7,15]:
        taman[x] = int(taman[x])
        print(taman[x])
    taman[9] = float(taman[9])
    for x in [11,13]:
        print(taman[x])
        taman[x] = PI*float(taman[x])
    start = True
    size((taman[7]+2*taman[5])*(taman[1]+1),(taman[7]+2*taman[5])*(taman[3]+1))
    colunas = [bolinha((x + (1/2))*(taman[7] + 2*taman[5]) + taman[5],taman[5]+(taman[7])/2,x*taman[9],taman[5],taman[11]) for x in range(1,taman[1]+1)]
    linhas = [bolinha(taman[5]+(taman[7])/2,taman[5]+(x + (1/2))*(taman[7] + 2*taman[5]),x*taman[9],taman[5],taman[13]) for x in range(1,taman[3]+1)]
    background(0)

While it does print the elements of taman when I convert the strings to integers or floats, it raises the error in this line:

size((taman[7]+2*taman[5])*(taman[1]+1),(taman[7]+2*taman[5])*(taman[3]+1))

Did I do something wrong or is this a bug?

villares commented 5 years ago

Hi @Hinomupi ! I noticed your comments in Portuguese. You can send me an email abav (at) lugaralgum (dot) com. To make the code formatting work here you can use tripple-backticks (```) on a line before and after the code.

jdf commented 5 years ago

This question probably belongs in the Processing forums, and not here.

The code sample you've provided is not complete, and would not cause the error you describe.

villares commented 5 years ago

Things you could also watch out:

Hinomupi commented 5 years ago

I just edited the post to include where the error occours (what line Processing highlights)

villares commented 5 years ago

Look, you can't use variables inside size()! Try removing or commenting out size(). And I'm using IOError instead of FileNotFoundError

Now bolinhas() is undefined... you should close this :)

Hinomupi commented 5 years ago

bolinha is a class I've defined before, I've only pasted here what I'm defining to be setup().

I wanted to make a program that sets the size of the window according what's set in settings.txt. If I can't use variables inside size() is there any way for me to do this?

edit: The reference in py.processing says "As of Processing 3.0, to use variables as the parameters to size() function, place the size() function within the settings() function (instead of setup()). There is more information about this on the settings() reference page.", however I couldn't find the reference page for settings in py.processing. So I went to the reference in processing.org and now I've managed to fix my problem. Thanks for the help, villares!