如何为变量分配函数?

时间:2014-11-27 21:28:53

标签: python

我正在创建一个文本游戏,所以这就是我被困在的地方:

def characters():

    def assassin():
        dmg = 150
        health = 500

print "Do you want to become an assassin ?"
choice = raw_input("> ")

if choice in ["Yes", "yes", "YES"]:
    print "So you said %s about becoming an assassin" % choice
    choice = assassin() # Error
else:
    print "Templar detected!"

所以我想将选择变量设置为assassin()函数,然后我想将assassin()函数的属性复制到选择变量,但我得到的只是错误,表示"刺客没有定义。"。

那么,我该怎么做?

2 个答案:

答案 0 :(得分:2)

你有两个问题:

if choice == "Yes" or "yes" or "YES":没有按照您的想法行事。

在Python中,x or y始终会根据TrueFalse的值返回xy。 Python解释器解释了该行不同于英语的内容。

它与此if (choice == "Yes") or ("yes") or ("YES")的含义相同。 由于非空字符串具有布尔值True,因此与if (choice == "Yes") or True or True相同。第一部分 - (choice == "Yes") or TrueTrue作为or的参数,因此它(因此整行)始终为True

第二个问题是你误解了函数是如何工作的。 首先,这些功能都没有做任何事情。函数是一种为某些代码命名的方法,如果你多次调用它,会使你的程序变短。

其次,函数定义中的变量(以及在其他函数内定义的函数)在函数外部不可访问。这就是变量assassin不在characters函数定义之外的原因。

答案 1 :(得分:0)

刺客功能除了为变量 dmg health 分配一些值外,不会做任何其他事情。