Published : 2022-09-12 23:42:40 (KST)
deck
트럼프 카드 덱 구성하기
from nbdev_cards.card import *
from fastcore.utils import *
import randomDeck
Deck ()
Initialize self. See help(type(self)) for accurate signature.
덱 한 벌을 초기화하면, 모든 카드가 들어가 있다.
Deck()
deck = Deck()
deck♣️A; ♣️2; ♣️3; ♣️4; ♣️5; ♣️6; ♣️7; ♣️8; ♣️9; ♣️10; ♣️J; ♣️Q; ♣️K; ♦️A; ♦️2; ♦️3; ♦️4; ♦️5; ♦️6; ♦️7; ♦️8; ♦️9; ♦️10; ♦️J; ♦️Q; ♦️K; ♥️A; ♥️2; ♥️3; ♥️4; ♥️5; ♥️6; ♥️7; ♥️8; ♥️9; ♥️10; ♥️J; ♥️Q; ♥️K; ♠️A; ♠️2; ♠️3; ♠️4; ♠️5; ♠️6; ♠️7; ♠️8; ♠️9; ♠️10; ♠️J; ♠️Q; ♠️K
♣️A; ♣️2; ♣️3; ♣️4; ♣️5; ♣️6; ♣️7; ♣️8; ♣️9; ♣️10; ♣️J; ♣️Q; ♣️K; ♦️A; ♦️2; ♦️3; ♦️4; ♦️5; ♦️6; ♦️7; ♦️8; ♦️9; ♦️10; ♦️J; ♦️Q; ♦️K; ♥️A; ♥️2; ♥️3; ♥️4; ♥️5; ♥️6; ♥️7; ♥️8; ♥️9; ♥️10; ♥️J; ♥️Q; ♥️K; ♠️A; ♠️2; ♠️3; ♠️4; ♠️5; ♠️6; ♠️7; ♠️8; ♠️9; ♠️10; ♠️J; ♠️Q; ♠️K
총 52개의 카드가 들어가 있어야 한다.
test_eq(len(deck), 52)Card를 포함하고 있는 소스코드에 #| export \ from fastcore.utils import * 가 있어야 한다.
Card??Init signature: Card(suit, rank) Source: class Card: "트럼프 카드" def __init__(self, suit, # `suits`에 들어가는 인덱스 rank): # `ranks`에 들어가는 인덱스 self.suit, self.rank = suit, rank #print(1/0) def __str__(self): return f"{suits[self.suit]}{ranks[self.rank]}" __repr__ = __str__ # def __eq__(self, a:'Card'): return (self.suit,self.rank) == (a.suit,a.rank) File: ~/Jupyter_Python/nbdev_cards/nbdev_cards/card.py Type: type Subclasses:
다시 상기해보면, 아래는 Card를 정의하기 위한 문양들이다:
suits['♣️', '♦️', '♥️', '♠️']
클럽 에이스가 덱에 포함되어 있는지 확인할 수 있다:
Card(1,1) in deck # __contains__ 함수가 정의되어 있어야한다.True
Deck.pop
Deck.pop (idx:int=-1)
덱에서 인덱스에 해당되는 카드를 없애고 그 카드를 반환한다.
| Type | Default | Details | |
|---|---|---|---|
| idx | int | -1 | 지우려는 카드의 인덱스. 기본값은 덱의 마지막 카드 인덱스 |
deck.pop()♠️K
deck = Deck()
test_eq(deck.pop(), Card(3,13)) # K♠️이제 덱에는 51장의 카드가 남아있다.
test_eq(len(deck), 51)Deck.remove
Deck.remove (card:nbdev_cards.card.Card)
덱에서 card를 없애고, 그 카드가 덱에 없었다면 예외를 발생시킨다.
| Type | Details | |
|---|---|---|
| card | Card | 없애려는 카드 |
card23 = Card(2,3)
deck.remove(card23)
assert card23 not in deckCard(2,7)
assert Card(2,7) not in deck♥️7
AssertionError:
draw_n
draw_n (n:int, replace:bool=True)
n개의 카드를 추출. replace가 True일 경우 복원 추출.
| Type | Default | Details | |
|---|---|---|---|
| n | int | 뽑으려는 카드의 개수 | |
| replace | bool | True | 복원 추출 여부 |
Deck.shuffle
Deck.shuffle ()
덱을 섞는다.
draw_n(13, replace=False)[♠️9, ♣️4, ♦️5, ♣️J, ♠️K, ♣️A, ♠️10, ♣️6, ♣️K, ♣️5, ♠️3, ♦️3, ♦️Q]