vaultah's answerは完全にあなたの実際の質問に対処する - 彼らはupvoteとチェックマークに値します。
しかし、あなたが学んでいるすべての言語でブラックジャックをプログラミングすることは、それをよりよく理解するための優れた方法だと思うので、ブラックジャックテストを実装する別の方法を示すコードをまとめました。同様に、
# Note: sometimes an Ace should be 1, but when checking for blackjack you can always
# consider it 11
def card_value(c):
if isinstance(c, int):
return c
elif c in ['Jack', 'Queen', 'King']:
return 10
elif c == 'Ace':
return 11
def blackjack_check(hand):
hand_value = sum(card_value(c) for c in hand)
return hand_value == 21
print(blackjack_check((2, 10))) # False
print(blackjack_check((10, 10))) # False
print(blackjack_check((2, 'Ace'))) # False
print(blackjack_check(('King', 'Jack'))) # False
print(blackjack_check(('King', 'Ace'))) # True
print(blackjack_check(('Ace', 'Queen'))) # True
私は今日それを実装した場合、カードと手がクラスになり、そしてHand.is_blackjack()
方法があると思います:
import random
class Card:
NAMES = {1: 'Ace', 11:'Jack', 12:'Queen', 13:'King'}
def __init__(self, pips, suit):
self.pips = pips
self.suit = suit
def __repr__(self):
name = Card.NAMES.get(self.pips, "%d" % self.pips)
return "%s of %s" % (name, self.suit)
def value(self, ace_hi=True):
# Handle Ace
if self.pips == 1:
return 11 if ace_hi else 1
return min(self.pips, 10)
class Hand(list):
def is_blackjack(self):
hand_value = sum(c.value() for c in self)
return hand_value == 21
CARDS = [Card(p,s) for p in range(1,14) for s in ['Spades', 'Hearts', 'Clubs', 'Diamonds']]
h = Hand(random.sample(CARDS, 2))
print("Hand:")
for c in h:
print(" %s" % c)
print("Blackjack? %s" % h.is_blackjack())
実際にあなたの質問に答えるよりも、教育目的のためのより多くの
例:愚かな非答えて申し訳ありません
Hand:
Jack of Spades
Ace of Spades
Blackjack? True
Hand:
Queen of Spades
9 of Diamonds
Blackjack? False
、これらは考えるだけでさまざまなアイデアです。彼らがあなたの頭の上にいるかどうか心配しないでください、あなたはそこに着くでしょう。
「エース」が手元にあり、任意の(xは手に入れた[0:2])x –