I am creating a simple document writer system in python that runs in the IDLE. This is the source code:
    def openn():
    global n
    if n==1:
        print("[1] - " + title)
        print("[2] - Exit")
    option=raw_input()
    if int(option)==1:
        print(text)
        print("type 'done' when done")
        do=raw_input()
        if do=='done':
            run()
        if do!='done':
            run()
    if n==0:
        print("No Saved Documents")
def new():
    print("Enter a title:")
    global title
    title=raw_input()
    print(str(title) + ":")
    global text
    text=raw_input()
    print("[1] - Save")
    print("[2] - Trash")
    global n
    global save
    save=input()
    if save==1:
        n=1
        run()
    if save==2:
        n=0
        run()
def run():
    print("[1] - Open a saved document")
    print("[2] - Create a new saved document")
    global save
    save=1
    global choice
    choice = input()
    if choice==1:
        openn()
    if choice==2:
        new()
run()
When I run the program in IDLE for the first time and give the input 1 suggesting I want the program to return "No Saved Documents" it returns the following error:
File "/Users/tylerrutherford/Documents/Python Programs/Operating Systen Project/document_writer.py", line 5, in openn
    if n==1:
NameError: global name 'n' is not defined
How can I fix this error? Thanks in advance!
                        
From looking at your code, you never
initializedthe variable n in the first place.You need to define n first.
I think it would be a better practice to define the variable outside the
function, and then reference it withglobalinside thefunction.Credit to @dshort: You can pass n in the function to avoid
globalvariables declaration.