我正在尝试创建一个格结构,检查用户输入的单词是否可以在格中形成。邻接列表遍历并检查其周围的所有节点,以查看下一个用户输入的字母是否匹配。在这个特殊的示例中,列表包含4个元素,作为节点类存储,围绕着第二个输入字母“O”,但是在尝试pop后,第一个字母刚刚求值,整个列表被清除。我是不是误解了pop函数的用法?你知道吗
https://i.stack.imgur.com/J5Sry.png:在pop之前
https://i.stack.imgur.com/G4CrP.png:在pop之后
class Node:
def __init__(self, content):
self.content = content
def getInput():
data = str(input("Enter word to search for "))
dataSplit = []
#split input into letters
for letter in data.upper():
dataSplit.append(letter)
return dataSplit
def createLattice():
Node1 = Node("M")
Node2 = Node("H")
Node3 = Node("E")
Node4 = Node("N")
Node5 = Node("O")
Node6 = Node("P")
Node7 = Node("A")
Node8 = Node("C")
Node9 = Node("M")
Node10 = Node("O")
Node11 = Node("R")
Node12 = Node("E")
Node13 = Node("T")
Node14 = Node("D")
Node15 = Node("E")
Node16 = Node("T")
Node17 = Node("I")
Node18 = Node("C")
lattice = {Node1: [Node2, Node6, Node7],
Node2: [Node1, Node3, Node5, Node8],
Node3: [Node2, Node4, Node9],
Node4: [Node3, Node5, Node10],
Node5: [Node2, Node4, Node6, Node11],
Node6: [Node5, Node1, Node12],
Node7: [Node1, Node8, Node12, Node13],
Node8: [Node2, Node7, Node9, Node12, Node14],
Node9: [Node3, Node8, Node10, Node15],
Node10: [Node4, Node9, Node11, Node16],
Node11: [Node5, Node8, Node10, Node12, Node17],
Node12: [Node6, Node7, Node11, Node18],
Node13: [Node7, Node14, Node18],
Node14: [Node8, Node13, Node15, Node17],
Node15: [Node9, Node14, Node16],
Node16: [Node10, Node15, Node17],
Node17: [Node11, Node14, Node16, Node18],
Node18: [Node12, Node13, Node17]}
return lattice
def searchLattice(dataSplit, lattice):
storeLetter = []
adjacencyList = []
firstLetter = dataSplit[0]
for letter in dataSplit:
for elem in adjacencyList:
for node in elem:
if node.content == letter:
storeLetter.append(letter)
adjacencyList.clear()
break
elif node.content != letter:
adjacencyList.pop(0)
print(adjacencyList)
for key in lattice:
if letter == key.content:
storeLetter.append(letter)
adjacencyList.append(lattice[key])
def main():
dataSplit = getInput()
(lattice) = createLattice()
searchLattice(dataSplit, lattice)
main()
看起来
pop
的行为不像您期望的那样,因为您adjacenyList
是一个列表列表。当你弹出它看起来像这样[[<Node>, <Node>, <Node]]
。弹出第0个元素只会删除所有内容。你知道吗我不完全确定这是否会产生您想要的最终输出,但是如果您将行
adjacencyList.pop(0)
替换为adjacencyList[0].pop(0)
,您将防止该错误。你知道吗考虑一下您是否真的希望
adjacencyList
是一个列表列表,还是仅仅是一个节点列表,可能也是一种谨慎的做法。希望这有帮助!你知道吗相关问题 更多 >
编程相关推荐