forked from tdwojak/Python2017
Zadanie domowe labs03
This commit is contained in:
parent
dc99f2323d
commit
a9c3dfe5bd
47
labs03/task01.py
Normal file
47
labs03/task01.py
Normal 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
18
labs03/task02.py
Normal 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
17
labs03/task03.py
Normal 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
37
labs03/task04.py
Normal 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
31
labs03/task05.py
Normal 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
|
Loading…
Reference in New Issue
Block a user