Python2017/labs04/task03.py

81 lines
2.7 KiB
Python
Raw Normal View History

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)