gpt4 book ai didi

python - 如何启用定义输入作为可选?

转载 作者:行者123 更新时间:2023-12-01 07:51:05 25 4
gpt4 key购买 nike

我有一个迭代一些函数的定义。但是,该函数的参数或换句话说输入应该是可选的。对于我的问题,我试图将“深度”参数设置为可选。例如,这是一个极小极大算法,但有时对于实验,您可能不想应用深度剪枝。因此,它应该是可选的。

我尝试过*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)

最佳答案

您的来电

object.minimax(state, a, b) 
object.minimax(state, a, b, depth=5)

是正确的,您应该将您的方法定义为

def minimax(self, board_state, a, b, depth=None)

但是在你这样做之后,你不应该做的是

value = min(value, self.minimax(x, a, b, depth-1))

因为您知道在某些情况下深度将为,因此在这种情况下深度-1没有任何意义。您必须自己显式处理异常的 None 值。一种方法是

value = min(value, self.minimax(x, a, b, depth-1 if depth is not None else None))

关于python - 如何启用定义输入作为可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56213425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com