繁体   English   中英

NameError:未定义名称“ Class”(Python)

[英]NameError: name 'Class' is not defined (Python)

因此,我试图为基于文本的游戏制作“保存并加载文件” ...保存有效,如果再次保存,则覆盖保存。 但是加载会带来NameError。

def save():
    my_file = open("save.txt", "w")
    my_file.write(Class + "\n")
    my_file.write(level + "\n") 
    my_file.write(str(hp) + "\n")
    my_file.write(str(atk) + "\n")
    my_file.write(str(Def) + "\n")
    my_file.write(str(spd)+ "\n")
    my_file.write(str(ene)+ "\n")
    my_file.write(str(race1)+ "\n")
    my_file.close()

def load():
    infile = open("save.txt")

    lines = infile.readlines()

    line_number = 0

    while line_number < len(lines):

        Class = lines[line_number]
        level = lines[line_number + 1]
        hp = lines[line_number + 2]
        atk = lines[line_number + 3]
        Def = lines[line_number + 4]
        spd = lines[line_number + 5]
        ene = lines[line_number + 6]
        race1 = lines[line_number + 7]

        line_number += 8
        print(Class, level, hp, atk, Def, spd, ene, race1)


    infile.close()
    identify()

以上是保存和加载定义。

这是类输入定义:

def class_level():
        global Class
        global level
        Class = input("Please input your class: ")
        print()
        level = input("Please input your level: ")
        print()
        race()    

这是indentify定义:

def identify():
    global hp
    global atk
    global Def
    global spd
    global ene
    if re.match(r"warrior", Class, re.I):  <---- This is the line the error is on, Class not defined
    print()

有人可以告诉我我做错了什么吗? 它将加载文件并显示它。.但是然后说def标识中未定义Class。 谢谢。

在python中,全局工作方式不仅是将变量定义为全局变量。 它将变量从全局名称空间添加到本地名称空间(如果存在)。 如果不存在,它将创建一个全局实例并将其添加到本地名称空间中。 您可能在全局名称空间中将Class作为变量,但是在您的identify函数本地名称空间中, Class不存在。 您将需要添加Class到的本地命名空间identify 您可以通过添加行global Class 现在,本地名称空间具有对变量Class的引用

def identify():
    global hp
    global atk
    global Def
    global spd
    global ene
    # You need to mention global Class as well
    global Class
    if re.match(r"warrior", Class, re.I): 
    print()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM