变量类重新分配不起作用

时间:2018-01-16 02:59:24

标签: python

我正在制作冒险游戏,我也检查了玩家是哪个级别,但游戏不会重新分配角色,所以玩家在被设置为人之后仍然没有类型。

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(类型(字符))时,我得到<class 'NoneType'>
更新:
我尝试将检查设置为NoneType,但即使正在调用函数,我仍然没有得到任何结果。

1 个答案:

答案 0 :(得分:0)

当您在character函数中引用start变量时,它将分配给本地范围(函数范围)中的变量。要让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")