网站建设内容策划案,中铁建设集团有限公司中标项目,浙里建官方网站,网站导航栏特效约束和假设 这是一幅用于类似扑克和二十一点等游戏的通用扑克牌吗#xff1f; 我们可以假设这副牌有52张#xff08;2-10#xff0c;杰克#xff0c;女王#xff0c;国王#xff0c;埃斯#xff09;和4种花色吗#xff1f; 我们可以假设输入是有效的#xff0c;还是需…约束和假设 这是一幅用于类似扑克和二十一点等游戏的通用扑克牌吗 我们可以假设这副牌有52张2-10杰克女王国王埃斯和4种花色吗 我们可以假设输入是有效的还是需要对其进行验证
编码实现
from abc import ABCMeta, abstractmethod
from enum import Enum
import sysclass Suit(Enum):HEART 0DIAMOND 1CLUBS 2SPADE 3class Card(metaclassABCMeta):def __init__(self, value, suit):self.value valueself.suit suitself.is_available truepropertyabstractmethoddef value(self):passvalue.setterabstractmethoddef value(self, other):passclass BlackJackCard(Card):def __init__(self, value, suit):super(BlackJackCard, self).__init__(value, suit)def is_ace(self):Jack 11, Queen 12, King 13return 10 self._value 13preopertydef value(self):if self.is_ace() 1:return 1elif self.is_face_card():return 10else:return self._valuevalue.setterdef value(self, new_value):if 1 new_value 13:self._value new_valueelse:raise ValueError(Invalid card value: {}.format(new_value))class Hand(object):def __init__(self, cards):self.cards cardsdef add_card(self, card):self.cards.append(card)def score(self):total_value 0for card in self.cards:total_value card.valuereturn total_valueclass BlackJackHand(Hand):BLACKJACK 21def __init__(self, cards):min_over sys.MAXSIZEmax_under -sys.MAXSIZEfor score in self.possible_scores():if self.BLACKJACK score min_over:min_over scoreelif max_under score self.BLACKJACK:max_under scorereturn max_under if max_under ! -sys.MAXSIZE else min_overdef possible_scores(self):Return a list of possible scores, taking aces into accountclass Deck(oject):def __init__(self,card):self.cards cardsself.deal_index 0def remaining_cards(self):return len(self.cards) - deal_indexdef deal_card():try:card self.card[self.deal_index]card.is_available Falseself.deal_index 1except IndexError:return Nonereturn carddef shuffle(self): #...