Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.