我有一些行为不规范的职能:
pos = [' '] * 9;
def defense_ai():
#if statement
if pos.count('X') > 1:
#various other if statements
if statement:
#statement
a = 5;
#...
else:
return False;
pos[a] = 'O';
raw_input('Done!')
return True;
def offense_ai():
#statement that doesn't matter
pass;
def main():
defense_ai();
if not defense_ai():
offense_ai();
main();我的问题是,raw_input('Done')正在执行,但是offense_ai()运行。这种情况不应该发生,因为defense_ai应该在调用raw_input之后立即返回True。为了查看defense_ai()返回的内容,我在if not defense_ai()语句之前添加了一个raw_input()。
raw_input(defense_ai());其结果是False。raw_input('Done!')确实出现了,但它还是返回False。
为什么会发生这种情况?
发布于 2015-08-20 16:16:51
这看起来像是一个可疑的代码部分:
defense_ai();
if not defense_ai():
offense_ai();似乎您误解了,在一行上调用defense_ai()本身不会对它返回的值做任何事情。为了使用返回值,您需要将它赋值给某物,如下所示:
defenseResult = defense_ai();在这种情况下,这很可能是您希望用于if语句的。
if not defenseResult:
offense_ai();问题是,即使在一个defense_ai()语句中调用if,也会导致函数的代码被执行,所以您的代码运行了两次并造成混乱。但是,您可以使用它来避免分配返回结果,并且只调用defense_ai一次,作为if语句的一部分。
如下所示:
def main():
if not defense_ai():
offense_ai();请记住,如果您在变量名的末尾看到(),这意味着正在执行一个函数(否则就会出现语法错误)。
https://stackoverflow.com/questions/32123000
复制相似问题