我正在创建一个文本游戏,所以这就是我被困在的地方:
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()函数的属性复制到选择变量,但我得到的只是错误,表示"刺客没有定义。"。
那么,我该怎么做?
答案 0 :(得分:2)
你有两个问题:
if choice == "Yes" or "yes" or "YES":
没有按照您的想法行事。
在Python中,x or y
始终会根据True
和False
的值返回x
或y
。
Python解释器解释了该行不同于英语的内容。
它与此if (choice == "Yes") or ("yes") or ("YES")
的含义相同。
由于非空字符串具有布尔值True
,因此与if (choice == "Yes") or True or True
相同。第一部分 - (choice == "Yes") or True
将True
作为or
的参数,因此它(因此整行)始终为True
。
第二个问题是你误解了函数是如何工作的。 首先,这些功能都没有做任何事情。函数是一种为某些代码命名的方法,如果你多次调用它,会使你的程序变短。
其次,函数定义中的变量(以及在其他函数内定义的函数)在函数外部不可访问。这就是变量assassin
不在characters
函数定义之外的原因。
答案 1 :(得分:0)
刺客功能除了为变量 dmg 和 health 分配一些值外,不会做任何其他事情。