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 
  • 'Str' unterstützt die Pufferschnittstelle Python3 von Python2 nicht
  • Warum ist dieses Listenverständnis schneller als der äquivalente Generatorausdruck?
  • Warum werden Zahlen in einem String "x0n", wenn ein Backslash ihnen vorangeht?
  • Von stat () st_mtime auf datetime?
  • Python prüft, ob Spalte in der Liste vorhanden ist
  • Gibt es eine Möglichkeit, Python 3.5 Definitionen mit einem Time-to-Live-Dekorator zu cache?
  • Python - Loop durch Dateien von bestimmten Erweiterungen
  • Datei zum Lesen / Schreiben öffnen, bei Bedarf erstellen
  • Benutzerdefinierte dict, die während der Iteration löschen kann
  • Verwenden Sie die GUI, um das Verzeichnis in Python 3 zu öffnen
  • Warum gibt die Python-Zuweisung keinen Wert zurück?
  • Python ist die beste Programmiersprache der Welt.