【问题标题】:Python function to find out tic tac toe winner找出井字游戏获胜者的Python函数
【发布时间】:2018-04-19 19:06:21
【问题描述】:

找出井字游戏获胜者的代码
我编写了以下函数来查找 tictactoe 获胜者
输入变量以列表形式提供,并将以下面提供的形式提供

示例:
tictactoe(["OO.","XOX","XOX"])

编写的函数如下:
我确信这不是最优雅的编写方式,并且正在寻找更多建议

import numpy as np
def (game_result):
    a=[]
    for i in range(len(game_result)):
        for i in game_result[i]:
            print (i)
            a.append(i)
    print (a)
    myarray=np.asarray(a)
    c=myarray.reshape(3,3)
    print (c)
    c1=(c[0,0] == c[0,1] == c[0,2] != ('.'))
    c2=(c[1,0] == c[1,1] == c[1,2]!= ('.'))
    c3=(c[2,0] == c[2,1] == c[2,2] != ('.'))
    c4=(c[0,0] == c[1,0] == c[2,0]!= ('.'))
    c5=(c[0,1] == c[1,1] == c[2,1] != ('.'))
    c6=(c[0,2] == c[1,2] == c[2,2]!= ('.'))
    c7=(c[1,1] == c[2,2] == c[0,0]!= ('.')) 
    c8=(c[0,2] == c[1,1] == c[2,0]!= ('.')) 
    if (c1):
        return c[0,0]
    elif (c2) :    
        return c[1,0]
    elif (c3) :    
        return c[2,0]
    elif (c4) :    
        return c[0,0]
    elif (c5) :    
        return c[0,1]
    elif (c6) :    
        return c[0,2]
    elif (c7) :    
        return c[1,1]
    elif (c8) :    
        return c[1,1]
    else :
        return 'D'

【问题讨论】:

  • 为什么不使用二进制数组?
  • 输入方式固定,以列表字符串的形式提供

标签: python arrays numpy


【解决方案1】:

如何创建(静态或动态)玩家需要创建的lines 列表。

即。像

lines = [
    [[0,0], [0,1], [0,2]],
    ...
    [[0,2], [1,1], [2,0]],
]

然后使用循环来比较值。如果您找到匹配项,只需从该行中选择一个角色即可获得获胜角色。

比较只需要一个if 语句,读取获胜者需要一行代码。

【讨论】:

  • 你能写出循环并说明吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多