【发布时间】:2017-08-28 22:53:05
【问题描述】:
我正在用 Python 为秘鲁语开发一个拼写检查器。
当真正的单词是“tsonti”时,我的单词“tponti”是错误的。我的想法是复习这个词并尝试形成不同的可能选项。
例如:
当你在“p”位置并检查它前面的字母是“t”时,有一个错误,所以选项是:
- 删除“p”
- 用人声改变“p”
- 在“p”和“o”之间改变位置。
我试图使用堆栈来保存位置、要遵循的路径类型(-1 删除,0 随人声改变,1 改变位置)和形成的单词。因为我到达了单词的最后一个位置,所以我可以返回到最后保存的位置并遵循另一条路径。 如果你需要真实的代码:
输入以在https://drive.google.com/file/d/0B9TJF4xuMuwdVXdwcFFnT0J1aTg/view?usp=sharing 中获取 pgrafo.py,它位于 gdrive 中。 输入https://drive.google.com/file/d/0B9TJF4xuMuwddmtvSEp1MENGNEk/view?usp=sharing获取grafo2.xlsx,它在gdrive中。
enter code here
word = "tponti"
pos = 0
formed = ""
typoe = -1
stackPos = []
stackFormed = []
stackType = []
while(pos < len(word)):
formed = formed + word[pos]
if detecError(formed[-1],word[pos]):
if type == -1:
stackPos.append(pos)
stackFormed.append(formed)
stackType(0)
if type == 0:
#changeLetters
stackPos.append(pos)
stackFormed.append(formed)
stackType(1)
if type == 1:
stackPos.append(pos)
stackFormed.append(formed)
stackType(-1) #to star in -1 in case there's a mistake later
if pos == len(word) and len(stackPos) > 0:
savePosibleFormed(formed)
pos= stackPos.pop()
formed= stackFormed.pop()
type = stackType.pop()
pos -= 1
pos += 1
【问题讨论】:
-
它给了我一个无限循环。
-
请显示调试跟踪 -- 至少是战略性放置的 print 语句的输出。请参阅这个可爱的 debug 博客寻求帮助。
-
如果您想尝试,我将链接添加到我的代码中
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。