card
# encoding: utf-8
"""
@version: python3.6
@author: kaenlee @contact: lichaolfm@163.com
@software: PyCharm
@time: 2018/4/28 15:58
purpose:
"""
import sys
import numpy as np
from random import choice
"""
[] call __getitem__
"""
import collections
Card = collections.namedtuple(typename="Card", field_names=["rank", "suit"])
class FrenchDeck:
ranks = [str(n) for n in range(2, 11)] + list("JOKA")
suits = "spades diamonds clubs hearts".split()
def __init__(self):
self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, index):
return self._cards[index]
bear_card = Card("7", "diamonds")
print(bear_card)
deck = FrenchDeck()
print(len(deck))
print(deck[-1])
print(choice(deck))
"""
beacuse __getitem__ use on self._cards a list:
class support slicing iterable
"""
print(deck[:10])
print(bear_card in deck)
"""
sorted
"""
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
def spades_high(card):
# return a int
rank_value = FrenchDeck.ranks.index(card.rank) # 先根据card的rank属性来, FeachDeck 的ranks成员
# print(card.rank, rank_value)
return rank_value * len(suit_values) + suit_values[card.suit]
print(spades_high(Card("3", "clubs")))
for i in sorted(deck, key=spades_high): # 降序排列, 先按数字后按牌型
print(i)
# break
vector
# encoding: utf-8
"""
@version: python3.6
@author: kaenlee @contact: lichaolfm@163.com
@software: PyCharm
@time: 2018/4/30 10:51
purpose:
"""
import sys
import numpy as np
from math import hypot
class Vector(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __repr__(self):
# 相比__str__: 如果没有__str__则会用__repr替代
return "Vector({0}, {1})".format(self.x, self.y)
def __abs__(self):
return hypot(self.x, self.y)
def __bool__(self):
# return bool(abs(self))
return bool(self.__abs__())
def __add__(self, other):
assert isinstance(other, Vector)
x = self.x + other.x
y = self.y + other.y
return Vector(x, y)
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)
if __name__ == '__main__':
vec_0 = Vector()
vec_1 = Vector(1, 1)
print(bool(vec_0))
print(str(vec_1))
print(vec_1)