Returning True and False (Python)



我有一些行为不正常的函数:

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());

结果是Falseraw_input('Done!')确实出现了,但它毕竟返回False。

为什么会发生这种情况?

这看起来像是一段可疑的代码:

defense_ai();
if not defense_ai():
    offense_ai();

似乎你误解了,在一行中调用defense_ai()本身并没有对它返回的值做任何事情。为了使用返回值,您需要将它赋值给某些东西,如:

defenseResult = defense_ai();

在这种情况下,这可能是您想要使用的if语句。

if not defenseResult:
    offense_ai();

问题是,即使在if语句中调用defense_ai(),也会导致函数的代码被执行,所以你的代码运行两次,造成混乱。但是,您可以使用此方法,而不需要为返回结果赋值,并且只作为if语句的一部分调用defense_ai一次。

:

def main():
    if not defense_ai():
        offense_ai();

只要记住,如果你在变量名后面看到()表示函数正在执行(否则你有语法错误)

最新更新