forked from tdwojak/Python2017
Task02, Task03 - completed
This commit is contained in:
parent
ce045b8d59
commit
7a694cac8b
@ -1,3 +1,64 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
class Employee:
|
||||||
|
id_pracownika=1
|
||||||
|
lista_id=[]
|
||||||
|
def __init__(self,imie,nazwisko):
|
||||||
|
self.imie = imie
|
||||||
|
self.nazwisko = nazwisko
|
||||||
|
self.id_pracownika = Employee.id_pracownika
|
||||||
|
Employee.id_pracownika += 1
|
||||||
|
self.lista_id.append(self.id_pracownika)
|
||||||
|
|
||||||
|
def get_id(self):
|
||||||
|
return (self.id_pracownika)
|
||||||
|
|
||||||
|
class Recruiter(Employee):
|
||||||
|
def __init__(self, imie, nazwisko):
|
||||||
|
|
||||||
|
Employee.__init__(self,imie,nazwisko)
|
||||||
|
self.recruited = []
|
||||||
|
|
||||||
|
def recruit(self,id_pracownika):
|
||||||
|
|
||||||
|
if id != self.id_pracownika:
|
||||||
|
if id_pracownika in Employee.lista_id:
|
||||||
|
self.recruited.append(id_pracownika)
|
||||||
|
else:
|
||||||
|
print("Nie ma takiego pracownika")
|
||||||
|
else:
|
||||||
|
print("Rekruter nie moze rekrutowac samego siebie")
|
||||||
|
|
||||||
|
class Programmer(Recruiter):
|
||||||
|
def __init__(self,imie,nazwisko,rekruter):
|
||||||
|
Recruiter.__init__(self,imie,nazwisko)
|
||||||
|
|
||||||
|
def recruited_by(self):
|
||||||
|
print(f'Osoba {self.imie} {self.nazwisko} zostala zrekrutowana przez rekrutera o ID {Recruiter.id_pracownika}')
|
||||||
|
|
||||||
|
|
||||||
|
print('********')
|
||||||
|
pracownik1 = Employee('Jan', 'Kowalski')
|
||||||
|
print(pracownik1.imie)
|
||||||
|
print(pracownik1.nazwisko)
|
||||||
|
print(pracownik1.get_id())
|
||||||
|
|
||||||
|
print('********')
|
||||||
|
|
||||||
|
pracownik2 = Employee('Anna', 'Nowak')
|
||||||
|
print(pracownik2.imie)
|
||||||
|
print(pracownik2.nazwisko)
|
||||||
|
print(pracownik2.get_id())
|
||||||
|
|
||||||
|
print('********')
|
||||||
|
|
||||||
|
pracownik3 = Programmer('Janusz','Gajos', 1)
|
||||||
|
print(pracownik3.imie)
|
||||||
|
print(pracownik3.nazwisko)
|
||||||
|
print(pracownik3.id_pracownika)
|
||||||
|
print(pracownik3.get_id())
|
||||||
|
pracownik3.recruited_by()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,65 @@
|
|||||||
#!/usr/bin/env python2
|
""" ćwiczenie 3 (zadanie domowe)
|
||||||
# -*- 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 doda 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.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class DimensionError(Exception):
|
||||||
|
"""Klasa odpowiadajaca za wyjatek współrzędnych <>3"""
|
||||||
|
def __init__(self, text):
|
||||||
|
self.text = text
|
||||||
|
def __str__(self):
|
||||||
|
return self.text
|
||||||
|
|
||||||
|
class Point:
|
||||||
|
"""Klasa reprezentująca punkt w 3D"""
|
||||||
|
def __is_numeric(self,n):
|
||||||
|
for i in n:
|
||||||
|
if not (isinstance(i, int) or isinstance(i,float)):
|
||||||
|
return False
|
||||||
|
return True and len(n) > 0
|
||||||
|
|
||||||
|
def __init__(self, xyz):
|
||||||
|
"""Konstruktor klasy Point, argument xyz - lista puntkwo w 3D. Warunkiem sa 3 wspolrzedne"""
|
||||||
|
if not self.__is_numeric(xyz):
|
||||||
|
raise DimensionError("Nieprawidlowe wspolrzedne!")
|
||||||
|
if len(xyz) != 3:
|
||||||
|
raise DimensionError("Nieprawidlowa liczba wspolrzednych (<> 3)")
|
||||||
|
self.x = xyz[0]
|
||||||
|
self.y = xyz[1]
|
||||||
|
self.z = xyz[2]
|
||||||
|
|
||||||
|
def to_string(self):
|
||||||
|
"""Wypisuje wektor współrzędnych punktu w 3D jako string"""
|
||||||
|
return '[' + ','.join([str(self.x), str(self.y), str(self.z)]) + ']'
|
||||||
|
|
||||||
|
def add(oPoint1, oPoint2):
|
||||||
|
"""Metoda statyczna klasy Point. Zwraca sumę współrzędnych danych 2 punktów w 3D
|
||||||
|
|
||||||
|
arg1 - obiekt klasy Punkt
|
||||||
|
arg2 - obiekt klasy Punkt
|
||||||
|
"""
|
||||||
|
l1 = [oPoint1.x, oPoint1.y, oPoint1.z]
|
||||||
|
l2 = [oPoint2.x, oPoint2.y, oPoint2.z]
|
||||||
|
nl = [c1+c2 for c1, c2 in zip(l1, l2)]
|
||||||
|
return Point(nl)
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
"""Zwraca liczbe wspolrzednych"""
|
||||||
|
return 3
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
"""Funkcja string dla klasy Point, wypisuje wspolrzedne punktu jako string"""
|
||||||
|
return self.to_string()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
pkt1 = Point([4, 8, 12])
|
||||||
|
print('pkt1 =', pkt1)
|
||||||
|
pkt2 = Point([-1, 0, 3])
|
||||||
|
print('pkt2 =', pkt2)
|
||||||
|
pkt3 = Point.add(pkt1, pkt2)
|
||||||
|
print('pkt3 = pkt1 (+) pkt2 = ', pkt3)
|
Loading…
Reference in New Issue
Block a user