2010-11-13 3 views
2

Je suis tout nouveau à la programmation et Python et je fais de mon mieux pour comprendre et apprendre. Je ne demande pas de réponses, mais des explications en termes non informatiques afin que je puisse essayer de trouver la solution moi-même.Affichage de chaîne de main de poker

Voici un autre problème que j'ai. J'ai 4 listes ci-dessous:

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'] 

Maintenant que im censé faire est d'écrire deux fonctions: card_str (c) et hand_str (h). Card_str (c) prend une chaîne de deux caractères et cherche à trouver les caractères correspondants pour afficher la carte dans le texte. Par exemple si je mets 'kh' le programme produira "King of Hearts". Hand_str (h) prend une liste de deux chaînes de caractères et affiche la main appropriée en texte intégral. Encore une fois par exemple si je mets (["Kh", "As", "5d", "2c"]), il produira "Roi de Coeurs, As de Pique, Cinq de Diamants, Deuce de Clubs".

Ci-dessous ce que j'ai jusqu'à présent:

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) 
+0

Quelqu'un peut-il expliquer un moyen facile de produire le résultat dont j'ai besoin? –

+2

S'il vous plaît suivez [général] (http://tinyurl.com/so-hints) question [directives] (http://meta.stackexchange.com/q/10812): indiquer des restrictions spéciales, ** montrer ce que vous ' J'ai essayé jusqu'ici, et demandez ce qui vous dérange. ** Vous devez travailler un peu plus fort sur ce que vous avez jusqu'ici, comme essayer d'implémenter ces fonctions (inclure le code ci-dessus) et poser des problèmes spécifiques dans ces implémentations . En l'état, c'est "s'il vous plaît expliquer cette mission pour moi" sans travail de votre part, ce qui en fait une très mauvaise question. –

Répondre

1

Vous n'avez pas beaucoup, mais je dirais que vos listes sont en paires.

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'] 

et

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

Ils sont chacun la même longueur et dans le même ordre. Donc, l'index de 'A' dans short_card est le même que l'index de 'ace' dans long_card. Donc, si vous trouvez l'indice d'un, vous avez l'indice de l'autre.

Cela devrait vous orienter dans la bonne direction. Revenez et modifiez votre publication lorsque vous en avez plus.

+0

hmm je ferai de mon mieux pour y réfléchir merci. –

+0

ne pas avoir beaucoup de chance. –

+0

Qu'est-ce qui vous pose problème? Mettez à jour votre question avec ce que vous avez essayé et ce qui ne fonctionne pas. – Falmarri

1

Donc ce que vous avez est de deux ensembles de listes, qui sont en corrélation les valeurs d'entrée avec les chaînes de sortie. Notez l'ordre des listes; ils sont pareils. Ce qui devrait rendre les valeurs d'index des entrées égales à ...

0

Je le ferais légèrement différemment des deux dernières affiches, et commencerais par la fonction zip pour joindre des listes correspondantes. Souvenez-vous que je suis un débutant sans aucune connaissance en python ou ses fonctions.

+0

@downvoter: Vous devriez laisser un commentaire et expliquer pourquoi downvoting était nécessaire! – jwueller

+0

Comment pourriez-vous utiliser zip pour cela qui pourrait aider de quelque façon que ce soit? – Falmarri

+0

Rappelez-vous que "les deux dernières affiches" perdent rapidement leur sens. Ce n'est pas une bonne réponse (la question a des problèmes en premier lieu), mais je ne suis pas sûr qu'elle mérite une downvote. –

0
>>> 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'] 
Questions connexes