2017-12-18 5 views
0

Ich half meiner Mutter mit dieser Wortsuch-App früher, während ich eine Pause von einigen Python-Tutorials machte und mir wurde klar, was für ein perfektes Beispiel für etwas Interessantes für mich zum Arbeiten/Lernen.Word Searcher von Words.list

Hier ist, was ich entwickelt habe, und während es funktioniert, muss ich einige zusätzliche Schritte machen, um die Wörter herauszufinden.

Es scheint, dass meine doppelten Zeichen nicht als zwei registriert werden, und einer von ihnen wird durch einen nicht relevanten Buchstaben ersetzt.

Ich habe viele verschiedene Dinge ausprobiert - knallen, entfernen. für Zeichen in Worten und nicht in meinen Buchstaben (um den Unterschied zu subtrahieren). Eine Menge von dem, was ich mit diesem Zeug gefunden habe, waren Gitter und Richtungsangaben, aber ich bin wirklich nur an einer gespaltenen Liste von Wörtern aus meinem Charakter interessiert. Jede Hilfe wird geschätzt.

Nebenbemerkung - Ich bin sehr neu in der Codierung, also idk, wenn dies der richtige Weg war. Dieses x war x * 10 einfacher als jedes Beispiel, das ich finden konnte. (Vielleicht, warum es funktioniert nicht so, wie ich es will,? 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) 
+1

Es ist gut zu sehen, dass Ihr etwas zu tun, deine Mutter zu helfen, aber könnten Sie vielleicht ad einige Beispieleingabe plus erwartete Ausgabe? Es ist schwer zu erkennen, wofür Sie hier Hilfe benötigen und warum Ihr Code nicht wie erwartet funktioniert. – RoadRunner

Antwort

0

Basierend auf den jüngsten Kommentar des OP, es klingt wie wir nehmen über Wortsuche. Um nicht die doppelte Buchstaben zu verlieren, werden wir Counter verwenden und vergleichen Zähler:

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') 

USAGE

> python3 test.py 
Letters?: uassage 
a 
age 
ague 
as 
ass 
assuage 
gas 
gauss 
guess 
sag 
saga 
sage 
sausage 
sea 
sue 
us 
usage 
use 
> 
+0

Hey, danke, dass du meinen Code behalten und so ziemlich alles hinzugefügt hast, was ich gebraucht habe, aber mein neues Problem ist, warum ich das Wort "Anagramme" überhaupt vermieden habe. Ich versuche nicht nur Wörter zu finden, die die gleiche Länge wie meine Eingabe haben, sondern auch alle Wörter, die mit irgendeiner meiner Eingaben gemacht werden können. Wie wenn len [word]

+0

@ user9114527, ich habe mein Beispiel entsprechend überarbeitet. Anstatt einfach Zähler mit '==' zu vergleichen, schrieb ich eine Funktion, um zu testen, ob eine Teilmenge der anderen war. – cdlane

+0

Du bist großartig, das hat mich verrückt gemacht. Vielen Dank für deine Hilfe. –

Verwandte Themen