Python字谜递归
我已经有一段时间遇到了这个代码的问题。代码应该做的是获取一个输入的单词,从输入的单词中删除字母,然后生成单词的子集,并将其保存到一个数组中进行打印。我的问题是,这个代码将保存从输入的单词可以创建的每个单词。Ex输入=点输出=顶部停止罐等 如果它只打印顶部、罐和止动块,那就好了。我已经做了一些调试打印,试图弄清楚程序实际上在做什么,但没有用。我将留下我已经注释掉的代码,因为这可能有助于了解我当时的心态/目标 我搜索过谷歌和这个网站,但它并没有我想要的答案。如果我是,很抱歉打扰你Python字谜递归,python,anagram,Python,Anagram,我已经有一段时间遇到了这个代码的问题。代码应该做的是获取一个输入的单词,从输入的单词中删除字母,然后生成单词的子集,并将其保存到一个数组中进行打印。我的问题是,这个代码将保存从输入的单词可以创建的每个单词。Ex输入=点输出=顶部停止罐等 如果它只打印顶部、罐和止动块,那就好了。我已经做了一些调试打印,试图弄清楚程序实际上在做什么,但没有用。我将留下我已经注释掉的代码,因为这可能有助于了解我当时的心态/目标 我搜索过谷歌和这个网站,但它并没有我想要的答案。如果我是,很抱歉打扰你 mylist =
mylist = open('sortedwords.txt')
txt = mylist.read()
mylist = txt.split()
stuff = input('Type a word here: ')
def removeletters (word, Analysis):
for char in range (len(Analysis)):
if Analysis [char] in word:
word = word.replace(Analysis[char],"",1)
return word
def anagramSubset(word, textList):
newWord = word
for char in range(len(textList)):
if textList[char] not in newWord:
return False
else:
newWord = newWord.replace(textList[char],"",1)
return True
def anagram(word, textList):
savedWords =[]
for checkword in textList:
if len(word) == len(checkword) and anagramSubset(word, checkword):
savedWords.append(checkword)
print(checkword)
anagram(stuff, mylist)
我知道你们不是来为我工作的,但我真的试过了,找不到一位导师。如果您能告诉我哪里出了问题以及如何修复,我将不胜感激。我查看了代码,想知道递归添加了什么?第一个过程完成所有计算工作,然后递归添加一些额外的堆栈帧并改变输出的打印方式。我是否错误地认为textList是从文件中的一行分割出来的有效单词列表 当我用一个特定的单词列表在本地运行这个程序时,它会得到相同的效果(在这个意义上,它会找到字母是子集的单词),并且抖动更少:
def anagram(word, textList):
savedWords = []
for checkword in textList:
if anagramSubset(word, checkword):
savedWords.append(checkword)
print(savedWords)
如果问题最终变成您得到的单词字母太少,您可以通过在添加之前检查单词是否与原始单词的长度相同来解决问题:
if len(original_word) == len(checkword):
savedWords.append(checkword)
sortedwords.txt
和textlist
在anagram
方法中的作用是什么?“从输入的单词中删除字母”是什么意思?关于文本列表,你是对的。导师不会给我答案。给我指出正确的方向。他们有很多人需要在短时间内帮助。我将查找.append()的文档,希望它能正常工作。我已经试着修复了4个小时。当不再定义savedwords时,我会遇到错误。我应该如何定义它?我不会查找附加文档。你用得对!我会在追加之前运行一个检查,确保您追加的单词长度不小于原始单词的长度。如果不再定义savedwords,则会出现错误。我该如何定义它?我的示例有一个拼写错误,已修复!是的,我知道了。我得到的单词仍然少于我的输入。即使使用if语句。