【发布时间】:2019-08-17 00:17:06
【问题描述】:
两天前我刚开始用 python 编程,我正在尝试创建一个简单的刽子手游戏,其中计算机使用包含大量英语单词(约 69.9k)的 .txt 文件来猜测单词,我是基本上是问用户一些问题并删除不必要的单词。 然而,即使它们符合条件,python 也会删除这些单词,我什至尝试在 listname.pop() 函数上使用 print,但缺少的单词不会出现在那里。
我已经尝试过检查我是否正确地将单词添加到单词列表中,这似乎是正确的,因为我直接从列表中打印出来,主文件除了打印内容和输入内容之外没有太多其他内容应该没有问题。
这是基本代码:
from ReadFile import ReadFile
w_list = ReadFile()
n_list = []
def RemoveExtraByRange(range_w):
for x, words in enumerate(w_list):
if len(words) != int(range_w):
w_list.pop(x)
else:
n_list.append(w_list[x])
def RemoveExtraByFLetter(f_letter):
w_list.clear()
for x, words in enumerate(n_list):
if not words.startswith(f_letter):
n_list.pop(x)
else:
w_list.append(n_list[x])
def RemoveExtraByLLetter(l_letter):
n_list.clear()
for x, words in enumerate(w_list):
if not words.endswith(l_letter):
w_list.pop(x)
else:
n_list.append(words)
w_list.clear()
编辑:将列表转换为集合(这无关紧要,因为每个单词都是唯一的)。还将 n 列表更改为仅包含不必要的单词,在每个函数的开头我清除 n_list。我也使用 w_list -= n_list 而不是 pop 。这为我修好了。
【问题讨论】:
-
欢迎莫辛。你提到的txt文件只包含单词而不包含其他内容?能否请您发布一个小样本?
-
您在多个地方正在修改一个列表,这可能会导致问题发生。
-
是的,只是文字。每行一个字。这是列表:www-personal.umich.edu/~jlawler/wordlist
-
@ScottHunter 那么更简单的出路是什么?只需将我要删除的单词的索引放在后面并删除它们?
标签: python-3.x