【问题标题】:How do I write this code using loops (It's a Tic Tac Toe code - determining the winner of a game by returning their character)如何使用循环编写此代码(这是井字游戏代码 - 通过返回角色来确定游戏的获胜者)
【发布时间】:2020-04-20 07:31:35
【问题描述】:

代码如下,它应该返回一个游戏符号的值,不包括“ ”空格。我正在尝试缩短它,但我是编码新手,所以很难。

你输入的棋盘格式如下:[["X", " ", "O"], ["O", "X", " "], ["O", " ", "X "]]

def winner(board):

    term00 = board[0][0]
    term01 = board[0][1]
    term02 = board[0][2]
    term10 = board[1][0]
    term11 = board[1][1]
    term12 = board[1][2]
    term20 = board[2][0]
    term21 = board[2][1]
    term22 = board[2][2]


    if term00 == term01 == term02:
        if term00 == " ":
            pass
        else:
            return term00
    elif term00 == term10 == term20:
        if term00 == " ":
            pass
        else:
            return term00
    elif term02 == term12 == term22:
        if term02 == " ":
            pass
        else:
            return term02
    elif term20 == term21 == term22:
        if term20 == " ":
            pass
        else:
            return term20
    elif term00 == term11 == term22:
        if term00 == " ":
            pass
        else:
            return term00
    elif term02 == term11 == term20:
        if term00 == " ":
            pass
        else:
            return term00

    return None

【问题讨论】:

  • 不知道我是如何被 lmao 否决的 - 但如果这是一个措辞不当的问题,我很抱歉。
  • 在您最喜欢的搜索引擎中尝试“python tic-tac-toe”。你会发现很多替代品。

标签: python loops tic-tac-toe


【解决方案1】:

一旦您了解 Python 的更多功能方面,您就会看到它通常如何导致更简洁的代码。例如:

def winner(board): 
    for player in ["X", "O"]:  
        # Rows
        res  = any(all(col == player for col in row) for row in board)  
        # Columns
        res |= any(all(row == player for row in col) for col in zip(*board)) 
        # Main diagonal
        res |= all(row[i] == player for i, row in enumerate(board))  
        # Secondary diagonal
        res |= all(row[~i] == player for i, row in enumerate(board)) 
        if res: 
            return player 
    return None 

【讨论】:

    猜你喜欢
    • 2019-09-13
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多