2017-07-06 4 views
-1

私はコンピューターサイエンスのプロジェクトを受けましたが、私は13枚のカードを手に入れる方法が分かりません。ハンドクラスにはメモリエラーがありますが、私は理由を理解できません。それぞれのハンドに13枚のカードを置いていません。ここに私のコードは、これまでのところです:あなたはhandPrinter方法で13枚のトランプカードでハンドを作る方法

result = (self.pop()) 

を行うと

#Keshav Ramesh 
#Project 8 

import random 

class card:   
    def __init__(self, suit, value): 
     self.suit=suit 
     self.value=value 

    #methods 
    def printer(self): 
     print("{0} {1}".format(self.suit, self.value)) 

    def __lt__(self, other): 
     if(self.value == other.value): 
      return self.suit < other.suit 
     elif (self.value != other.value): 
      return self.value < other.value 
    def __gt__(self, other): 
     return not(self<other) 

    def __str__(self): 
     return "Suit: " + str(self.suit) + " value: " + str(self.value) 

class deck: 
    def __init__(self): 
     self.x=[] 
     self.load() 
     random.shuffle(self.x) 

    def load(self): 
     for i in range(1, 5): 
      for j in range(2, 14): 
       self.x.append(card(i, j)) 

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

p = deck() 
class hand: 
    def __init__(self): 
     self.x=[] 
     self.hand_count=0 
     while len(self.x) != 13: 
      self.x.append(p.deal()) 

    def accept(self, a): 
     self.x.append(a) 
     self.hand_count= self.hand_count + 1 

    def play(self): 
     self.hand_count = self.hand_count - 1 
     return self.x.pop() 

    def handPrinter(self): 
     while len(self.x) != 0: 
      result = (self.pop()) 
      print("{0} {1}".format(result.suit, result.value)) 
+0

'hand_count'は' len(x) 'と同じように見えますので、' hand_count'を手動で追跡しないことで手間を省くことができます。 'self.x = [p range(13)の_のためのp.deal()]' – Will

+0

を実行することで、 'hand .__ init__'を単純化することができます。これを実行するとエラーは発生しません。エラーが再現されるようにコードを書いてください。 – kabanus

+0

ハンドクラスにはいつカードを追加しようとしますか?私はあなたのコードを取って手をつくり、 'my.accept(p.deal())'を行い、手札にカードを追加しました。 –

答えて

0

は、多分あなたは、あなたのコードを実行するとき、エラーの原因となった

result = (self.x.pop()) 

を行うことを意味しました。また、カードクラスの__init__メソッドでは、self.suit = suitself.value = valueと一致する必要があります。

それ以外

、最後に

h = hand() 
h.handPrinter() 

を追加することで、すべてが私には正常に動作しているようです。

関連する問題