Прикреплённый файл «vector.py»
Загрузка 1 #!/usr/bin/env python3
2 '''
3 Класс «vector» на скорую руку
4
5 сложение векторов и с числом
6 выяснить тип операнда
7 умножение на вектор и на число
8
9 в т. ч. __rmul__
10
11 Не забыть делать именно вектор, type(self)(...)
12 '''
13
14 class vector:
15 '''Класс «вектор», поддерживающий
16 - индексацию (⇒ итерирование)
17 - поэлементное сложение и умножение с последовательностью
18 - сложение и умножение с числом'''
19 def __init__(self, seq=[]):
20 '''seq — произвольная последовательность'''
21 self.seq = list(seq)
22
23 def __len__(self):
24 return len(self.seq)
25
26 def __getitem__(self, n):
27 return self.seq[n]
28
29 def __op(self, other, fun):
30 '''Вычисление функции fun
31 - над всеми элементами self и other попарно, если other итерируемо;
32 - или же над всеми элементами self и значением other'''
33 if hasattr(other,"__getitem__"):
34 # type(self)(последовательность) конструирует экземпляр текущего класса
35 return type(self)(fun(a,b) for a,b in zip(self, other))
36 else:
37 return type(self)(fun(a,other) for a in self)
38
39 def __add__(self, other):
40 return self.__op(other, type(self.seq[0]).__add__)
41
42 def __radd__(self, other):
43 return self.__add__(other)
44
45 def __mul__(self, other):
46 return self.__op(other, type(self.seq[0]).__mul__)
47
48 def __rmul__(self, other):
49 return self.__mul__(other)
50
51 def __str__(self):
52 return "<"+",".join(str(s) for s in self)+">"
53
54 a = vector((1,2,3,4,5,6))
55
56 print(a,"+",1,"=",a+1)
57 print(1,"+",a,"=",1+a)
58 print(a,"+",a,"=",a+a)
59 l = 3,2,3,2,3,2
60 print(a,"+",l,"=",a+l)
61
62 print(a,"*",2,"=",a*2)
63 print(2,"*",a,"=",2*a)
64 print(a,"*",a,"=",a*a)
65 l = 3,2,3,2,3,2
66 print(a,"*",l,"=",a*l)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2017-08-13 18:17:03, 12.5 KB) [[attachment:pyginput.py]]
- [получить | показать] (2017-08-14 01:21:09, 2.1 KB) [[attachment:vector.py]]
Вам нельзя прикреплять файлы к этой странице.