Skip to main content
 首页 » 编程设计

python之为什么这个 python 代码不打印字谜

2025年05月04日20tintown

def is_anagram(s1,s2):  
    L1 = list(s1) 
    L2 = list(s2) 
 
    return sorted(L1) == sorted(L2) 
 
 
 
def read_words(): 
    fin = open('words.txt') 
 
 
    for line in fin: 
        line = fin.readline() 
        word = line.strip() 
 
        for line1 in fin: 
            line1 = fin.readline() 
            word1 = line1.strip() 
            if is_anagram(word,word1): 
                print(word, word1) 
 read_words() 

当我运行它时它没有显示任何东西(甚至没有错误)。我确信 words.txt 包含一些字谜。我不明白为什么这不起作用。请有人帮忙。

words.txt 看起来像这样:

aa 
aah 
aahed 
aahing 
aahs 
aal 
aalii 
aaliis 
aals 
aardvark 
aardvarks 
aardwolf 
aardwolves 
aas 
aasvogel 
aasvogels 
aba 
abaca 
abacas 
abaci 
aback 
abacus 
abacuses 
abaft 
abaka 
abakas 
abalone 
abalones 
abamp 
abampere 
abamperes 
abamps 
abandon 
abandoned 
abandoning 
abandonment 
abandonments 
abandons 
abas 
abase 
abased 
abasedly 
abasement 
abasements 
abaser 
abasers 
abases 
abash 
abashed 
abashes 
abashing 
abasing 
abatable 
abate 
abated 
abatement 
abatements 
abater 

请您参考如下方法:

fin 不是列表。它只产生每行一次。您的两个循环不会独立地迭代它。

如果您想多次遍历它,请先将行读入列表。一个列表可以迭代多次。

def read_words(): 
    with open('words.txt') as fin: 
        lines = [line.strip() for line in fin] 
 
    for line in lines: 
        for line1 in lines: 
            if line!=line1 and is_anagram(line, line1): 
                print(line,line1) 

(假设每个单词在您的文本文件中单独一行。)