Прикреплённый файл «vector.py»
Загрузка 1 #!/usr/bin/python
2 # coding: utf-8
3 '''
4 Реализовать класс vector (вектор из двух вещественных координат на плоскости). Операции: +, -, умножение и деление на число, скалярное умножение векторов.
5 '''
6
7 class vector:
8 '''Algebraic vector'''
9 def __init__(self, *argp):
10 '''You may use vector(x, y) or vector(sequence)'''
11 if len(argp) == 0: # нулевой вектор
12 self.x, self.y = (0.,0.)
13 elif len(argp) == 1: # объект с x и y или последовательность
14 if hasattr(argp[0],"x") and hasattr(argp[0],"y"):
15 self.x, self.y = argp[0].x,argp[0].y
16 else:
17 self.x, self.y = argp[0]
18 elif len(argp) == 2: # две точки
19 self.x, self.y = argp
20 else: # ошибка
21 raise ValueError, "Incorrect argument: {0}".format(argp)
22
23 def __str__(self):
24 return "<{0}:{1}>".format(self.x, self.y)
25
26 def __add__(self, vect):
27 return vector(self.x+vect.x, self.y+vect.y)
28
29 def __sub__(self, vect):
30 return vector(self.x-vect.x, self.y-vect.y)
31
32 def __div__(self, num):
33 return vector(self.x/num, self.y/num)
34
35 def __mul__(self, arg):
36 if hasattr(arg,"x") and hasattr(arg,"y"):
37 return self.x*arg.x+self.y*arg.y
38 else: # умножение на число
39 return vector(self.x*arg, self.y*arg)
40
41 def __rmul__(self, arg):
42 return self*arg
43
44 if __name__ == "__main__": # Если модуль вызвали как программу -- потестировать
45 # Test for incorrect __init__
46 a=vector(2.,5.)
47 b=vector([-10.,4.])
48 c=vector(a)/2
49 d=vector()
50 print "{0}+{1}={2}".format(a,d,a+d)
51 print "{0}+{1}={2}".format(a,b,a+b)
52 print "{0}-{1}={2}".format(a,b,a-b)
53 print "{0}*{1}={2}".format(a,b,a*b)
54 print "{0}*{1}={2}".format(a,c,a*c)
55 print "2*{0}*{1}={2}".format(a,b,2*a*b)
56 print "{0}/2*{1}={2}".format(a,c,a/2*c)
57 print "{0}*{1}*{2}={3}".format(a,b,c,a*b*c)
58 print "{0}*{1}*{2}={3}".format(b,c,a,b*c*a)
59 print "{0}*{1}*{2}={3}".format(c,a,b,c*a*b)
60 try:
61 vector(1,2,3)
62 except ValueError as Message:
63 print "vector(1,2,3):",Message
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:30, 2.0 KB) [[attachment:arbuz.py]]
- [получить | показать] (2011-09-26 11:35:30, 1.9 KB) [[attachment:orddict.py]]
- [получить | показать] (2011-09-26 11:35:30, 2.4 KB) [[attachment:vector.py]]
Вам нельзя прикреплять файлы к этой странице.