2017-11-23 15 views
0

私は、Rarityを見て、さまざまなタイプを数えてから、最小のカウントを返すPythonメソッドを書こうとしていますが、「MagicCard」オブジェクトは添え字ではありません。また、最も希少なカードに関連付けられている色をチェックしたいと思っています。任意の助けいただければ幸い:JSONはテスト用から入手することができる場所オブジェクト内の異なるカウントの最小値を探す

ここ

は次のとおりです。http://mtgjson.com/json/DTK.json

カードオブジェクト:

class MagicCard(object): 
    def __init__ (self, jsonCard): 
     self.name=jsonCard["name"] 

     if jsonCard.get("colors",""): 
      self.colors=jsonCard["colors"] 
     else: 
      self.colors=None 

     if jsonCard["rarity"]: 
      self.rarity=jsonCard["rarity"] 
     else: 
      self.rarity=None 

    def get_name(self): 
     """Return the name of the card""" 
     return self.name 

    def get_colors(self): 
     """Return the colors of the card""" 
     return self.colors 

    def get_rarity(self): 
     """Return the rarity of the card""" 
     return self.rarity 

カードデッキオブジェクト:

class MagicCardSet(object): 
    def __init__(self, DeckDict): 
     self.cardlist = [MagicCard(eachCard) for eachCard in DeckDict["cards"]] 

    def get_card_list(self): 
     Card_name_list=[] 
     for newCard in self.cardlist: 
      Card_name_list.append(newCard.get_name()) 
     return(Card_name_list) 

    def get_card_color(self): 
     color_list=[] 
     for newCard in self.cardlist: 
      color_list.append(newCard.get_color()) 
     return(color_list) 

    def get_card_rarity(self): 
     rarity_list=[] 
     for newCard in self.cardlist: 
      rarity_list.append(newCard.get_rarity()) 
     return(rarity_list) 

    def get_rarest_card(self): 
     for eachCard in self.cardlist: 
      if eachCard["rarity"]=="Uncommon": 
       uncommon_counter = uncommon_counter + 1 
      elif eachCard["rarity"]=="Common": 
       common_counter=common_counter + 1 
      elif eachCard["rarity"]=="Rare": 
       rare_counter = rare_counter + 1 
      elif eachCard["rarity"]=="Mythic Rare": 
       mythic_rare_counter = mythic_rare_counter + 1 
     return(mythic_rare_counter) 

エラー: enter image description here

+0

、つまり、私は、「スクリプト可能ではない」エラーを取得しておりません。おそらく、トレースバック、環境情報、Pythonのバージョンなどを含めると役に立ちます。 – Martin

+1

これらのクラスの使い方を示す[mcve]を投稿する必要があります。 'jsonCard'や' DeckDict'がどのようなものかはわかりません。そのエラーメッセージは私には意味があります。「MagicCard」インスタンスはカードのコレクションではなく、1枚のカードなので、試してインデックスを付けることは意味がありません。 OTOHの 'MagicCard'は' .rarity'属性を持っています。これは 'eachCard.rarity'を使ってアクセスできます。 –

+0

どのようにこれらのクラスを使用していますか?なぜあなたはimgurを使っていますか?コピーして貼り付けないのはなぜですか? –

答えて

0

for eachCard in self.cardlist 

は、MagicCardインスタンスを返します。 eachCardでget_rarity()およびget_name()およびget_colors()を呼び出します。また

は、少なくとも稀な(最も一般的な)カードの色を取得するには:このコードが動作している

unrare_colors = {} 
for eachCard in self.cardlist: 
    if eachCard.get_rarity() == "Common": 
     for eachColor in eachCard.get_colors(): 
      unrare_colors[eachColor] = 1 

for color in unrare_colors.keys(): 
    print(color) 
関連する問題