python - Python 在决策树中使用一个参数调用不同的类变量
问题描述
所以我试图用类为tictactoe制作一个决策树,我不能让函数每次都调用不同的类变量。
class Node(object):
def __init__(self, player, state):
self.possible = poss_moves(state)
self.player = player
self.local_state = state
self.score = 0
self.one = None
self.two = None
self.three = None
self.four = None
self.five = None
self.six = None
self.seven = None
self.eight = None
如果我尝试用这个函数调用新的子节点,它就不起作用。如果我用 node.one、node.two 等输入代码。它可以工作,但我觉得必须有一种方法可以使这个功能工作。我尝试将它作为字符串传递,只需将 node.one 作为参数,将 node.one 分配给变量
def digger(self, node, child):
temp = copy.deepcopy(node.local_state)
temp[node.possible[0][0]][node.possible[0][1]] = node.player
if len(poss_moves(temp)) == 0 or wincon.win_check(temp) == node.player:
child = End_State(temp)
node.score += child.score
else:
if node.player == 2:
child = Node(1, temp)
self.deeper(child)
node.score += child.score
else:
child = Node(2, temp)
self.deeper(child)
node.score += child.score
node.possible.pop(0)
def deeper(self, node):
while len(node.possible) > 0:
self.digger(node, node.one)
if len(node.possible) == 0:
break
self.digger(node, node.two)
if len(node.possible) == 0:
break
self.digger(node, node.three)
if len(node.possible) == 0:
break
self.digger(node, node.four)
if len(node.possible) == 0:
break
self.digger(node, node.five)
if len(node.possible) == 0:
break
self.digger(node, node.six)
if len(node.possible) == 0:
break
self.digger(node, node.seven)
if len(node.possible) == 0:
break
self.digger(node, node.eight)
解决方案
推荐阅读
- r - R软件错误信息的JM(joint model)包
- colors - 当我给它一个恒定值时,为什么 alpha 值会发生变化?
- android - 识别具有相同电子邮件地址的两个用户
- javascript - 云函数无法读取未定义的属性
- django - 在 django 中创建标签并根据它们进行过滤
- javascript - 在 JavaScript 中使用 execcommand 函数时可以删除第一个字符吗?
- mysql - AWS:使用 IAM 作为身份验证方法从 Lambda Java 脚本连接到 Aurora
- azure - Azure 应用服务 - VNet 集成 vs 专用终结点 vs 混合连接
- r - 在 r 中创建自定义图例
- javascript - TensorflowJS 库在本地主机上工作,但一旦我部署到 Netlify 就不再工作?