Я немного новичок в Python, и это вопрос домашней работы, поэтому я не буду благодарен за ответы, просто совет, чтобы помочь мне понять. Я пишу программу игры, которая играет две разные стратегии друг против друга - жадную стратегию и масштабную стратегию, которую я написал как функцию. У меня есть игровая функция, которая должна проходить в моих жадных и масштабируемых функциях, а также в игровой доске. Мне нужно, чтобы у вас была либо стратегия, либо первая. До сих пор я могу только довести это до того, где первая моя жадная стратегия.Python 3 Передача функции в другую функцию
def game(P1,P2,board):
P1 = 0
P2 = 0
for x in range(len(board)):
if x%2 == 0:
move = greedy(board)
P1 += board[move]
board.remove(board[move])
else:
move = zoomin(board)
P2 += board[move]
board.remove(board[move])
if P1 > P2:
return 1
elif P1 == P2:
return 0.5
else:
return 0
Эта стратегия всегда предполагает, что P1 является жадной функцией, но мне нужно иметь возможность играть в первую очередь. Я думал, что я мог бы пройти в функциях, поэтому мой призыв будет
game(greedy,zoomin,board)
, но я не знаю, как на самом деле реализовать его так, что он может распознать, кто играет первым.
Заранее благодарю вас за помощь!
EDIT:
Вот моя жадная и ZoomIn функция:
def greedy(board):
if board[0] > board[len(board)-1]:
#returns position of first item
return 0
elif board[len(board)-1] > board[0]:
#returns position of last item
return len(board)-1
else:
#if board[-1] == board[0]
return 0
def zoomin(board):
if len(board)%2 == 0:
evens = 0
odds = 0
for x in range(len(board)):
if x%2 ==0:
evens += board[x]
else:
odds += board[x]
if evens > odds:
return 0
else:
return len(board)-1
else:
#choose the larger value (greedy)
if board[0] < board[len(board)-1]:
return len(board)-1
else:
return 0
Пожалуйста, также разместите свои функции 'жадные 'и' zoomin'. – senshin
Спасибо, я сделал это. – AbigailB
* «но я не уверен, как его реализовать, чтобы он мог распознать, кто играет первым». * - Я не понимаю, почему это * это *, это проблема для вас, поскольку у вас уже есть метод для определения этого в вашем текущем коде (в том, что сначала играет P1). Почему вы чувствуете, что это изменяется только потому, что вы передаете функции в качестве аргументов? – Dolda2000