forked from tdwojak/Python2017
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
# **ćwiczenie 3 (zadanie domowe) **
|
|
# Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wielowymiarowej:
|
|
# * Konstruktor ma przyjąc tylko 1 parametr: listę współrzednych. Wykorzystaj funkcję z pierwszego zadania, żeby sprawdzić, czy lista zawiera wyłącznie liczby.
|
|
# * Napisz metodę add, która dida dwa punkty po współrzędnych i zwróci obiekt typu ``Punkt``. Zaimplementuj własny wyjątek ``DimensionError``, który zostaje wyrzucony, jeżeli dodawany punkt ma inny wymiar.
|
|
# * Napisz metodę ``to\_string``, która zwróci łancuch znakowy, który w czytelny sposób przedstawi punkt.
|
|
# * Napisz metodę __len__, która zwróci liczbę współrzędnych punktu. Zobacz, czy możesz teraz wywołać funkcję len na obiekcie typy punkt.
|
|
# * Napisz metodę __str__, która bedzie działać dokładnie tak samo jak metoda ``to_string``. Wyświetl obiekt typy Point korzystając z funkcji print.
|
|
|
|
from labs04.task01 import is_numeric
|
|
|
|
|
|
class Point:
|
|
coordinates = []
|
|
|
|
def __init__(self, coordinates):
|
|
if is_numeric(coordinates):
|
|
self.coordinates = coordinates
|
|
else:
|
|
raise Exception("Coordinates are not numeric")
|
|
|
|
def to_string(self):
|
|
return str(self.coordinates)
|
|
|
|
def __len__(self):
|
|
return len(self.coordinates)
|
|
|
|
def __str__(self):
|
|
return self.to_string()
|
|
|
|
|
|
class DimensionError(Exception):
|
|
def __init__(self, text):
|
|
self.text = text
|
|
|
|
def __str__(self):
|
|
return self.text
|
|
|
|
|
|
def add(point_1, point_2):
|
|
if len(point_1.coordinates) != len(point_2.coordinates):
|
|
raise DimensionError("Coordinates have different dimensions")
|
|
else:
|
|
new_coordinates = [x + y for x, y in zip(point_1.coordinates, point_2.coordinates)]
|
|
return Point(new_coordinates)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
new_point = Point([5, 10, 12, 6])
|
|
print(new_point.__len__())
|
|
new_point_2 = Point([12, 23, 21, 16])
|
|
print(new_point_2.__str__())
|
|
new_point_3 = add(new_point, new_point_2)
|
|
|
|
print('1st point =', new_point)
|
|
print('2nd point =', new_point_2)
|
|
print('1st point + 2nd point = ', new_point_3)
|