aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Tools/demo/vector.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-10-03 17:09:02 +0200
committerGitHub <noreply@github.com>2022-10-03 17:09:02 +0200
commit64fe34371722d90448e0d1a0c04e7ed106f5f70a (patch)
tree3469166def39cfc26dfdce75062fddd5ab0d1d98 /Tools/demo/vector.py
parente6f9ec5c031bd996fcd5f463c407beef0b743b49 (diff)
downloadcpython-64fe34371722d90448e0d1a0c04e7ed106f5f70a.tar.gz
cpython-64fe34371722d90448e0d1a0c04e7ed106f5f70a.zip
gh-97681: Remove Tools/demo/ directory (#97682)
Remove the Tools/demo/ directory which contained old demo scripts. A copy can be found in the old-demos project: https://github.com/gvanrossum/old-demos Remove the following old demo scripts: * beer.py * eiffel.py * hanoi.py * life.py * markov.py * mcast.py * queens.py * redemo.py * rpython.py * rpythond.py * sortvisu.py * spreadsheet.py * vector.py Changes: * Remove a reference to the redemo.py script in the regex howto documentation. * Remove a reference to the removed Tools/demo/ directory in the curses documentation. * Update PC/layout/ to remove the reference to Tools/demo/ directory.
Diffstat (limited to 'Tools/demo/vector.py')
-rwxr-xr-xTools/demo/vector.py94
1 files changed, 0 insertions, 94 deletions
diff --git a/Tools/demo/vector.py b/Tools/demo/vector.py
deleted file mode 100755
index 6df1f50a899..00000000000
--- a/Tools/demo/vector.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-A demonstration of classes and their special methods in Python.
-"""
-
-class Vec:
- """A simple vector class.
-
- Instances of the Vec class can be constructed from numbers
-
- >>> a = Vec(1, 2, 3)
- >>> b = Vec(3, 2, 1)
-
- added
- >>> a + b
- Vec(4, 4, 4)
-
- subtracted
- >>> a - b
- Vec(-2, 0, 2)
-
- and multiplied by a scalar on the left
- >>> 3.0 * a
- Vec(3.0, 6.0, 9.0)
-
- or on the right
- >>> a * 3.0
- Vec(3.0, 6.0, 9.0)
-
- and dot product
- >>> a.dot(b)
- 10
-
- and printed in vector notation
- >>> print(a)
- <1 2 3>
-
- """
-
- def __init__(self, *v):
- self.v = list(v)
-
- @classmethod
- def fromlist(cls, v):
- if not isinstance(v, list):
- raise TypeError
- inst = cls()
- inst.v = v
- return inst
-
- def __repr__(self):
- args = ', '.join([repr(x) for x in self.v])
- return f'{type(self).__name__}({args})'
-
- def __str__(self):
- components = ' '.join([str(x) for x in self.v])
- return f'<{components}>'
-
- def __len__(self):
- return len(self.v)
-
- def __getitem__(self, i):
- return self.v[i]
-
- def __add__(self, other):
- "Element-wise addition"
- v = [x + y for x, y in zip(self.v, other.v)]
- return Vec.fromlist(v)
-
- def __sub__(self, other):
- "Element-wise subtraction"
- v = [x - y for x, y in zip(self.v, other.v)]
- return Vec.fromlist(v)
-
- def __mul__(self, scalar):
- "Multiply by scalar"
- v = [x * scalar for x in self.v]
- return Vec.fromlist(v)
-
- __rmul__ = __mul__
-
- def dot(self, other):
- "Vector dot product"
- if not isinstance(other, Vec):
- raise TypeError
- return sum(x_i * y_i for (x_i, y_i) in zip(self, other))
-
-
-def test():
- import doctest
- doctest.testmod()
-
-test()