1
0
forked from tdwojak/Python2017

Zadanie domowe labs03

This commit is contained in:
s45166 2018-01-19 23:14:23 +01:00
parent dc99f2323d
commit a9c3dfe5bd
5 changed files with 150 additions and 0 deletions

47
labs03/task01.py Normal file
View File

@ -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

18
labs03/task02.py Normal file
View File

@ -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()

17
labs03/task03.py Normal file
View File

@ -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

37
labs03/task04.py Normal file
View File

@ -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

31
labs03/task05.py Normal file
View File

@ -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