我正在尝试创建一种从一点到另一点的删节方法。在
我创建了一个具有当前边缘的NFA
EDGES = [
(0, 'h', 1),
(1,'a',2),
(2,'z', 3),
(3,'a',4),
(4, 'r', 5),
(5, 'd', 6)
)]
我要做的事情的例子
nrec("h-rd", nfa, 1)
应返回accept
nrec
是为NFA处理字符串并检查它是接受还是拒绝的方法。在
我需要添加一个方法,把删节纳入帐户。我不太确定如何从一个州跳到另一个州。 这是NFA课程的内容:
def __init__(self,start=None, finals=None, edges=None):
"""Read in an automaton from python shell"""
self.start = start
self.edges = edges
self.finals = finals
self.abrs = {}
我曾想过使用abr,但在试图定义我自己的abr时,我经常会犯错误,比如
nfa = NFA(
start = 0,
finals = [6],
abrs = {0:4, 2:5},
edges=[
(0,'h', 1),
(1,'a', 2),
(2,'z', 3),
(3,'a', 4),
(4,'r', 5),
(5,'d', 6)
])
我收到错误“TypeError:init()得到意外的关键字参数'abrs'” 为什么我会收到那个错误?在
我想我会做这样的修改
elif char is tape[index]:
#get the next char in tape tape[index+1] so
#for loop this.char with abrs states and then continue from that point.
明智的选择还是更好的解决方案?在
此错误是由于
__init__
没有接受定义的abrs
关键字参数。在def __init__(self,start=None, finals=None, edges=None):
您需要
abrs=None
(或其他值)使其成为关键字参数,或abrs
使其成为必需参数。在相关问题 更多 >
编程相关推荐