首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启用可选的定义输入?

如何启用可选的定义输入?
EN

Stack Overflow用户
提问于 2019-05-20 01:38:19
回答 1查看 53关注 0票数 1

我有一个迭代某些函数的定义。但是,参数或者换句话说,这个函数的输入应该是可选的。对于我的问题,我试图使‘深度’参数可选。例如,这是一种极小极大算法,但有时对于实验,您可能不希望应用深度剪枝。因此,它应该是可选的。

我试过*args方法。但是,这对我没有用。此外,我做了‘深度=没有’,但我得到了一个错误,因为‘深度- 1’的值,在动态规划。

代码语言:javascript
复制
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)

self.minimax(x,a,b,深度-1) TypeError:-:'NoneType‘和'int’的不受支持的操作数类型

所需的功能应同时适用于以下两种方式:

代码语言:javascript
复制
object.minimax(state, a, b) 
object.minimax(state, a, b, depth=5)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 04:10:46

你的电话

代码语言:javascript
复制
object.minimax(state, a, b) 
object.minimax(state, a, b, depth=5)

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

代码语言:javascript
复制
def minimax(self, board_state, a, b, depth=None)

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

代码语言:javascript
复制
value = min(value, self.minimax(x, a, b, depth-1))

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

代码语言:javascript
复制
value = min(value, self.minimax(x, a, b, depth-1 if depth is not None else None))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56213425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档