请帮我调试这个python代码

时间:2014-12-13 15:49:54

标签: python

这是一个程序,可以找到大于15个字母的字符。这里没有语法错误,但输出不符合预期。如果你能指出程序中的逻辑错误,我将非常感激。 我从http://thinkpython.com/code/words.txt下载了单词列表 PS-我是Python新手。如果有更好的方法,请告诉我....

def anagrams():
    fin1=open('words.txt')
    val=-1
    fin2=open('dic.txt')
    for i in range(100000):
        fin2.seek(0)              
        word1=fin1.readline()
        if len(word1)>18:               
            for j in range(100000):
                word2=fin2.readline()
                flag=1
                if len(word2)==len(word1)and word1!=word2:

                    for k in range(len(word1)-1):
                        if word1.find(word2[k])==-1:
                            flag=1
                            break
                        else:
                            flag=0
                if flag==0:
                    print word2,'is anagram of ',word1,'\n'

2 个答案:

答案 0 :(得分:0)

与您发布的代码无关,但您可以使用简单的Counter对象执行此操作,这将保留所有字符的计数。

>>> from collections import Counter
>>> def is_anagram(string1, string2):
...     return Counter(string1) == Counter(string2)
... 
>>> is_anagram("anagram anagram", "gramana anagram")
True

答案 1 :(得分:0)

我看到的一个问题是,如果两个单词具有相同的字母但数量不同,那么当它们不是时,你会声称它们是字谜。

一些改进:

  • 要查看两个单词是否为字谜,请对每个单词中的字母进行排序。比较(它们应该相同)(或使用其他地方建议的Counter
  • 您的代码将对每对单词进行两次测试:(word1,word2)和更高版本(word2,word1)。
相关问题