forked from tdwojak/Python2017
zadanie domowe
This commit is contained in:
parent
d92d5c3f6f
commit
0d6fb2847e
8
labs03/task1.py
Normal file
8
labs03/task1.py
Normal file
@ -0,0 +1,8 @@
|
||||
**cwiczenie 1**
|
||||
Kazdy obiekt w Pythonie na wbudowana funkcje ``id()``, która zwraca liczbe, która jest unikatowa i stala dla obiektu. Pozwala ona w prosty sposób sprawdzic, który obiekt jest *mutable*a, który *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.
|
||||
|
||||
|
||||
|
15
labs03/task2.py
Normal file
15
labs03/task2.py
Normal file
@ -0,0 +1,15 @@
|
||||
**cwiczenie 2**
|
||||
Napisz generator, który 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)
|
@ -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'
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user