Суть такая,пишу функцию для игры крестики-нолики,которая принимает в виде аргумента доску(представлена списком из 9 значений) и возвращает победителя(winner),либо TIE(ничья),либо None.
Вот код:
def winner(board):
"""Определяет победителя в игре."""
WAYS_TO_WIN = ((0,1,2),
(3,4,5),
(6,7,8),
(0,3,6),
(1,4,7),
(2,5,8),
(0,4,8),
(2,4,6))
for row in WAYS_TO_WIN:
if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
winner = board[row[0]]
return winner
if EMPTY not in board:
return TIE
return None
board =["X","X","O"," ","O","X","O"," "," "]
print(winner(board))
>>>
O
Ее вид:
def winner(board):
"""Определяет победителя в игре."""
WAYS_TO_WIN = ((0,1,2),
(3,4,5),
(6,7,8),
(0,3,6),
(1,4,7),
(2,5,8),
(0,4,8),
(2,4,6))
for row in WAYS_TO_WIN:
if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
winner = board[row[0]]
return winner
if EMPTY not in board:
return TIE
return None
>>>
None
1)При вызове return код,находящийся после него исполняется или нет?Или функция отдает значение и всё после уже не исполняется?
2)Прерывается ли цикл после вызова return?
3)И самый интересный: почему во втором случае выдает значение None на проверку?Если по идее после проверки первого условия она должна была вадать winner и всё.Как такое выходит?А None должна выдать только если нет победителя и нет ничьи.Как влияет этот Tab?
Cпасибо всем за помощь. :)