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 
  • Kratzen von Google Finance (BeautifulSoup)
  • Graphing in Python 3.x
  • "Typ" von Pythonobjekten ändern
  • Wiederholen Sie mit dem PyQt QWebKit wiederholt auf den Grund einer Seite
  • Anmeldung auf der Website mit Anfragen
  • Wie kommuniziert man mit einem Schach-Motor in Python?
  • Python-String-Formatierung mit Prozentzeichen
  • Aufteilen einer csv-Datei in Panda-Dataframe durch mehrere Spalten
  • Python 3.2 überspringen eine Zeile in csv.DictReader
  • Argparse Option von Optionen
  • Python 3 Drosseln auf CP-1252 / ANSI lesen
  • Python ist die beste Programmiersprache der Welt.