2014-11-01 52 views
-1

創建一個代表一副牌的類Deck。你的班級應該有以下幾種方法:在Python中定義類

  • 構造:按照標準順序創建一個52張卡組成的新卡組。
  • shuffle:randomnizes卡的順序。
  • dealCard:從甲板上方返回一張卡片並將卡片從甲板上移除
  • cardsLeft:返回甲板上剩餘卡片的數量。

測試有它從一個洗牌的甲板,其中n是用戶輸入交易出去的n卡序列程序。

class Deck: 

    def __init__(self): 
     self.cardList=[] 
     for suit in ["d","c","h","s"]: 
      for rank in range(1,14): 
       card=PlayingCard(suit, rank) 
       self.cardList.append(card) 
    def shuffle(self): 
    #I DON'T KNOW HOW TO SHUFFLE MY CARDS PLEASE HELP. 
    #self.cardList[pos1] = self.cardList[pos2] 
    #self.cardList[pos2] = self.cardList[pos1] 
    #these two lines above are not working 
    def dealCard(self): 
     return self.cardList.pop() 

    def cardsLeft(self): 
     return len(self.cardList) 
+2

你的問題是什麼? – BrenBarn 2014-11-01 21:19:17

+1

@BrenBarn根據埋在代碼中的意見,他們想知道如何洗牌。 – 2014-11-01 21:21:29

+1

@Jess作業? – kums 2014-11-01 21:22:07

回答

1

閱讀有關random.shuffle的文檔。它應該對你有很大的幫助! :)

from collections import namedtuple 
from random import shuffle 

PlayingCard = namedtuple('PlayingCard', "suit rank") 

class Deck: 

    def __init__(self): 
    self.cardList = [PlayingCard(suit, rank) for suit in"dchs" for rank in range(1,14)] 

    def shuffle(self): 
     shuffle(self.cardList) 

    def dealCard(self): 
     return self.cardList.pop() 

    def cardsLeft(self): 
     return len(self.cardList) 

d = Deck() 
d.shuffle() 
print [d.dealCard() for _ in range(5)]