python - 为什么这个 python 代码不打印字谜?
问题描述
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)
(这假定每个单词都在文本文件中的单独行上。)
推荐阅读
- python-3.x - Python 3.6 - 将“YYYY-MM-DD”字符串作为日期时间数据类型分配给变量?
- python - 尝试在 PyCharm 2018.1.4 上安装 win32com
- opengl - 创建多个帧缓冲区
- javascript - npx 是否查找全局安装的软件包?
- css - 需要一些带有边框图像渐变的 CSS 技巧
- python - 在硒中如何访问警告窗口以获取未找到的信息?
- docker - 将 Docker 命令添加到我的 Docker 容器中
- javascript - Javascript将onclick事件分配给未分配正确值的多个图像
- java - Java 启动和停止线程
- python - 使用 SQL 匹配参数从两个列表中检索项目