Um mein Pokerspiel zu erstellen, abstrahiere ich eine "Hand" als eine Liste von card
Objekten.
Zum Beispiel repräsentiert ['AC', '3D', '4S', 'KH', 'TC']
ein Objekt hand
und jedes Element der Liste ist ein card
Objekt.Zeichenketten zu ganzen Zahlen in Python
Ich möchte die Karten in einer Hand in absteigender Reihenfolge ihrer Bedeutung im Spiel rangieren.
d. H. 'A' > 'K' > ....(so on)... > '2'
Ich bin auf der Suche nach der Zuordnung der Rang jeder Karte auf einen entsprechenden Wert.
Für das obige Beispiel wird die Korrespondenz [14, 13, 10, 4, 3]
sein ich die folgenden Funktionen haben dies für mich zu tun:
def mapper(ranks):
mapping = {
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9,
'T': 10,
'J': 11,
'Q': 12,
'K': 13,
'A': 14
}
new_ranks = [mapping[rank] for rank in ranks]
return new_ranks
def card_ranks(cards):
"Return a list of the ranks, sorted with higher first."
ranks = [r for r,s in cards]
return sorted(mapper(ranks), reverse=True)
Diese Funktionen arbeiten gut, aber ich sie genug Pythonic nicht finden.
Ich würde gerne wissen, wie kann ich diese Zuordnung effizient durchführen (vielleicht mit map
Funktion).
[CodeReview.SE] sein könnte ein besserer Ort dafür. – Ryan