Я начинаю с python, и я создаю игру с двумя игроками tic tac toe в терминале. В общем, этот код занимает 139 строк (это ниже относится к той части кода, с которой у меня возникают проблемы), однако эта функция CheckWin занимает около 40 строк кода, что, я думаю, довольно много по сравнению с суммой строк в этом коде и учитывая, что он выполняет несколько базовую функцию. В принципе, в игре эта функция проверяет, есть ли строка, столбец или диагональ, имеет три X или три O, и если да, то назначает X победителю и O победителю. Во всяком случае, вот код.Упрощение Python If Statementments
X = "X"
O = "O"
empty = " "
S = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
def CheckWin(S):
global winner
winner = ""
if S[0] == S[1] == S[2] != empty:
if S[0] == X:
winner = X
if S[0] == O:
winner = O
if S[3] == S[4] == S[5] != empty:
if S[3] == X:
winner = X
if S[3] == O:
winner = O
if S[6] == S[7] == S[8] != empty:
if S[6] == X:
winner = X
if S[6] == O:
winner = O
if S[0] == S[3] == S[6] != empty:
if S[0] == X:
winner = X
if S[0] == O:
winner = O
if S[1] == S[4] == S[7] != empty:
if S[1] == X:
winner = X
if S[1] == O:
winner = O
if S[2] == S[5] == S[8] != empty:
if S[2] == X:
winner = X
if S[2] == O:
winner = O
if S[0] == S[4] == S[8] != empty:
if S[0] == X:
winner = X
if S[0] == O:
winner = O
if S[2] == S[4] == S[6] != empty:
if S[2] == X:
winner = X
if S[2] == O:
winner = O
В принципе, мне нужна помощь, чтобы сделать функцию намного проще. Однако я не хочу исключать переменные X, O и победителя, а также не хочу исключить метод индекса списка со списком S. Хотя есть ли способ упростить все эти утверждения If, сохраняя эти вещи? Если да, то как?
Для начала, вы можете избавиться от нагрузок, сокращая все из '', если S [п] == X: победитель = X/S, если [х] == O: победитель = O'' в просто '' winner = S [n] ''. Это сэкономит вам 24 строки кода. :) –
Рассмотрите использование циклов 'for' и' range'. – Alex
Этот вопрос лучше подходит для http://codereview.stackexchange.com/, где основное внимание уделяется улучшению существующего кода. – zehnpaard