У меня есть определение, которое повторяет некоторые функции. Тем не менее, аргумент или другими словами ввод этой функции должен быть необязательным. Для моей проблемы я пытаюсь сделать параметр глубины необязательным. Например, это минимаксный алгоритм, но иногда для экспериментов может не потребоваться сокращение глубины. Поэтому это должно быть необязательно.
Я попробовал метод * args. Тем не менее, это не сработало для меня. Кроме того, я сделал это «глубина = Нет», но я получил ошибку из-за значения «глубина - 1» в динамическом программировании.
def minimax(self, board_state, a, b, *args):
for x in args:
depth = x
turn, board = board_state
if super().terminal_state(board_state, depth):
return super().heuristic_value(board_state)
else:
if turn == -1:
value = 250
for x in super().successor_generator(board_state):
value = min(value, self.minimax(x, a, b, depth-1))
b = min(b, value)
if b <= a:
break
elif turn == 1:
value = -250
for x in super().successor_generator(board_state):
value = max(value, self.minimax(x, a, b, depth-1))
a = max(a, value)
if b <= a:
break
result = board_state, value
return value
object.minimax(state, a, b, depth=None)
value = min(value, self.minimax(x, a, b, depth-1))
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
Желаемая функция должна работать в обоих направлениях:
object.minimax(state, a, b)
object.minimax(state, a, b, depth=5)