a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(f'''КРЕСТИКИ-НОЛИКИ
       правила игры:
       игроки ходят по очереди, у первый ставит Х, второй О
       выигрывает тот игрок, кто составляет комбинацию из 3 символов, по вертикали, горизонали, или диагонали''')  # вывод правил
print('------------')  # вывод начального поля
for i in range(3):
    print('|', a[0 + i * 3], '|', a[1 + i * 3], '|', a[2 + i * 3], '|')
    print('-------------')
f = 0  # задаю начальные переменные f-флажок для выхода из массива, v-подсчет ходов для случая ничьи, p-для смены игроков
v = 0
p = 0
while f == 0:  # начиниается цикл самой игры
    print('введите номер клетки')
    b = int(input())
    if type(a[b - 1]) != int:  # проверяется, что находится в клетке: символ или цифра
        print('выберете другую клетку')
    else:
        c = 'X' if p == 0 else 'O'  # заполняет значение клетки
        g = 'ПЕРВОГО' if p == 0 else 'ВТОРОГО'  # запоминает ходившего игрока, чтобы вывести победу
        p = int(not p)
        a[b - 1] = c

        print('-------------')  # вывод изменного поля
        for i in range(3):
            print('|', a[0 + i * 3], '|', a[1 + i * 3], '|', a[2 + i * 3], '|')
            print('-------------')
        for j in range(3):
            if (a[j] != 0 and a[j] == a[j + 3] == a[j + 6]) or (
                    a[j * 3] != 0 and a[j * 3] == a[j * 3 + 1] == a[j * 3 + 2]) or (
                    a[0] != 0 and a[0] == a[4] == a[8]) or (a[2] != 0 and a[2] == a[4] == a[6]):
                f = 1  # если собирается комбинация, то игра кончается
                print('ПОБЕДА', g)
                break
        v += 1
        if v == 9:  # если поле полностью заполняется, то игра кончается
            f = 1
            print('НИЧЬЯ')
