无法完成这段代码

时间:2014-06-11 08:37:29

标签: if-statement python-3.x

这是我正在努力做的一个井字游戏。这就是我现在所拥有的......

def checkio(game_result):
try:
    for i in game_result:
        if game_result[0][0] == "X" and game_result[0][1] == "X" and game_result[0][2] == "X":
            return ("X")
        elif game_result[1][0] == "X" and game_result[1][1] == "X" and game_result[1][2] == "X": 
            return ("X")
        elif game_result[2][0] == "X" and game_result[2][1] == "X" and game_result[2][2] == "X":
            return ("X")
        elif game_result[0][0] == "X" and game_result[1][0] == "X" and game_result[2][0] == "X":
            return ("X")
        elif game_result[0][1] == "X" and game_result[1][1] == "X" and game_result[2][1] == "X":
            return ("X")
        elif game_result[0][2] == "X" and game_result[1][2] == "X" and game_result[2][2] == "X":
            return ("X")
        elif game_result[0][0] == "X" and game_result[1][1] == "X" and game_result[2][2] == "X":
            return ("X")
        elif game_result[0][2] == "X" and game_result[1][1] == "X" and game_result[2][0] == "X":
            return ("X")

    for i in game_result:
        if game_result[0][0] == "O" and game_result[0][1] == "O" and game_result[0][2] == "O":
            return ("O")
        elif game_result[1][0] == "O" and game_result[1][1] == "O" and game_result[1][2] == "O": 
            return ("O")
        elif game_result[2][0] == "O" and game_result[2][1] == "O" and game_result[2][2] == "O":
            return ("O")
        elif game_result[0][0] == "O" and game_result[1][0] == "O" and game_result[2][0] == "O":
            return ("O")
        elif game_result[0][1] == "O" and game_result[1][1] == "O" and game_result[2][1] == "O":
            return ("O")
        elif game_result[0][2] == "O" and game_result[1][2] == "O" and game_result[2][2] == "O":
            return ("O")
        elif game_result[0][0] == "O" and game_result[1][1] == "O" and game_result[2][2] == "O":
            return ("O")
        elif game_result[0][2] == "O" and game_result[1][1] == "O" and game_result[2][0] == "O":
            return ("O")

except:
    return ("D")   

我的问题是“D”,如果有平局则需要返回,而是返回“null”。 我知道我的try-except语句是错误的,除了只处理错误(是吗?)。 当第一个区块没有任何匹配时,我似乎无法找到返回“D”的正确方法。

有什么想法吗?

此致

2 个答案:

答案 0 :(得分:0)

Try-except仅适用于异常(错误)。你的问题是,因为没有抛出异常,所以从不执行except。你需要做的是在循环结束时返回“D”,函数结束。如果在函数结束前返回一个值,该函数将立即停止。只需移除try / except部件并将返回(“d”)粘在末端。

以下是一个例子:

if i == 6:
   return true
return false

在这种情况下return false仅在i!= 6时执行。

答案 1 :(得分:0)

听起来没有错误,但game_result中的任何内容都不符合任何if条件。尝试在所有else块的末尾添加elif语句,以便返回' D'