forked from tdwojak/Python2017
Merge branch 'master' of https://git.wmi.amu.edu.pl/tdwojak/Python2017
# Conflicts: # labs02/test_task.py
This commit is contained in:
parent
e31fe96cbf
commit
1f09589b05
@ -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)
|
Loading…
Reference in New Issue
Block a user