我有一个单词列表,还有一个函数,可以根据单词的长度和单词内部的字母搜索单词
结尾处的for循环循环遍历可能的单词列表(由给定的长度生成),如果包含给定的字母,则应打印该单词;如果不包含给定的字母,则应从可能的单词列表中删除该单词
我如何在这里实现这一点:
wlist = ['Apple', 'Banana', 'Cherry', 'Donkey']
def wordSearch(wlist):
posWords = []
length = int(input('Enter length of word: '))
print("POSSIBLE WORD(S):")
for word in wlist:
stripWord = word.replace(' ', '')
if len(stripWord) == length:
print("%s (%s)" % (word, length))
posWords.append(word)
while True:
searchOptions = ['Add Known Letter', 'Exit']
searchIndex, item = chooseFromMenu(searchOptions)
if searchIndex == 0:
letter = input('Enter letter: ')
print("POSSIBLE WORD(S):")
for word in posWords:
if letter in word:
print(word)
else:
# remove word from list somehow
else:
break
具体而言,该区块:
letter = input('Enter letter: ')
print("POSSIBLE WORD(S):")
for word in posWords:
if letter in word:
print(word)
else:
# remove word from list somehow
我试过做del word
和posWords.pop(word)
,但似乎都不管用
我也试过.remove()
,但我记不清我用它做了什么
我将更详细地讨论我在这里遇到的问题
如果我输入字母“e”,它应该从可能的单词列表中删除“香蕉”,这样当我输入“n”时,我应该只得到“驴子”,而不是“驴子”和“香蕉”
如果这有道理的话
我刚刚试过posWords.remove(word)
,但它也没有这样做
如果我正确理解了你的问题,那么以下方法应该有效:
您可以反向迭代列表,这样删除元素不会影响迭代的其余部分
这就是你所说的问题解决不了你的问题的答案
请注意
pop()
的参数是列表索引,而不是列表元素您可以使用while循环,并且仅在未删除任何项的情况下增加迭代器
这是可行的,因为如果删除一个项目,下一个项目索引将减少1,因此我现在指向下一个项目
相关问题 更多 >
编程相关推荐