2017-12-03 13:05:05 +01:00
|
|
|
#!/usr/bin/env python2
|
|
|
|
# -*- coding: utf-8 -*-
|
2017-12-13 18:30:40 +01:00
|
|
|
"""
|
|
|
|
**ć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.
|
|
|
|
"""
|
2017-12-03 13:05:05 +01:00
|
|
|
|
2017-12-13 18:30:40 +01:00
|
|
|
class point:
|
|
|
|
|
|
|
|
def __len__(w_punkt):
|
|
|
|
dl = len(w_punkt)
|
|
|
|
print("ilosc wymiarow:", dl)
|
|
|
|
return (dl)
|
|
|
|
|
|
|
|
def __str__(point_number):
|
|
|
|
print("Wspolrzedne punktu",point_number)
|
|
|
|
|
|
|
|
def check_wartosc(wsp_punkt):
|
|
|
|
ok = False
|
|
|
|
while not ok:
|
|
|
|
try:
|
|
|
|
test_wsp_punkt = float(wsp_punkt)
|
|
|
|
ok = True
|
|
|
|
return (test_wsp_punkt)
|
|
|
|
except ValueError:
|
|
|
|
print("Podałeś błędną wartosc", wsp_punkt)
|
|
|
|
break
|
|
|
|
|
|
|
|
def is_numeric(e_lista):
|
|
|
|
if isinstance(float(e_lista), float) or isinstance(int(e_lista),int):
|
|
|
|
print(e_lista)
|
|
|
|
return("Is_numeric")
|
|
|
|
else:
|
|
|
|
print(e_lista)
|
|
|
|
return ("Is_not_numeric")
|
|
|
|
|
|
|
|
def add_wsp(ilosc_wsp):
|
|
|
|
tab = []
|
|
|
|
for i in range(ilosc_wsp):
|
|
|
|
wsp_punkt = input("Podaj wsp nr \n")
|
|
|
|
tab.append(point.check_wartosc(wsp_punkt))
|
|
|
|
return (list(tab))
|
|
|
|
|
|
|
|
def add_punkt():
|
|
|
|
ilosc_punkt = int(input("Podaj ilosc punktow: \n"))
|
|
|
|
ilosc_wsp = int(input("Podaj ilosc wsp: \n"))
|
|
|
|
lista_punkt = []
|
|
|
|
for i in range(ilosc_punkt):
|
|
|
|
lista_punkt.append(point.add_wsp(ilosc_wsp))
|
|
|
|
# print(lista_punkt)
|
|
|
|
# to_string(lista_punkt[i],i+1)
|
|
|
|
# __len__(lista_punkt[i])
|
|
|
|
return (lista_punkt)
|
|
|
|
|
|
|
|
def to_string(lista_punkt):
|
|
|
|
# print("Punkt nr:",punkt,"ma wymiary")
|
|
|
|
# print(lista_punkt)
|
|
|
|
print("\n Wspolrzedne")
|
|
|
|
k = 0
|
|
|
|
for i in lista_punkt:
|
|
|
|
# print(i)
|
|
|
|
k = k + 1
|
|
|
|
print("Wymiar nr:", k, "ma wartosc", i)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test = point.add_punkt()
|
|
|
|
for i in test:
|
|
|
|
print("\n Numer punktu",test.index(i)+1,"\n")
|
|
|
|
point.__str__(i)
|
|
|
|
point.to_string (i)
|
|
|
|
point.__len__(i)
|