Строка покерных рук - PullRequest
2 голосов
/ 13 ноября 2010

Я новичок в программировании и Python, и изо всех сил стараюсь понять и изучить его.Я не спрашиваю ответы, но объяснения в простых некомпьютерных терминах, чтобы я мог попытаться найти решение самостоятельно.

Вот еще одна проблема, с которой я столкнулся.У меня есть 4 списка ниже:

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

Теперь я должен написать две функции: card_str (c) и hand_str (h).

card_str (c) принимает два символаСтрока и поиск, чтобы найти соответствующие символы для отображения карты в тексте.Например, если я поставлю 'kh', программа выведет "King of Hearts".

hand_str (h) берет список из двух символьных строк и отображает соответствующую руку в полном тексте.Опять же, например, если я поставлю (["Kh", "As", "5d", "2c"]), он выдаст "Король червей, туз пик", пять бриллиантов, двойка треф ".

Вот то, что я имею до сих пор:

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)

Ответы [ 4 ]

1 голос
/ 13 ноября 2010

У вас не так много, но я скажу, что ваши списки попарно.

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

Они все одинаковой длины итот же порядок.Таким образом, индекс 'A' в short_card совпадает с индексом 'ace' в long_card.Поэтому, если вы найдете индекс одного, у вас есть индекс другого.

Это должно указать вам правильное направление.Вернитесь и отредактируйте свое сообщение, когда у вас будет больше.

1 голос
/ 13 ноября 2010

Итак, у вас есть два набора списков, которые соотносят входные значения с выходными строками.Обратите внимание на порядок списков;они одинаковыеЧто должно сделать значения индекса входных данных равными ...

0 голосов
/ 13 ноября 2010
>>> 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']
0 голосов
/ 13 ноября 2010

Я бы сделал это немного иначе, чем последние два плаката, и начал бы с функции zip для объединения соответствующих списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...