Python 如何将函数分配给变量?
我正在创建一个文本游戏,所以这里是我遇到的问题:Python 如何将函数分配给变量?,python,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 becom
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!"
所以我想将choice变量设置为刺客()函数,然后我想将刺客()函数的属性复制到choice变量,但我得到的只是一个错误,即“刺客未定义”
那么,我该怎么做呢 刺客函数除了为变量dmg和health分配一些值外,什么都不做。您有两个问题:
如果选择==“是”或“是”或“是”:
不会做你认为它会做的事
在Python中,x或y
总是基于x
和y
的值返回True
或False
。
Python intepreter对这一行的解释不同于它在英语中的解释
如果(选项==“是”)或(“是”)或(“是”),则与此相同。
由于非空字符串具有布尔值True
,这与if(选项==“Yes”)或True或True
相同。该-(choice==“Yes”)或True的第一部分将True
作为或的参数,因此它(以及整行)将始终为True
第二个问题是您误解了函数是如何工作的。
首先,这两个函数都不起任何作用。函数是为某些代码命名的一种方式,如果您多次调用它,它会使程序变短
其次,函数定义中的变量(以及在其他函数中定义的函数)在函数外部是不可访问的。这就是变量刺客
不在字符
函数定义之外的原因。请参阅;您的选择
测试无法按编写的方式运行。您的字符
函数没有任何作用。你的意思是让所有剩余的代码也包含在字符中吗?这应该是OOP吗?也许看看你的if声明可以引起一些注意if choice.upper()==“YES”
将处理所有案例问题。@Marwan请重新阅读有关函数及其用途的章节。您似乎误解了它,很难猜测您使用这些函数究竟想要实现什么。您正在解决的任务实际上不需要局部函数,而且您的函数也不做任何事情。我们真的很想帮忙,但似乎我们甚至找不到沟通的共同点。我想做的是将函数中的变量设置为一个新变量,我该怎么做?@Marwan你不能这样做,你不应该这样做:)@BartoszKP我现在明白了hahaSo,你发现了什么?@MagnusN我发现函数只有在被调用时才起作用,因为它是一块可以在你需要时调用的代码。。所以我最大的错误是试图把一个函数当作一个类来对待,但现在我得到了它