From a9c3dfe5bdc99d0c2689d015515d81e859715c81 Mon Sep 17 00:00:00 2001 From: s45166 Date: Fri, 19 Jan 2018 23:14:23 +0100 Subject: [PATCH] Zadanie domowe labs03 --- labs03/task01.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ labs03/task02.py | 18 ++++++++++++++++++ labs03/task03.py | 17 +++++++++++++++++ labs03/task04.py | 37 +++++++++++++++++++++++++++++++++++++ labs03/task05.py | 31 +++++++++++++++++++++++++++++++ 5 files changed, 150 insertions(+) create mode 100644 labs03/task01.py create mode 100644 labs03/task02.py create mode 100644 labs03/task03.py create mode 100644 labs03/task04.py create mode 100644 labs03/task05.py diff --git a/labs03/task01.py b/labs03/task01.py new file mode 100644 index 0000000..3ad99db --- /dev/null +++ b/labs03/task01.py @@ -0,0 +1,47 @@ +# coding=utf-8 +''' +**ćwiczenie 1** +Każdy obiekt w Pythonie na wbudowaną funkcję ``id()``, która zwraca liczbę, która jest unikatowa i stała dla obiektu. +Pozwala ona w prosty sposób sprawdzić, który obiekt jest *mutable*a, który *immutable*: jeżeli po wykonaniu operacji, zwracana liczba jest stała, +to oznacza, że obiekt jest *mutable*. Sprawdź zachowanie funkcji na obiektach typy: + * lista, + * napis (string), + * liczba zmiennoprzecinkowa. +''' + +def mutCheck(item): + itemType = type(item) + if itemType is list: + id1 = id(item) + item[0] = "X" + id2 = id(item) + if id1 == id2: + return "List is mutable" + else: + return "List is inmutable" + + elif itemType is str: + id1 = id(item) + item += "Pam" + id2 = id(item) + if id1 == id2: + return "String is mutable" + else: + return "String is inmutable" + + elif itemType is float: + id1 = id(item) + item += 1 + id2 = id(item) + if id1 == id2: + return "Float is mutable" + else: + return "Float is inmutable" + + else: + return "Given item is not a list, string or a float type" + +toCheck = 2.1 + +x = mutCheck(toCheck) +print x \ No newline at end of file diff --git a/labs03/task02.py b/labs03/task02.py new file mode 100644 index 0000000..8fe745d --- /dev/null +++ b/labs03/task02.py @@ -0,0 +1,18 @@ +# coding=utf-8 +''' +**ćwiczenie 2** +Napisz generator, który będzie zwracać ``n`` kolejnych liczb ciągu Fibonacciego (``F(0)=1, F(1)=1, FN=F(N-1) + F(N-2)``). +''' + +def fibbonacci(): + x = 0 + y = 1 + while True: + yield x + x, y = y, x+y + +fibGen = fibbonacci() +n = 5 + +for i in range(n): + print fibGen.next() diff --git a/labs03/task03.py b/labs03/task03.py new file mode 100644 index 0000000..1fd983c --- /dev/null +++ b/labs03/task03.py @@ -0,0 +1,17 @@ +# coding=utf-8 +""" +**ćwiczenie 3** +Strona ``https://api.fixer.io/latest`` udostępnia kursy różnych walut w stosunku do euro. Napisz skrypt, który: + * pobierze zawartość JSONa. Wykorzystaj bibliotekę ``requests`` (http://docs.python-requests.org/en/master/). + * korzystając z biblioteki ``json`` przekształć go do obiketu typu JSON. + * Wyświetl wartość kursu EUR do PLN. +""" + +import requests +import json + +rawData = requests.get('https://api.fixer.io/latest') + +# Program dlugo sie uruchamia +pln = json.loads(rawData.text).get("rates").get("PLN") +print pln diff --git a/labs03/task04.py b/labs03/task04.py new file mode 100644 index 0000000..7757e98 --- /dev/null +++ b/labs03/task04.py @@ -0,0 +1,37 @@ +# coding=utf-8 +""" +**ćwiczenie 4** +Zainstaluj bibliotekę ``weather-api`` (https://pypi.python.org/pypi/weather-api). Korzystając z niej: + * Wypisz informacje o aktualnej pogodzie. + * Napisz funkcję, która zamieni stopnie ``F`` na ``C``. + * Korzystając z prognozy, znajdź dzień, w którym będzie najzimniej. Wypisz nazwę tygodnia (w języku polskim) i temperaturę w C. +""" + +from weather import Weather +from operator import itemgetter +from datetime import datetime + +def FhCs(x): + x = float(x) + cs = (x - 32)/1.8 + return round(cs, 1) + +userInput = raw_input('Please type a city name: ') + +weather = Weather() +city = weather.lookup_by_location(userInput) +cityNow = city.condition() +cityNowText = cityNow.text() +cityNowTemp = cityNow.temp() +cityCelsius = FhCs(cityNowTemp) + +print 'Current weather: ', cityNowText, ', ', cityCelsius, '°C' + +cityForecasts = city.forecast() + +x = {forecast.date() : forecast.low() for forecast in cityForecasts} +y = min(x.iteritems(), key=itemgetter(1)) + +date = datetime.strptime(y[0], "%d %b %Y") +minCels = FhCs(y[1]) +print date.strftime("%A"), minCels diff --git a/labs03/task05.py b/labs03/task05.py new file mode 100644 index 0000000..f68b11e --- /dev/null +++ b/labs03/task05.py @@ -0,0 +1,31 @@ +# coding=utf-8 +""" +**ćwiczenie 5** +Katalog scores zawiera 64 pliki tekstowe, które posiadają informacje o wysokości miary ``BLEU`` na różnych etapach trenowania modelu. Nazwa każdego pliku na postać ``model.iterXXXXXXX.npz.bleu``, gdzie ``XXXXXXX``, to liczba iteracji.Zawartość każdego pliku jest podobna i ma następującą formę: *BLEU = YY.YY, 44.4/18.5/9.3/5.0 (BP=1.000, ratio=1.072, hyp_len=45976, ref_len=42903)*, gdzie ``YY.YY`` to wartość miary ``BLEU``. Znajdź plik, który zawiera najwyższą wartość miary ``BLEU``. + * Wykorzystaj bibliotekę ``glob`` (https://docs.python.org/2/library/glob.html) + * Wyświetl tylko pełną nazwe pliku (wraz z ścieżką). +""" + +import os + +x = 0 + +#print os.listdir('.\scores') +cwd = os.getcwd() +os.chdir(cwd+'/scores') + +maxBleu = {} + +for f in os.listdir('.'): + with open(f, 'r') as plik: + for line in plik: + lineSplit = line.split() + maxValue = float(lineSplit[2].replace(',','')) + if not maxBleu: + maxBleu[f] = maxValue + else: + if maxValue > maxBleu.values()[0]: + maxBleu.clear() + maxBleu[f] = maxValue + +print maxBleu