2010-11-13 2 views
2

Я новичок в программировании и 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 (с) и hand_str (ч).

card_str (c) берет строку с двумя символами и выполняет поиск, чтобы узнать соответствующие символы для отображения карты в тексте. Например, если я поставлю «kh», программа выведет «Король сердец».

hand_str (h) принимает список из двух символов и отображает соответствующую руку в полном тексте. Опять же, если я положил ([«Kh», «As», «5d», «2c»]), он выведет «King of Hearts», «Ace of Spades», «Five of Diamonds, Deuce of Clubs».

Ниже то, что я до сих пор:

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

запомнить im новичок, не имеющий знания в python или его функциях. Может ли кто-нибудь объяснить простой способ вывода результата, который мне нужен? – 2010-11-13 00:55:27

+2

Пожалуйста, следуйте [general] (http://tinyurl.com/so-hints) вопросу [руководящие принципы] (http://meta.stackexchange.com/q/10812): укажите любые особые ограничения, ** покажите, вы пробовали до сих пор и спрашиваете, что конкретно вас путает. ** Вам нужно немного усердно работать над тем, что у вас есть до сих пор, например, пытаться реализовать эти функции (включая код выше) и задавать конкретные проблемы в этих реализациях , Как бы то ни было, это «пожалуйста, объясните это задание для меня» без какой-либо работы от вас, что вызывает очень плохой вопрос. – 2010-11-13 03:24:07

ответ

1

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

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. Поэтому, если вы найдете индекс одного, у вас есть индекс другого.

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

+0

Хмм, я постараюсь изо всех сил подумать об этом через спасибо. – 2010-11-13 01:09:07

+0

не получив много удачи. – 2010-11-13 01:49:52

+0

С чем вы столкнулись? Обновите свой вопрос тем, что вы пробовали и что не работает. – Falmarri

1

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

0

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

+0

@downvoter: Вы должны оставить комментарий и объяснить, почему необходимо использовать downvoting! – jwueller

+0

Как бы вы могли использовать zip для этого, что могло бы помочь в любом случае? – Falmarri

+0

Помните, что «последние два плаката» быстро теряют смысл на SO. Это не большой ответ (у вопроса есть проблемы в первую очередь), но я не уверен, что он заслуживает понижения. – 2010-11-13 03:20:37

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'] 
Смежные вопросы