我正在研究python中的这个小小块,当我运行它时,它永远不会超过打印'c'行并且卡在while循环上。我究竟做错了什么?链接到文本文件: http://downloads.sourceforge.net/wordlist/12dicts-5.0.zip
enter code here
import sys
import random
inp = open('5desk.txt', 'r')
lis = inp.readlines()
inp.close()
print lis
def proc():
a = raw_input('What are the scrambled letters? ')
copy = list(a)
print a
print copy
if a in lis:
print a, ' is a word'
elif a not in lis:
print 'c'
while copy not in lis:
random.shuffle(copy)
print 'd'
print "A word that ", a, " might equal is:\n", copy
if __name__ == "__main__":
proc()
答案 0 :(得分:1)
也许你的意思是:
while copy in lis:
无论哪种方式,都无法保证重新排列这些字母最终会创建一个或者不在列表中的单词。特别是如果输入只包含一个字母,则shuffle根本不起作用。以随机顺序迭代所有排列可能更好,如果到达列表的末尾,则会出现错误。
答案 1 :(得分:1)
readline()和readlines()保持输入的每一行的尾随换行符; raw_input()删除换行符。因此,永远不会有匹配。
当从外部源读取输入时,通常使用strip()函数来清理事物是一个好主意 - 默认情况下,它会从输入的每一端删除空格。
尝试:
lis = [line.strip() for line in inp.readlines()]