/ / Python-Funktion: Gegeben Scrabble Tile, was ist der Wert? - Python, Funktion

Python-Funktion: Gegeben Scrabble Tile, was ist der Wert? - Python, Funktion

Ich versuche, eine einfache Funktion zu schreiben, dass man bei einem Buchstaben den Wert des Scrabble-Tiles zurückgibt. Hier ist, was ich habe:

def letterPoint(letter):


letter = letter.upper()

lettersWorthOne =(["A","E","I","N","O","R","S","T"])
lettersWorthTwo = (["D","G"])
lettersWorthThree = (["B","C","M","P"])
lettersWorthFour = (["F","H","U","V","W","Y"])
lettersWorthFive = (["K"])
lettersWorthEight = (["J","X"])
lettersWorthTen = (["Q","Z"])

if letterWorthOne:
print "1"

if letterWorthTwo:
print "2"

if letterWorthThree:
print "3"

if letterWorthFour:
print "4"

if letterWorthFive:
print "5"

if letterWorthEight:
print "8"

if letterWorthTen:
print "10"

Antworten:

2 für die Antwort № 1

Benutze ein Wörterbuch. Eher, als lettersWorthTwo = (["D","G"]), etc.

Sie hätten eine Datenstruktur wie folgt:

letterValues = {"D":2, "G":2, ... }

Dann ist eine Suche nach Wert einfach: letterValues["D"] # returns 2 for the value of the tile


0 für die Antwort № 2

Um aufzuzeigen, warum Ihr Code nicht funktioniert, weil Sie Ihren Brief nicht mit der Liste vergleichen.

#Change from this:
if letterWorthOne:
print "1"
#to this, should work
if letter in letterWorthOne:
print "1"
.....

Verwende einen Python Wörterbuch ist der Weg zu gehen.

Weiter zur Lösung hat schon jemand gepostet. Sie können auch ein Inhaltswörterbuch wie folgt erstellen:

Letters = {
"a": { "quantity" : 9, "value": 1},
"b": { "quantity" : 2, "value": 3},
"c": { "quantity" : 2, "value": 3},
"d": { "quantity" : 4, "value": 2},
"e": { "quantity" : 12, "value": 1},
"f": { "quantity" : 2, "value": 4},
"g": { "quantity" : 3, "value": 2},
"h": { "quantity" : 2, "value": 4},
"i": { "quantity" : 9, "value": 1},
"j": { "quantity" : 1, "value": 8},
"k": { "quantity" : 1, "value": 5},
"l": { "quantity" : 4, "value": 1},
"m": { "quantity" : 2, "value": 3},
"n": { "quantity" : 6, "value": 1},
"o": { "quantity" : 8, "value": 1},
"p": { "quantity" : 2, "value": 3},
"q": { "quantity" : 1, "value": 10},
"r": { "quantity" : 6, "value": 1},
"s": { "quantity" : 4, "value": 1},
"t": { "quantity" : 6, "value": 1},
"u": { "quantity" : 4, "value": 1},
"v": { "quantity" : 2, "value": 4},
"w": { "quantity" : 2, "value": 4},
"x": { "quantity" : 1, "value": 8},
"y": { "quantity" : 2, "value": 4},
"z": { "quantity" : 1, "value": 10},
"*": { "quantity" : 2, "value": 0}

}

# to get to it"s "content", like this:
Letters["a"]
{"quantity": 9, "value": 1}

# you can then get its "value" or "quantity" in a tile bag
Letters["a"]["value"]
1


# if you MUST use a function, do this with above dictionary, although it"s quite pointless
def letter_point(letter):
return Letters[letter.upper()]["value"]

0 für die Antwort № 3

Im letterPoint(), letterWorthOne und lettersWorthOne sind getrennte Variablen. Jeder lettersWorth* Variable enthält eine Liste, und Sie scheinen zu wollen letterWorthOne um einen booleschen Wert zu enthalten (True oder False) Angabe, ob oder nicht letter ist in dem lettersWorthOne Liste. Verwenden Sie operator, um zu ermitteln, ob ein Wert in einer Sammlung enthalten ist in.

def letterPoint(letter):
letter = letter.upper()

lettersWorthOne =(["A","E","I","N","O","R","S","T"])
lettersWorthTwo = (["D","G"])

letterWorthOne = letter in lettersWorthOne
if letterWorthOne:
print "1"

letterWorthTwo = letter in lettersWorthTwo
if letterWorthTwo:
print "2"

# rest of values omitted for brevity

print "E worth"
letterPoint("E")
print "D worth"
letterPoint("D")

Dieses Programm erzeugt folgende Ausgabe:

E worth
1
D worth
2

Dies erklärt, warum Ihre bestehende Funktion nicht funktioniertArbeit. Aber auf lange Sicht würde ich empfehlen, ein Wörterbuch zu verwenden, um den Wert und die Quantität jedes Buchstabens zu halten, und die Werte als Zahlen anstelle von Zeichenketten zu speichern, so dass Sie die Werte aller Buchstaben in einem Wort hinzufügen können.


0 für die Antwort № 4

Um den Code zu verwenden, mit dem Sie begonnen haben, können Sie die Zeilen folgendermaßen ändern:

if letter in lettersWorthOne print 1
...

Dies liegt daran, dass die von Ihnen verwendete Datenstruktur a list (Es ist umgeben von [] Klammern). Sie können diese Listen in Ihrer Funktion verwenden if Sie enthalten den Brief in die Liste mit dem Code:

if <variable> in <list> print <value>

Das () Klammern machen nichts, wie in einer anderen Antwort erwähnt, so dass Sie sie loswerden können.

Dies ist nur um Ihnen zu erklären, warum Sie kein Ergebnis in der Funktion sehen, die Sie geschrieben haben. Die anderen Antworten, die vorschlagen, a dict (Wörterbuch) sind ein besserer Ansatz in der Praxis.