From 963a52dfc9a953df294a7e8cd86d2d237fed5760 Mon Sep 17 00:00:00 2001 From: s45160 Date: Sun, 10 Dec 2017 15:12:51 +0100 Subject: [PATCH] zadania z zajec 02-03.12.2017 --- labs03/Podstawy 2.ipynb | 8 ++++---- labs03/task04.py | 16 ++++++++++++++++ labs03/task05.py | 20 ++++++++++++++++++++ labs04/Klasy.ipynb | 12 ++++++------ labs04/README.md | 22 +++++++++++++++------- labs04/task01.py | 9 +++++++++ labs04/task02.py | 37 +++++++++++++++++++++++++++++++++++++ labs04/task03.py | 37 +++++++++++++++++++++++++++++++++++++ 8 files changed, 144 insertions(+), 17 deletions(-) create mode 100644 labs03/task04.py create mode 100644 labs03/task05.py diff --git a/labs03/Podstawy 2.ipynb b/labs03/Podstawy 2.ipynb index adf5795..7a591c4 100644 --- a/labs03/Podstawy 2.ipynb +++ b/labs03/Podstawy 2.ipynb @@ -232,13 +232,13 @@ { "ename": "TypeError", "evalue": "unhashable type: 'list'", - "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" - ] + ], + "output_type": "error" } ], "source": [ @@ -398,13 +398,13 @@ { "ename": "ValueError", "evalue": "I/O operation on closed file.", - "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlinia\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinia\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mValueError\u001b[0m: I/O operation on closed file." - ] + ], + "output_type": "error" } ], "source": [ diff --git a/labs03/task04.py b/labs03/task04.py new file mode 100644 index 0000000..ff6c1b6 --- /dev/null +++ b/labs03/task04.py @@ -0,0 +1,16 @@ +from weather import Weather + +weather = Weather() + +lookup = weather.lookup_by_location("Poznan") +astronomy = lookup.astronomy() +atmosphere = lookup.atmosphere() +condition = lookup.condition() +units = lookup.units() +wind = lookup.wind() + +print(astronomy) +print(atmosphere) +print(condition.text()) +print(units) +print(wind) \ No newline at end of file diff --git a/labs03/task05.py b/labs03/task05.py new file mode 100644 index 0000000..7a961a0 --- /dev/null +++ b/labs03/task05.py @@ -0,0 +1,20 @@ +from glob import glob + +iteracje = 0 + +for plik in glob('scores/model.iter*.npz.bleu'): + with open(plik,'r') as otwarty_plik: + fl = otwarty_plik.readline() + current_bleu = float(fl[fl.find("=")+1:fl.find(",")]) + + if iteracje == 0: + max_bleu = current_bleu + max_bleu_file = plik + else: + if current_bleu > max_bleu: + max_bleu = current_bleu + max_bleu_file = plik + iteracje += 1 + otwarty_plik.close() + +print(max_bleu_file) \ No newline at end of file diff --git a/labs04/Klasy.ipynb b/labs04/Klasy.ipynb index 1cd0a99..bb3dbee 100644 --- a/labs04/Klasy.ipynb +++ b/labs04/Klasy.ipynb @@ -309,13 +309,13 @@ { "ename": "AttributeError", "evalue": "'Parser' object has no attribute '__parse'", - "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mParser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mparser\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__parse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: 'Parser' object has no attribute '__parse'" - ] + ], + "output_type": "error" } ], "source": [ @@ -465,13 +465,13 @@ { "ename": "FileNotFoundError", "evalue": "[Errno 2] No such file or directory: 'nieistniejący_plik.txt'", - "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"nieistniejący_plik.txt\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplik\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'nieistniejący_plik.txt'" - ] + ], + "output_type": "error" } ], "source": [ @@ -614,13 +614,13 @@ { "ename": "MyError", "evalue": "Coś poszło nie tak!", - "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mMyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Coś poszło nie tak!\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mMyError\u001b[0m: Coś poszło nie tak!" - ] + ], + "output_type": "error" } ], "source": [ diff --git a/labs04/README.md b/labs04/README.md index cce5ca4..e61b165 100644 --- a/labs04/README.md +++ b/labs04/README.md @@ -1,18 +1,26 @@ **ćwiczenie 1** -Napisz funckję ``is_numeric``, która sprawdzi, czy każdy element z przekazanej listy jest typu int lub float. Wykorzystaj funcję ``isinstance()`` (https://docs.python.org/2/library/functions.html#isinstance). +Napisz funckję ``is_numeric``, która sprawdzi, czy każdy element z przekazanej listy jest typu int lub float. +Wykorzystaj funcję ``isinstance()`` (https://docs.python.org/2/library/functions.html#isinstance). **ćwiczenie 2** Napisz prostą hierarchię klas: - * Klasa bazowa ``Employee``, która będzie zawierać informacje o imieniu i nazwisku pracownika. Ponadto każdy pracownik otrzyma numer ``id``, który będzie unikatowy. Wykorzystaj do tego atrybut statyczny. Napisz metodę ``get_id``, która zwraca identyfikator pracownika. - * Klasy pochodna: ``Recruiter``, która ma dodatkową mtodę ``recruit``, która jako parament przyjmuje obiekt ``Employee`` i zapisuje jego ``id`` w liście ``self.recruited``. - * Klasa pochodna ``Programmer``. Klasa ``Programmer`` ma przyjąć w konstruktorze podstawowe informacje (imię i nazwisko) oraz obiekt rekturera. Ponadto stwórz atrybut ``recruiter``, który będzie przechowywać ``id`` rekrutera. + * Klasa bazowa ``Employee``, która będzie zawierać informacje o imieniu i nazwisku pracownika. + Ponadto każdy pracownik otrzyma numer ``id``, który będzie unikatowy. Wykorzystaj do tego atrybut statyczny. + Napisz metodę ``get_id``, która zwraca identyfikator pracownika. + * Klasy pochodna: ``Recruiter``, która ma dodatkową mtodę ``recruit``, która jako parament przyjmuje obiekt ``Employee`` + i zapisuje jego ``id`` w liście ``self.recruited``. + * Klasa pochodna ``Programmer``. Klasa ``Programmer`` ma przyjąć w konstruktorze podstawowe informacje (imię i nazwisko) + oraz obiekt rekturera. Ponadto stwórz atrybut ``recruiter``, który będzie przechowywać ``id`` rekrutera. **ć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. + * 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. + * 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. diff --git a/labs04/task01.py b/labs04/task01.py index 88741a4..981a613 100644 --- a/labs04/task01.py +++ b/labs04/task01.py @@ -1,3 +1,12 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +def is_numeric(a): + for i in a: + if not(isinstance(i,int)) and not(isinstance(i,float)): + return False + return True + +print(is_numeric([10,20,30])) +print(is_numeric([10.9,20.4,30])) +print(is_numeric(['abc','def',10])) \ No newline at end of file diff --git a/labs04/task02.py b/labs04/task02.py index 88741a4..33a7455 100644 --- a/labs04/task02.py +++ b/labs04/task02.py @@ -1,3 +1,40 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +class Employee: + _ID=1 + + def __init__(self, imie, nazwisko): + self.imie = imie + self.nazwisko = nazwisko + self.id = self._ID + self.__class__._ID += 1 + + def get_id(self): + return self.id + +class Recruiter(Employee): + recruited = [] + def recruit(self, Employee): + self.recruited.append(Employee.get_id()) + +class Programmer(Employee): + def __init__(self, imie, nazwisko, Recruiter): + Employee._ID += 1 + super().__init__(imie, nazwisko) + self.recruiter = Recruiter.id + +pracownik = Employee("Jan","Nowak") +pracownik2 = Employee("Adam","Kowalski") +pracownik3 = Employee("Piotr","Adolfowski") + +print(pracownik.get_id(),pracownik2.get_id(),pracownik3.get_id()) + +rekruter = Recruiter("Andrzej","Mściszewski") +rekruter.recruit(pracownik) +print(rekruter.id, rekruter.imie, rekruter.nazwisko, rekruter.recruited) + +programista = Programmer("Bill", "Gates", rekruter) + +print(programista.id, programista.imie, programista.nazwisko, programista.recruiter) + diff --git a/labs04/task03.py b/labs04/task03.py index 88741a4..a89feee 100644 --- a/labs04/task03.py +++ b/labs04/task03.py @@ -1,3 +1,40 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +import operator + +def is_numeric(a): + for i in a: + if not(isinstance(i,int)) and not(isinstance(i,float)): + return False + return True + + +def add(punkt1, punkt2): + if len(punkt1.wspolrzedne) == len(punkt2.wspolrzedne): + return Point(list(map(operator.add,punkt1.wspolrzedne,punkt2.wspolrzedne))) + else: + raise Exception("Dimension error") + +class Point: + wspolrzedne = [] + def __init__(self,wspolrzedne): + if is_numeric(wspolrzedne): + self.wspolrzedne = wspolrzedne + def to_string(self): + return "Współrzędne punktu to: " + str(self.wspolrzedne) + def __len__(self): + return len(self.wspolrzedne) + def __str__(self): + return self.to_string() + + + +punkt = Point([0,1,2]) +punkt2 = Point([10,15,20]) +punkt3 = add(punkt,punkt2) +#punkt4 = add(punkt,Point([10,20])) + +print(punkt.wspolrzedne, punkt2.wspolrzedne, punkt3.wspolrzedne)#, punkt4.wspolrzedne) +print(punkt.to_string()) +print(punkt3) \ No newline at end of file