私は現在、John Zelle の Python Programming: An Introduction to Computer Science に取り組んでいて、第 10 章で問題にぶつかっています。 . この演習では、名前付きのクラスを使用してnCard
枚のカードを表示し、次のメソッドを必要とするプログラムを作成するように求められます。n個のランダム カードを生成するアプリ内からも呼び出せるようにする必要があります。
__init__(self, rank, suit):
getRank(self)
getSuite(self)
BJValue(self)
__str__(self)
これはとてつもなく簡単なはずですが、このクラスを実装しようとして壁にぶつかりました。52 枚のカードのデッキを生成し、ユーザーに必要なカードの枚数を要求し、それらのカードを手札に入れる単純なアプリを作成しました。ハンドが生成されると、カード固有のクラスの恩恵を受ける場所がわかりません。これまでの作業コードは次のとおりです。
import random
class Card:
def __init__(self, rank, suite):
self.rank = rank
self.suite = suite
def getRank(self):
return self.rank
def getSuite(self):
return self.suite
def BJValue(self):
if self.rank == 'Ace':
return 1
elif self.rank == 'Jack' or self.rank == 'Queen' or self.rank == 'King':
return 10
else:
return int(self.rank)
def __str__(self):
return ('{0} of {1}'.format(self.rank, self.suite))
def shuffled_deck():
deck = []
for suite in ['Clubs', 'Diamonds', 'Hearts', 'Spades']:
for num in ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']:
deck.append([num, suite])
random.shuffle(deck)
return deck
def main():
deck = shuffled_deck()
hand = []
print('>> Card Generator v1 <<')
while True:
try:
n = int(input('Please enter the number of cards to display (1-7): '))
except ValueError:
print('Invalid input, please enter a number!\n')
else:
if n < 1 or n > 7:
print('Please enter a number between 1-7!\n')
else:
break
print('Your hand is:')
for i in range(n):
hand.append(deck[i])
main()
したがって、ランダムなn枚のカードの手札を生成すると、Card クラスを使用することでどのようなメリットがあるか、またはどこに実装するかさえわかりません。nは 1 ~ 7 の乱数であるため、各カード オブジェクトを格納し、各変数を のインスタンスに割り当てるにはnCard
個の変数が必要です。特別なクラスを必要とせずに、手札にある各カードをhand[i]
どこまで繰り返すかを示すことができましたが、それはこのプロジェクトから期待されていることではありません。この必要なクラスを利用できるように、この問題についてどのように考えるかについてのアドバイスを探しています。range(n)
Card