diff --git a/labs03/task1.py b/labs03/task1.py new file mode 100644 index 0000000..4fcf228 --- /dev/null +++ b/labs03/task1.py @@ -0,0 +1,8 @@ +**cwiczenie 1** +Kazdy obiekt w Pythonie na wbudowana funkcje ``id()``, kt髍a zwraca liczbe, kt髍a jest unikatowa i stala dla obiektu. Pozwala ona w prosty spos骲 sprawdzic, kt髍y obiekt jest *mutable*a, kt髍y *immutable*: jezeli po wykonaniu operacji, zwracana liczba jest stala, to oznacza, ze obiekt jest *mutable*. Sprawdz zachowanie funkcji na obiektach typy: + * lista, + * napis (string), + * liczba zmiennoprzecinkowa. + + + diff --git a/labs03/task2.py b/labs03/task2.py new file mode 100644 index 0000000..f7669fd --- /dev/null +++ b/labs03/task2.py @@ -0,0 +1,15 @@ +**cwiczenie 2** +Napisz generator, kt髍y bedzie zwracac ``n`` kolejnych liczb ciagu Fibonacciego (``F(0)=1, F(1)=1, FN=F(N-1) + F(N-2)``). +""" + +def Fib(n): + for i in range(n): + if n==0: + return 1 + elif n==1: + return 1 + else: + return Fib(n-1)+Fib(n-2) + + +print Fib(10) \ No newline at end of file diff --git a/labs04/task01.py b/labs04/task01.py index 88741a4..197dd6b 100644 --- a/labs04/task01.py +++ b/labs04/task01.py @@ -1,3 +1,12 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +def is_numeric(n): + if isinstance(n,int): + return 'int' + elif isinstance(n,float): + return 'float' + elif isinstance(n,str): + return 'string' + else: + return 'unavailable' \ No newline at end of file diff --git a/labs04/task03.py b/labs04/task03.py index 88741a4..5b26587 100644 --- a/labs04/task03.py +++ b/labs04/task03.py @@ -1,3 +1,64 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +''' +**cwiczenie 3 (zadanie domowe) ** +Stw贸rz klase ``Point``, kt贸ra bedzie reprezentowac punkt w przestrzeni wielowymiarowej: + * Konstruktor ma przyjac tylko 1 parametr: liste wsp贸lrzednych. Wykorzystaj funkcje z pierwszego zadania, zeby sprawdzic, czy lista zawiera wylacznie liczby. + * Napisz metode add, kt贸ra dida dwa punkty (dwa wektory) po wsp贸lrzednych i zwr贸ci obiekt typu ``Punkt``. Zaimplementuj wlasny wyjatek ``DimensionError``, kt贸ry zostaje wyrzucony, jezeli dodawany punkt ma inny wymiar. + * Napisz metode ``to\_string``, kt贸ra zwr贸ci lancuch znakowy, kt贸ry w czytelny spos贸b przedstawi punkt. + * Napisz metode __len__, kt贸ra zwr贸ci liczbe wsp贸lrzednych punktu. Zobacz, czy mozesz teraz wywolac funkcje len na obiekcie typy punkt. + * Napisz metode __str__, kt贸ra bedzie dzialac dokladnie tak samo jak metoda ``to_string``. Wyswietl obiekt typy Point korzystajac z funkcji print. +''' +class DimensionError(Exception): + def __init__(self): + super().__init__(self) + self.msg="Inny wymiar" + + + +class Point(): + def __init__(self,list): + if Point.is_numeric(list)!=len(list): + self.points=[] + self.isnumeric = False + + else: + self.points=list + self.isnumeric=True + + + + def __add__(self, other): + new = [] + if self.isnumeric==False or other.isnumeric==False: + return "To nie sa liczby!" + elif len(self.points) != len(other.points): + return DimensionError() + else: + for i in range(len(self.points)): + new.append(self.points[i]+other.points[i]) + return new + + def __len__(self): + len=0 + for element in self.points: + len+=1 + return len + + + def to_string(self): + point_tuple = tuple(self.points) + return str(point_tuple) + + def __str__(self): + return (self.to_string()) + + + @staticmethod + def is_numeric(point): + value=0 + for i in point: + if isinstance(i, int) or isinstance(i, float): + value+=1 + return value