Pantalla de cadena de mano de póquer

Soy nuevo en progtwigción y en Python y estoy haciendo todo lo posible por entenderlo y aprenderlo. No estoy pidiendo respuestas, sino explicaciones en términos sencillos, no informáticos, para que pueda intentar resolver la solución yo mismo.

Aquí hay un problema más que estoy teniendo. Tengo 4 listas a continuación:

short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades'] 

Ahora, lo que se supone que debo hacer es escribir dos funciones: card_str (c) y hand_str (h).

card_str (c) toma una cadena de dos caracteres y busca los caracteres correspondientes para mostrar la tarjeta en texto. Por ejemplo, si pongo ‘kh’, el progtwig emitirá “King of Hearts”.

hand_str (h) toma una lista de dos cadenas de caracteres y muestra la mano apropiada en texto completo. De nuevo, por ejemplo, si pongo ([“Kh”, “As”, “5d”, “2c”]), se mostrará “King of Hearts, Ace of Spades, Five of Diamonds, Deuce of Clubs”.

A continuación es lo que tengo hasta ahora:

 short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades'] def card_str(c): def hand_str(h): #- test harness: do not modify -# for i in range(13): print card_str(short_card[i] + short_suit[i%4]) l = [] for i in range(52): l.append(short_card[i%13] + short_suit[i/13]) print hand_str(l) 

No tienes mucho, pero diré que tus listas están en pares.

 short_card = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] long_card = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] 

y

 short_suit = ['c', 'd', 'h', 's'] long_suit = ['clubs', 'diamonds', 'hearts', 'spades'] 

Son cada una de la misma longitud y en el mismo orden. Así que el índice de ‘A’ en short_card es el mismo que el índice de ‘ace’ en long_card. Entonces, si encuentras el índice de uno, tienes el índice del otro.

Esto debería apuntarle en la dirección correcta. Regresa y edita tu publicación cuando tengas más.

Entonces, lo que tiene son dos conjuntos de listas, que correlacionan los valores de entrada con las cadenas de salida. Tenga en cuenta el orden de las listas; son los mismos Lo que debería hacer que los valores de índice de las entradas sean iguales a …

Lo haría de forma ligeramente diferente a los dos últimos pósters, y comenzaría con la función zip para unir listas de coincidencias.

 >>> def poker_card(c): ... card, suit = c ... short_cards = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'] ... short_suits = ['c', 'd', 'h', 's'] ... long_cards = ['ace', 'king', 'queen', 'jack', 'ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'deuce'] ... long_suits = ['clubs', 'diamonds', 'hearts', 'spades'] ... return "%s of %s" % (long_cards[short_cards.index(card)], long_suits[short_suits.index(suit)]) ... >>> def poker_hand(hand): ... return [poker_card(c) for c in hand] ... >>> def main(): ... print poker_hand(["Kh", "As", "5d", "2c"]) ... >>> main() ['king of hearts', 'ace of spades', 'five of diamonds', 'deuce of clubs']