Python文档编写器错误

时间:2015-06-10 23:33:53

标签: python python-idle

我在python中创建了一个在IDLE中运行的简单文档编写器系统。这是源代码:

    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()

当我第一次在IDLE中运行程序并给出输入1表示我希望程序返回“No Saved Documents”时它返回以下错误:

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

如何修复此错误? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

从查看代码开始,您永远不会initialized变量n。

您需要先定义n。

global n
n = 1

我认为最好在function之外定义变量,然后在global内用function引用变量。

n = 1

def open():
    global n

归功于 @dshort : 您可以在函数中传递n以避免global变量声明。