在简单的Python纸牌游戏中为卡片分配位置

时间:2015-04-11 15:10:21

标签: python list playing-cards

我正在完成一项家庭作业,以制作一个简单的纸牌游戏,我不明白为什么我不能使用相同的方法制作我的起始牌并指定起始位置的卡也。我们不应该使用比列表和数组更复杂的东西(因为到目前为止我们已经学到了所有这些)。

第一部分(构建套牌)工作正常。第二部分应该分配位置(" deck",之后我将放置"玩家手"以及"计算机手和" #34;处理卡片)没有工作,我不知道为什么我不能使用相同的方法。 我不断收到"列表索引超出范围的错误"我无法弄清楚如何解决它。

    def startDeck():
       suitName = ("hearts", "diamonds", "spades", "clubs")
       rankName = ("Ace", "Two", "Three", "Four", "Five", "Six", "Seven",
           "Eight", "Nine", "Ten", "Jack", "Queen", "King")
       suitName = list(suitName)
       rankName = list(rankName)
       deck = []
       for suit in range(4):
            for rank in range(13):
                card_string = rankName[rank] + " of " + suitName[suit]
                deck.append(card_string)
       return deck

    def startCardLoc():
        deck = startDeck()
        locName = ("Deck")
        deck = list(deck)
        locName = list(locName)
        cardLoc = []
        for loc in range(52):
            for firstloc in range(1):
                loc_string = locName[loc]
                cardLoc.append(loc_string)
        return cardLoc

    print startCardLoc()

这是错误的追溯:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-1-6d73de457be8> in <module>()
     24     return cardLoc
     25 
---> 26 print startCardLoc()

<ipython-input-1-6d73de457be8> in startCardLoc()
     20     for loc in range(52):
     21         for firstloc in range(1):
---> 22             loc_string = locName[loc]
     23             cardLoc.append(loc_string)
     24     return cardLoc

IndexError: list index out of range

感谢您提供的所有帮助。

2 个答案:

答案 0 :(得分:1)

您应该重新检查list()。你把这个Python称为内置4次,并且在任何情况下似乎都没有必要。特别是,locName = list(locName)将列表['D','e','c','k']分配给locName,这可能不是您想要的。该行也会导致索引错误,因为稍后您尝试通过for循环中的locName [51]访问locName [0]。

答案 1 :(得分:-1)

即使它有效,写下也会更加pythonic:

for suit in suitName:

我不确定你想在第二部分做什么,但是你看看random.choice吗?

P.S。我正在使用答案,因为单行注释对于不那么简短的解释是不实际的。