ランク、スイート、ブラックジャックの値の特定の属性を持つトランプカードオブジェクトを作成しました。トランプカードを作成するクラスPython
ブラックジャックの値の部分には、list
とint
のインスタンスを比較できないというTypeErrorが続きます。私は解決する方法がわからない(リストのインデックスだけを比較し、そのインデックスに基づいてブラックジャックの価値を与える方法は?)
if/elifブロックは、bjValue()関数またはinit()関数内に属していますか?ここで
は私のコードです:
class Card:
"""playing card object where numeric rank, suit and blackjack values are stored"""
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
self.ranks = [None, "Ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King"]
self.suits = {"d": "Diamonds",
"c": "Clubs",
"h": "Hearts",
"s": "Spades"}
def getRank(self):
"""returns the rank of the card"""
return self.rank
def getSuit(self):
return self.suits.get(self.suit)
def bjValue(self):
if self.rank > 1 or self.rank < 11:
self.value = self.rank
elif self.rank == "Ace":
self.value = 1
elif self.rank == "Jack" or self.ranks == "Queen" or self.ranks == "King":
self.value = 10
return self.value
def __str__(self):
return "%s of %s" % (self.ranks[self.rank], self.suits.get(self.suit))
c1 = Card(1,"s")
c2 = Card(11,"d")
print(c1) #expect Ace of Spades
print(c2) #expect Jack of Diamonds
c3 = Card(5,"c") #expect 5 of clubs
print(c3.getRank())
print(c3.getSuit()) #expect Five
print(c3.bjValue()) #expect 5
print(c3)
c4 = Card(1,"s")
print(c4)
編集:だから、私は私のタイプミスを修正し、私はもう、エラーが届かないが、私はまだ(ジャック、女王と王カードの不正なブラックジャックの値を取得しています私はif文を持っていても、自分のブラックジャックの値を順位として返します)、私のロジックの瑕疵がどこにあるのかわかりません。
正確なスタックトレースをご利用ください。 –