Skip to content
This repository was archived by the owner on Dec 2, 2021. It is now read-only.

Commit b54c22a

Browse files
lijun.Slijun.S
authored andcommitted
personal edit on 01-data-model
1 parent b3cc90a commit b54c22a

File tree

4 files changed

+71
-3
lines changed

4 files changed

+71
-3
lines changed

01-data-model/frenchdeck.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
Card = collections.namedtuple('Card', ['rank', 'suit'])
44

5+
56
class FrenchDeck:
67
ranks = [str(n) for n in range(2, 11)] + list('JQKA')
78
suits = 'spades diamonds clubs hearts'.split()
89

910
def __init__(self):
10-
self._cards = [Card(rank, suit) for suit in self.suits
11-
for rank in self.ranks]
11+
self._cards = [
12+
Card(rank, suit) for suit in self.suits for rank in self.ranks
13+
]
1214

1315
def __len__(self):
1416
return len(self._cards)

01-data-model/frenchdeck_run.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from random import choice
2+
from frenchdeck import FrenchDeck, Card
3+
4+
beer_card = Card('7', 'diamonds')
5+
beer_card
6+
7+
deck = FrenchDeck()
8+
len(deck)
9+
10+
deck[:3]
11+
12+
deck[1::2]
13+
14+
Card('Q', 'hearts') in deck
15+
16+
Card('Z', 'clubs') in deck
17+
18+
for card in deck:
19+
print(card)
20+
21+
for card in reversed(deck):
22+
print(card)
23+
24+
for n, card in enumerate(deck, 1):
25+
print(n, card)
26+
27+
28+
choice(deck)
29+
30+
31+
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
32+
33+
34+
def spades_high(card):
35+
rank_value = FrenchDeck.ranks.index(card.rank)
36+
return rank_value * len(suit_values) + suit_values[card.suit]
37+
38+
39+
spades_high(Card('2', 'clubs'))
40+
spades_high(Card('A', 'spades'))
41+
42+
43+
for card in sorted(deck, key=spades_high):
44+
print(card)

01-data-model/vector2d.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
from math import hypot
22

3-
class Vector:
43

4+
class Vector:
55
def __init__(self, x=0, y=0):
66
self.x = x
77
self.y = y
88

99
def __repr__(self):
1010
return 'Vector(%r, %r)' % (self.x, self.y)
1111

12+
def __neg__(self):
13+
return Vector(-self.x, -self.y)
14+
1215
def __abs__(self):
1316
return hypot(self.x, self.y)
1417

18+
def __lt__(self, other):
19+
return (self.x > other.x) and (self.y > other.y)
20+
1521
def __bool__(self):
1622
return bool(abs(self))
1723

01-data-model/vector2d_run.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from vector2d import Vector
2+
3+
v1 = Vector(2, 4)
4+
v2 = Vector(1, 2)
5+
print(v1 + v2)
6+
7+
v = Vector(3, 4)
8+
print(abs(v))
9+
10+
print(v * 2)
11+
12+
print(v is True)
13+
14+
print(-v)
15+
16+
print(v1 < v2)

0 commit comments

Comments
 (0)