Python 为什么break语句在这里不起作用?

Python 为什么break语句在这里不起作用?,python,break,Python,Break,我只是想先说我是初学者,如果这是一个愚蠢的问题/明显的错误,我很抱歉 我正在做一个人机互动的游戏,break语句并没有打破最里面的循环。 问题出现在最后一个循环中,即使人类赢了,它下面的if条件也不会执行。它接着玩电脑的游戏,然后宣布电脑赢了 如果我需要更改或添加问题,请务必通知我 多谢各位 boardkeys={9:' ',8:' ',7:' ',6:' ',5:' ',4:' ',3:' ',2:' ',1:' '}

我只是想先说我是初学者,如果这是一个愚蠢的问题/明显的错误,我很抱歉

我正在做一个人机互动的游戏,break语句并没有打破最里面的循环。 问题出现在最后一个循环中,即使人类赢了,它下面的if条件也不会执行。它接着玩电脑的游戏,然后宣布电脑赢了

如果我需要更改或添加问题,请务必通知我

多谢各位


boardkeys={9:'     ',8:'     ',7:'     ',6:'     ',5:'     ',4:'     ',3:'     ',2:'     ',1:'     '}

def wincon():
    if boardkeys[1]==boardkeys[2]==boardkeys[3]!='     ':
        return True
    elif  boardkeys[4]==boardkeys[5]==boardkeys[6]!='     ':
        return True
    elif  boardkeys[7]==boardkeys[8]==boardkeys[9]!='     ':
        return True
    elif  boardkeys[1]==boardkeys[4]==boardkeys[7]!='     ':
        return True
    elif  boardkeys[2]==boardkeys[5]==boardkeys[8]!='     ':
        return True
    elif  boardkeys[3]==boardkeys[6]==boardkeys[9]!='     ':
        return True
    elif  boardkeys[1]==boardkeys[5]==boardkeys[9]!='     ':
        return True
    elif  boardkeys[3]==boardkeys[5]==boardkeys[7]!='     ':
        return True

hsym="  O  "
csym="  X  "

def ai():
    z=random.randrange(1,10)
    while boardkeys[z]!="     ":
        z=random.randrange(1,10)
    boardkeys[z]=csym

def move():
    no=int(input("enter your move human"))
    if boardkeys[no]=="     ":
        boardkeys[no]=hsym
    else:
        print("invalid move")
        move()
                              
for i in range(10):
    count=0
    move()
    count+=1
    printboard()
    if wincon==True:                     ????
        print("Game Over you won")       ????        
        break                            ????
    elif count==9:
        print("TIED")
        break
    else:
        print()
        print("computer's turn")
        ai()
        printboard()
        if wincon()==True:
            print("Game Over computer won")
            break
        elif count==9:
            print("TIED")
            break

    

如果wincon==True:它应该是
而不是
如果wincon()==True:
,那么你调用的是一个函数,而不是读取布尔值。

wincon==True
永远不会是真的<代码>wincon
是一个函数,不是布尔值。调用函数的结果,换句话说
wincon()
,可能是
True
(在这种情况下,没有必要明确地将其与
True
)进行比较。@jasonharper是的,谢谢,这是一个不幸的输入错误:(哦,天哪,我因为一个打字错误而头痛了一个多小时。非常感谢!!没问题,但我现在看到@jasonharper实际上比我快,所以你应该赞扬他:-)不过,既然他没有把它作为一个答案发布,如果你在我的答案上打勾,我很乐意承担这个因果报应。