_getitem_

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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容