【问题标题】:Printing all anagrams of a given string from a text file从文本文件中打印给定字符串的所有字谜
【发布时间】:2019-04-15 18:02:48
【问题描述】:

我正在编写一个程序,它接受输入字符串并在列表中从文本文件中打印出字符串的所有字谜。

到目前为止,我有以下内容;但什么都没有返回,我不太明白为什么。

def anagrams( s1, s2 ):
    s1_list = list(s1.lower())
    s1_list.sort()
    s2_list = list(s2.lower())
    s2_list.sort()

    if s1.lower() == s2.lower():
        return(False)
    elif s1_list == s2_list:
        return(True)
    else:
        return(False) 

def find_all_anagrams( string ):

    anagrams_list = []

    with open("english_words.txt", "r") as fileObject:

        line = fileObject.readline()

        if anagrams(string, line):
            anagrams_list.append(line)
    return anagrams_list

【问题讨论】:

  • 你是怎么调用你的find_all_anagrams函数的?
  • @slider 这样print(find_all_anagrams('python'))
  • find_all_anagrams 目前没有返回任何内容。尝试在末尾添加return anagrams_list
  • @boonwj 啊,是的。忘记添加了,但是添加后列表中似乎没有任何内容,我不太明白为什么。列表为空,没有找到字谜
  • 所以现在这是一个不同的问题:P 您的代码似乎只读取english_words.txt 中的第一行。您是否仅将输入字符串与文件中的 1 个单词进行比较?

标签: python anagram


【解决方案1】:

您需要遍历english_words.txt 中的所有单词(我假设每行一个)。在调用 anagrams() 之前,您还需要从每个单词中删除任何换行符。

def find_all_anagrams( string ):
    anagrams_list = []
    with open("english_words.txt", "r") as fileObject:
        for line in fileObject: # check all lines
            word = line.strip() # strip newline characters
            if anagrams(string, word):
                anagrams_list.append(word)
    return anagrams_list # finally return results

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2020-03-29
    • 2020-11-08
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多