Python Scrabble Herausforderung finden gültige Wörter

Ich versuche, ein Python-Projekt zu vervollständigen, das grundsätzlich einen Eingang nimmt und durch eine Liste gültiger Scrabble-Wörter geht und bestimmt, welche dieser Wörter bei der Eingabe gemacht werden können.

Der erste Teil war etwas einfach, aber der Teil, der eigentlich zählt, gibt mir Probleme.

Hier ist was ich bisher habe

import argparse import sys """ Step 1: Get input from the user """ parser = argparse.ArgumentParser() parser.add_argument("rack", type=str, help = "letters on the rack (no spaces)") args = parser.parse_args() rack = args.rack rack = rack.upper() rack = sorted(rack) """ Step 2: Open the sowpods.txt file, read the contents and turn it into a list """ def file_len(fname): with open(fname) as f: for i, l in enumerate(f): pass return i + 1 scores = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, "x": 8, "z": 10} file = "sowpods.txt" length = file_len(file) file = open("sowpods.txt", 'r') file_list = list(file) for i in range(length): value = file_list[i] value = value.rstrip('\n') file_list[i] = value """ Step 3: Find valid words """ #for x in range(len(file_list)): for x in range(82980,83000): tmp = rack test = file_list[x] pos = [] if len(test) > len(tmp): break else: for y in range(len(test)): letter = test[y] if letter in tmp[y:(len(tmp))]: pos.append(letter) print(pos) 

Ich bin mir sicher, dass es sehr chaotisch ist, da ich nicht in einer Weile programmiert habe, aber ich möchte nur den Teil herausfinden, wo das Programm auf Gültigkeit prüft. Im Moment geht die Schleife durch einen Bereich, wo ich weiß, dass es Worte gibt, die aus dem Rack gemacht werden können, aber ich stecke fest. Ich habe diesen Beitrag auf irgendeine Hilfe gesehen, aber um ehrlich zu sein, bin ich nicht wirklich sicher, was los ist.

Ich kann hier ein wenig über meinen Kopf gehen, aber das würde ich noch gerne herausfinden.

One Solution collect form web for “Python Scrabble Herausforderung finden gültige Wörter”

Der einfachste Weg, um zu überprüfen, ob Wörter gültig sind, ist, eine collections.Counter . Sie nehmen das Vorkommen jedes Buchstabens in der Zahnstange, und die Vorkommen jedes Buchstabens für jedes scrabble Wort nehmen dann den Unterschied. Wenn es nach dem Entfernen der Briefe aus dem Rack nichts mehr von dem Scrabble-Wort übrigbleibt, dann kannst du das Scrabble-Wort machen.

Beispielcode (verwenden Sie das Wörterbuch anstelle eines Systems ein):

 from collections import Counter with open('/usr/share/dict/words') as fin: lines = (word.strip().upper() for word in fin) words = [(word, Counter(word)) for word in lines] rack = Counter('AEDTUMS') for scrabble_word, letter_count in words: # Using length here to limit output for example purposes if len(scrabble_word) >= 6 and not (letter_count - rack): print(scrabble_word) 

Werde dir geben:

 MEDUSA AMUSED SAUTED 
  • Was ist "pkg-resources == 0.0.0" in der Ausgabe von Pip-Freeze-Befehl
  • Pass dict mit Nicht-String-Schlüsselwörter, um in kwargs zu funktionieren
  • Holen Sie den Ordnernamen der Datei in Python
  • Scraping: Wie kann ich die Datenerfassung neu formatieren und csv ausgeben
  • Progressbar (ttk.Progressbar) mit python in tkinter nicht zeigen
  • PyQt Class funktioniert nicht für den zweiten Gebrauch
  • Ausgabe von sys.stdout im interaktiven Modus
  • Syntaxfehler bei Druck mit Python 3 [Duplikat]
  • Xlwt book.save TypeError: muss str sein, nicht Bytes
  • Python: Erstellen mehrerer Listen
  • Python3 'int' Objekt ist nicht lesbar
  • Python ist die beste Programmiersprache der Welt.