如何对角检查

时间:2015-11-27 03:01:25

标签: python

我有一个二维列表,我想对角检查它,但它只检查一条对角线而忽略其余的

它的6x6网格:

class Program
{
    static void Main(string[] args)
    {
        var wrapper = new Wrapper<Client>();
        string result;
        wrapper.Invoke(c => c.Convert, 5, out result);
    }
}

为什么不通过所有对角线?

1 个答案:

答案 0 :(得分:0)

这部分代码,

self.TTT[i][i] for i in (0, 1, 2, 3, 4, 5)

按顺序生成以下各项:

self.TTT[0][0]
self.TTT[1][1]
self.TTT[2][2]
self.TTT[3][3]
self.TTT[4][4]
self.TTT[5][5]

没有其他坐标。难怪只检查了一条对角线!

然后,您需要的是至少拥有一对嵌套对for循环。也许是这样的:

for x in range(-6,7):
    total = 0

    for y in range(7):
        if 0 <= x+y <= 6:
            total += self.TTT[y][x+y]

    if abs(total) == 3:
        self.label['text']=('0 You WIN!')
        self.end()
    elif abs(total) == 105:
        self.label['text']=('0 You WIN!')
        self.end()
    elif abs(total) == 300:
        self.label['text']=('0 You WIN!')
        self.end()

运行此代码以查看原因:

for x in range(-6,7):
    for y in range(7):
        if 0 <= x+y <= 6:
            print(x+y,y)
    print()

如果你想检查 anti -diagonals,那么我会让你弄清楚。这是一个很好的锻炼。 :)