From 1f09589b053a087659c98138b8fdb8879c442e30 Mon Sep 17 00:00:00 2001 From: s45165 Date: Sat, 16 Dec 2017 09:13:23 +0100 Subject: [PATCH] Merge branch 'master' of https://git.wmi.amu.edu.pl/tdwojak/Python2017 # Conflicts: # labs02/test_task.py --- labs04/task03.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/labs04/task03.py b/labs04/task03.py index 88741a4..336efd6 100644 --- a/labs04/task03.py +++ b/labs04/task03.py @@ -1,3 +1,68 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +#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 k# orzystając z funkcji print. + + +class DimensionError(Exception): + pass + + +class Point: + def __init__(self, coordinates): + self.coordinates = coordinates + + def is_numeric(coordinates): + for coordinate in coordinates: + + if isinstance(coordinate, (float, int, complex)) == True: + pass + + else: + return "{} is a not number".format(coordinate) + + def number_of_coordinates(self): + return len(self.coordinates) + + def add(self, point): + # check if this instance of class Point and the instance that was passed(parameter) has the same number of coordinates + if self.number_of_coordinates() == point.number_of_coordinates(): + + new_coordinates = [] + + for pos, coordinate in enumerate(self.coordinates): + new_coordinates.append(coordinate + point.coordinates[pos]) + + return Point(new_coordinates) + + else: + raise DimensionError("Two points do not have the same number of dimensions") + + def __str__(self): + string = "" + + for pos, coordinate in enumerate(self.coordinates): + if len(self.coordinates) - 1 != pos: + string = string + str(coordinate) + ", " + else: + string = string + str(coordinate) + + return "({})".format(string) + + def __len__(self): + + return len(self.coordinates) + + +coord = [1, 2, 4, 5, 6, 7] +p1 = Point(coord) + +print(p1) \ No newline at end of file