【问题标题】:Poker hand string display扑克手串显示
【发布时间】:2011-05-09 09:17:02
【问题描述】:

我是编程和 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"]),它将输出“红桃 K,黑桃 A,方块 5,梅花 2”。

以下是我目前所拥有的:

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)

【问题讨论】:

  • 请记住,我是一个初学者,对 python 或其功能一无所知。谁能解释一种简单的方法来输出我需要的结果?
  • 请关注general问题guidelines:说明任何特殊限制,展示您迄今为止尝试过的内容,并询问具体是什么让您感到困惑。您需要在你目前所拥有的方面更加努力,例如尝试实现这些功能(包括上面的代码)并询问这些实现中的具体问题。就目前而言,这是“请为我解释这项任务”,没有你的工作,这是一个非常糟糕的问题。

标签: python string list search


【解决方案1】:
>>> 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']

【讨论】:

    【解决方案2】:

    我将与最后两张海报稍有不同,并从 zip 函数开始连接匹配列表。

    【讨论】:

    • @downvoter:您应该发表评论并解释为什么需要投票!
    • 你如何使用 zip 来解决这个问题?
    • 记住“最后两张海报”很快就失去了意义。这不是一个很好的答案(这个问题首先有问题),但我不确定它是否值得一票否决。
    • @Falmarri: for a, b in zip(short_card, long_card): if a == needle: return b
    • 这对于像我这样的新手来说似乎太复杂了:P
    【解决方案3】:

    你没有太多,但我会说你的名单是成对的。

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

    它们的长度和顺序都相同。所以short_card中'A'的索引与long_card中'ace'的索引相同。所以如果你找到一个的索引,你就有另一个的索引。

    这应该为您指明正确的方向。当您有更多信息时回来编辑您的帖子。

    【讨论】:

    • 您遇到了什么问题?用您尝试过的方法和无效的方法更新您的问题。
    【解决方案4】:

    所以你有两组列表,它们将输入值与输出字符串相关联。注意列表的顺序;他们是一样的。这应该使输入的索引值等于...

    【讨论】:

      猜你喜欢
      • 2016-03-01
      • 2014-11-04
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      相关资源
      最近更新 更多