Я работаю над проблемой практики, когда мы должны вводить список в аргумент функции, который будет представлять плату tic tac toe и возвращать исходный результат. То есть X выигрывает, выигрывает O, Draw или None (пустая строка).Преобразование оператора if в цикл
У меня есть решение, но мне было интересно, есть ли способ, которым я мог бы манипулировать моим алгоритмом в цикле, так как было рекомендовано использовать цикл для сравнения каждого элемента главной диагонали со всеми элементами пересекающихся строк и столбцов, а затем проверить две диагонали. Я новичок в python, поэтому мое решение может быть немного дольше, чем нужно. Как можно реализовать цикл, чтобы проверить результат платы tic tac toe?
def gameState (List):
xcounter=0
ocounter=0
if List[0][0]==List[0][1] and List[0][0]==List[0][2]:
return List[0][0]
elif List[0][0]==List[1][0] and List[0][0]==List[2][0]:
return List[0][0]
elif List[0][0]==List[1][1] and List[0][0]==List[2][2]:
return List[0][0]
elif List[1][1]==List[1][2] and List[1][1]==List[1][0] :
return List[1][1]
elif List[1][1]==List[0][1] and List[1][1]==List[2][1]:
return List[1][1]
elif List[1][1]==List[0][0] and List[1][1]==List[2][2]:
return List[1][1]
elif List[2][2]==List[2][0] and List[2][2]==List[2][1]:
return List[2][2]
elif List[2][2]==List[1][2] and List[2][2]==List[0][2]:
return List[2][2]
elif List[2][2]==List[1][1] and List[2][2]==List[0][0]:
return List[2][2]
for listt in List:
for elm in listt:
if elm=="X" or elm=="x":
xcounter+=1
elif elm=="O" or elm=="o":
ocounter+=1
if xcounter==5 or ocounter==5:
return "D"
else:
return ''
Вы пробовали использовать петлю? Какие у вас проблемы? Кроме того, 'List' - это неправильное имя переменной, так как это тоже встроенный Python, и в какой-то момент использование встроенного подобного решения вызовет проблемы. – enderland
Является ли этот «рабочий» код? Если да, спросите его на [Обзор кода] (http://codereview.stackexchange.com/) –
Похоже, у вас есть цикл, уже реализованный при использовании вложенных операторов 'for'. –