2016-11-04 19 views
3

クラスメソッドを複数回(正確には26個)繰り返して、デッキを2つの別々のデッキに分割することができます。私はd1=Deck()に加えてdeck1 = d1.deal()*26に加えて[:26]と[26:](明らかにリストのみ)を試してみました。クラスの作成方法を学びました。Pythonで繰り返しクラスメソッド

希望出力はdeck1=["""26 random cards"""]deck2=["""26 random cards"""]です。

関連するコードは:あなたが行動に一定の回数を繰り返したいときはいつでも

import random 
suits = ['H','C','S','D'] 
ranks = ['A']+list(map(str,range(2,10)))+['X','J','Q','K'] 
values = [14]+list(range(2,14)) 

class Card: 
    def __init__(self,suit,rank): 
     self.suit=suit 
     self.rank=rank 
     self.value=values[ranks.index(self.rank)] 

    def __str__(self): 
     return "*------*\n|{0}{1} |\n|  |\n| {0}{1}|\n*------*".format(self.rank,self.suit) 

    def __gt__(self,other): 
     return self.value > other.value 

    def __lt__(self,other): 
     return self.value < other.value 

    def __eq__(self,other): 
     return self.value == other.value 

class Deck: 
    """This class is for creating deck""" 
    def __init__(self): 
     self.deck=[] 
     for suit in suits: 
      for rank in ranks: 
       self.deck.append(Card(suit,rank)) 
     self.shuffle() 

    def __str__ (self): 
     tmp='' 
     for card in self.deck: 
      tmp+=str(card)+'\n' 
     return tmp 

    def shuffle(self): 
     random.shuffle(self.deck) 

    def deal(self): 
     return self.deck.pop() 

答えて

4

したがって、操作の順序は関数を1回実行してから、結果を26回繰り返します。あなたはおそらく次のようなものがほしいと思うでしょう:

deck1 = [d1.deal() for _ in range(26)] 
+0

ありがとう!パトリックの答えよりも簡単です。 –

1

forループを使用します。

d2 = [] 
for i in range(26): 
    d2.append(d1.deal()) 

現在、空のデッキを作成するコードはありません。たぶん、空のデッキを作成し、完全なデッキを作る別の方法を作成する__init__を持っている必要がありますか?ちょっとした考え。

+0

これは知っていたはずです!はい、私は第3のクラスを実装しようとしており、その上の '__init__'で作成したデッキを組み込みます。ありがとうございました! –