Published : 2022-09-12 23:42:40 (KST)
card – 기본 트럼트 카드
트럼프 카드를 생성하고 사용하는 간단한 API
from fastcore.utils import *def foo(): passfoo
foo ()
숫자로 트럼프 카드의 문양과 등급을 나타내자. 문양은 다음과 같다:
suits['♣️', '♦️', '♥️', '♠️']
가령, 인덱스 0의 문양은 다음과 같다:
suits[0]'♣️'
등급은 다음과 같다:
ranks[None, 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
class Card_error:
"트럼프 카드"
def __init__(self,
suit, # An index into `suits`
rank): # An index into `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)c = Card_error(suit=2, rank=3)ZeroDivisionError: division by zero
에러가 발생하면 다음과 같이 디버깅 할 수 있다.
print('%debug')%debug
> /tmp/ipykernel_226092/1521338603.py(7)__init__()
5 rank): # An index into `ranks`
6 self.suit, self.rank = suit, rank
----> 7 print(1/0)
8 def __str__(self): return f"{ranks[self.rank]}{suits[self.suit]}"
9 __repr__ = __str__
ipdb> p suit
2
ipdb> w
/tmp/ipykernel_226092/1067632244.py(1)<module>()
----> 1 c = Card_error(suit=2, rank=3)
> /tmp/ipykernel_226092/1521338603.py(7)__init__()
5 rank): # An index into `ranks`
6 self.suit, self.rank = suit, rank
----> 7 print(1/0)
8 def __str__(self): return f"{ranks[self.rank]}{suits[self.suit]}"
9 __repr__ = __str__
ipdb> l
2 "A playing Card, created by passing in `rank` from `ranks` and `suit` from `suits`"
3 def __init__(self,
4 suit, # An index into `suits`
5 rank): # An index into `ranks`
6 self.suit, self.rank = suit, rank
----> 7 print(1/0)
8 def __str__(self): return f"{ranks[self.rank]}{suits[self.suit]}"
9 __repr__ = __str__
10 # def __eq__(self, a:'Card'): return (self.suit,self.rank) == (a.suit,a.rank)
ipdb> q
c = Card(suit=2, rank=3)c♥️3
print(c)♥️3
Card
Card (suit, rank)
트럼프 카드
| Details | |
|---|---|
| suit | suits에 들어가는 인덱스 |
| rank | ranks에 들어가는 인덱스 |
from execnb.nbio import dict2nbdict2nb
dict2nb (js=None, **kwargs)
Convert dict js to an AttrDict,
test_eq<function fastcore.test.test_eq(a, b)>
test_eq?Signature: test_eq(a, b) Docstring: `test` that `a==b` File: /nix/store/zd5ha541rf1gvsbsjl0xjv9bnirwsdqi-python3-3.9.13-env/lib/python3.9/site-packages/fastcore/test.py Type: function
test_eq??Signature: test_eq(a, b) Source: def test_eq(a,b): "`test` that `a==b`" test(a,b,equals, '==') File: /nix/store/zd5ha541rf1gvsbsjl0xjv9bnirwsdqi-python3-3.9.13-env/lib/python3.9/site-packages/fastcore/test.py Type: function
- write
test_eq( - press
shift + Tabkey
Produces same result with test_eq?
비교 연산자
같음, 적음, 큼 연산자는 등급과 문양에 대해 작동한다.
Card.__eq__
Card.__eq__ (a:__main__.Card)
Return self==value.
test_eq(Card(suit=1, rank=3),Card(suit=1, rank=3))
test_ne(Card(suit=2, rank=3),Card(suit=1, rank=3))
test_ne(Card(suit=1, rank=2),Card(suit=1, rank=3))assert Card(suit=1, rank=3)<Card(suit=2, rank=3)# 꼭 필요하지는 않은 듯. __lt__ 과 __gt__ 둘 중에 하나만 필요한 듯.
#@patch
#def __gt__(self:Card, a:Card): return (self.suit,self.rank) > (a.suit,a.rank)assert Card(suit=3, rank=3)>Card(suit=2, rank=3)