【问题标题】:Python Variable is not DefinedPython 变量未定义
【发布时间】:2015-10-30 15:20:18
【问题描述】:

目前我的代码有一个主菜单,它要求用户从它打印出来的选项中进行选择,这是在“def”函数中。在我定义的变量的末尾,有一个输入提示,要求用户输入名为“选项”的输入。但是,当我运行代码时,我会得到一个语法。即:

代码:

def main_menu():
        print ("\nMain Menu        ")
        print ("\n1. Alphabetical Order (Highest Score only) = 'alpha'")
        option = input ("\nEnter your Option:  ")

main_menu()

option_class = input("\nWhich Class do you wish to preview: ")
one = "1.txt"

if option == "alpha".lower():
        if option_class == "1":
                with open (one, "r") as r:
                        for line in sorted(r):
                                print (line, end='')

运行代码时,我收到以下语法:

NameError: name 'option' is not defined

【问题讨论】:

  • 变量选项是在def main_menu()里面定义的,所以在函数之外,是不存在的..

标签: python text-files


【解决方案1】:

选项是本地定义的。您可以从函数返回输入的值并将其分配给这样的选项:

def main_menu():
    print ("\nMain Menu        ")
    print ("\n1. Alphabetical Order (Highest Score only) = 'alpha'")
    return input ("\nEnter your Option:  ")

option = main_menu()

【讨论】:

    【解决方案2】:

    您的变量 option 仅在您的函数 main_menu() 中本地定义,而不是全局定义。

    【讨论】:

    • 有没有我可以让它成为全球性的,但在需要时仍然可以召回?
    • 好的,一切都很好,我明白了。我只需要在每次使用该函数时取出局部变量并引用它。
    【解决方案3】:

    变量option 仅对函数main_menu 是局部的。您可以通过将option 设为全局来修复它:

    def main_menu():
        global option
        #...
        option = '...'
    

    见:Global vs local variables

    【讨论】:

    • 致反对者:这个解决方案有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2011-04-29
    • 2018-11-21
    • 2017-02-07
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多