变量类重新分配未执行

2024-10-04 05:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个冒险游戏,我也检查了玩家是哪一类的,但是游戏没有重新分配角色,所以玩家在被设置为person后仍然是none type

character = None
def start():
characterchosen = False
printslow("Welcome adventurer. Chose wisely.")
sleep(2)
charactername = input("What is your name? ")
print("Characters:")
print("1. Person")
while characterchosen == False:
    character = input("Please chose a character: ")
    characterchosen = True
    if character == "1":
        character = person(charactername)
    else:
        characterchosen = False
        print("Invalid Response. Please try again.")
print("Great! Now that you have chosen your class, your mission may begin.")
gameone()

def gameone():
if type(character) == "<class 'person'>":
    print("game here")

start()

当我使用print(type(character))时,我得到了<class 'NoneType'>
更新:
我试着将check设置为NoneType,但仍然一无所获,即使函数正在被调用


Tags: falseinputyourifdeftype玩家start
1条回答
网友
1楼 · 发布于 2024-10-04 05:32:30

当您在start函数中引用character变量时,它将赋值给局部作用域(函数作用域)中的一个变量。要让Python知道您指的是在全局范围中定义的character变量,您必须显式地声明:

def start():
    global character
    characterchosen = False
    printslow("Welcome adventurer. Chose wisely.")
    ...

您还将type的结果与该类型的字符串表示形式进行比较。您要做的是直接将其与类型进行比较:

if type(character) == person:
    print("game here")

或者最好使用isinstance内置函数:

if isinstance(character, person):
    print("game here")

相关问题 更多 >