来自Words.list的单词搜索者

问题描述 投票:0回答:1

我在早些时候帮助我的妈妈使用这个单词搜索应用程序,同时从一些python教程中休息一下,我意识到 - 这是一个有趣的事情的完美例子,供我学习/学习。

这就是我想出来的,虽然它有效,但我必须做一些额外的步骤才能弄明白。

似乎我的双字符没有注册为两个,其中一个被替换为不相关的字母。

我尝试了很多不同的东西 - 弹出,删除。用于单词而不是myletters中的字符(以减去差异)。我发现涉及这些东西的很多东西都是网格和方向,但我真的只对我的字符输入中的单词列表感兴趣。任何帮助表示赞赏。

旁注 - 我对编码非常陌生,所以如果这是合适的路线,那就是idk。这个x比我能找到的任何例子都简单x * 10。 (也许为什么它不按照我想要的方式工作?; p)

wordlist = open("PossibleWords.txt", "r").read().split()
myletters = input("Letters?: ").lower()
s = list()
sorted = str(myletters)

for word in wordlist:
    if len(word) == len(myletters) and all(letter in word for letter in sorted):
        s.append(word)
for length in s[:100]:
print(length)
python string list wordsearch
1个回答
0
投票

基于OP最近的评论,听起来我们正在进行单词搜索。为了不丢失双字母,我们将使用Counter并比较计数器:

from collections import Counter

def is_sub_count(counter_super, counter_sub):

    counter_sub.subtract(counter_super)

    return all(count <= 0 for count in counter_sub.values())

myLetters = input("Letters?: ").lower()
myCount = Counter(myLetters)
myLength = len(myLetters)

words = open("PossibleWords.txt").read().split()

found = list()

for word in words:
    if len(word) <= myLength and is_sub_count(myCount, Counter(word.lower())):
        found.append(word)

print(*found, sep='\n')

用法

> python3 test.py
Letters?: uassage
a
age
ague
as
ass
assuage
gas
gauss
guess
sag
saga
sage
sausage
sea
sue
us
usage
use
> 
© www.soinside.com 2019 - 2024. All rights reserved.