import collections from random import choice import math Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self) -> None: 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, position): return self._cards[position] def spades_high(self, card: Card): rank_value = self.ranks.index(card.rank) print(rank_value*len()) # return rank_value def foo(self): self.suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) print(self.suit_values) def card_test(): deck = FrenchDeck() card = choice(deck) print(deck[1]) deck.spades_high(deck[1]) # print(len(deck)) # print(deck[0]) # Выбрать случайный элемент коллекции # print(choice(deck)) # print(deck[12::13]) # for card in deck: # print(card) # deck.foo() ''' vector: упрощенный класс, демонстрирующий некоторые специальные методы. ''' class Vector: def __init__(self, x=0, y=0) -> None: self.x = x self.y = y def __repr__(self) -> str: return f'Vector({self.x!r}, {self.y!r})' # Абсолютная величина def __abs__(self): return math.hypot(self.x, self.y) def __bool__(self): return bool(abs(self)) def __add__(self, other): 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) def vector_test(): v1 = Vector(3, 4) v2 = Vector(1, 2) v3 = v1 + v2 v4 = v3 * 2 print(abs(v1)) print(v3) print(v4) def main(): vector_test() def test(): # ranks = [str(n) for n in range(2, 11)] + list('JQKA') # print(ranks) Car = collections.namedtuple('Car', 'color mileage') car1 = Car('red', 150) print(car1.color, car1.mileage) print(car1._fields) if __name__ == '__main__': main() # test()