Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
81731a6026 | |||
ef426e0c64 | |||
2e6466143b | |||
4c0515a9fa | |||
6a3a51aa64 | |||
d7ea17b325 | |||
eef90997bc | |||
ed8ed03e5b | |||
5352a03460 | |||
7e16e6d4d7 | |||
d588bcddf3 | |||
16cd898241 | |||
c723ed6bb1 | |||
233a2250f6 | |||
ee29b2e399 | |||
3c8fb8cd60 | |||
6c2b8ac2f9 | |||
3a65bc85f2 |
@ -7,6 +7,7 @@ która zawiera tylko elementy z list o parzystych indeksach.
|
||||
"""
|
||||
|
||||
def even_elements(lista):
|
||||
return lista[::2]
|
||||
pass
|
||||
|
||||
|
||||
|
@ -6,7 +6,11 @@
|
||||
"""
|
||||
|
||||
def days_in_year(days):
|
||||
pass
|
||||
if days % 4 == 0 and days % 100 > 0 or days % 400 == 0:
|
||||
return 366
|
||||
else:
|
||||
return 365
|
||||
|
||||
|
||||
def tests(f):
|
||||
inputs = [[2015], [2012], [1900], [2400], [1977]]
|
||||
|
@ -13,7 +13,11 @@ jak 'set', która przechowuje elementy bez powtórzeń.)
|
||||
|
||||
|
||||
def oov(text, vocab):
|
||||
pass
|
||||
rett = list()
|
||||
for s in text.lower().split():
|
||||
if not s in vocab:
|
||||
rett.append(s)
|
||||
return set(rett)
|
||||
|
||||
|
||||
|
||||
|
@ -7,7 +7,12 @@ Jeśli podany argument jest mniejszy od 1 powinna być zwracana wartość 0.
|
||||
"""
|
||||
|
||||
def sum_from_one_to_n(n):
|
||||
pass
|
||||
if n < 1:
|
||||
return 0
|
||||
sum = 0
|
||||
for i in range(n+1):
|
||||
sum += i
|
||||
return sum
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import math as mt
|
||||
|
||||
"""
|
||||
Napisz funkcję euclidean_distance obliczającą odległość między
|
||||
@ -10,7 +11,15 @@ np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
|
||||
"""
|
||||
|
||||
def euclidean_distance(x, y):
|
||||
pass
|
||||
x1 = x[0]
|
||||
y1 = x[1]
|
||||
z1 = x[2]
|
||||
|
||||
x2 = y[0]
|
||||
y2 = y[1]
|
||||
z2 = y[2]
|
||||
|
||||
return mt.sqrt((x1 - x2)**2 + (y1 - y2)**2 + (z1 - z2)**2)
|
||||
|
||||
def tests(f):
|
||||
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
||||
|
@ -10,7 +10,13 @@ ma być zwracany napis "It's not a Big 'No!'".
|
||||
"""
|
||||
|
||||
def big_no(n):
|
||||
pass
|
||||
if n < 5:
|
||||
return "It's not a Big 'No!'"
|
||||
t = list('N')
|
||||
for i in range(n):
|
||||
t.append('O')
|
||||
return ''.join(t) + '!'
|
||||
|
||||
|
||||
def tests(f):
|
||||
inputs = [[5], [6], [2]]
|
||||
|
@ -6,7 +6,10 @@ Napisz funkcję char_sum, która dla zadanego łańcucha zwraca
|
||||
sumę kodów ASCII znaków.
|
||||
"""
|
||||
def char_sum(text):
|
||||
pass
|
||||
s = 0
|
||||
for z in text:
|
||||
s +=ord(z)
|
||||
return s
|
||||
|
||||
def tests(f):
|
||||
inputs = [["this is a string"], ["this is another string"]]
|
||||
|
@ -7,7 +7,11 @@ przez 3 lub 5 mniejszych niż n.
|
||||
"""
|
||||
|
||||
def sum_div35(n):
|
||||
pass
|
||||
s = 0
|
||||
for i in range(n):
|
||||
if (i % 3 == 0) or (i % 5 == 0):
|
||||
s+=i
|
||||
return s
|
||||
|
||||
def tests(f):
|
||||
inputs = [[10], [100], [3845]]
|
||||
|
@ -7,9 +7,17 @@ na podobnie wyglądające cyfry: 'e' na '3', 'l' na '1', 'o' na '0', 't' na '7'.
|
||||
Np. leet('leet') powinno zwrócić '1337'.
|
||||
"""
|
||||
|
||||
import string
|
||||
|
||||
def leet_speak(text):
|
||||
pass
|
||||
dt = {"e":"3", "l":"1", "o":"0", "t":"7"}
|
||||
ltx = text.lower()
|
||||
ret = text + ""
|
||||
for k in list(ltx):
|
||||
v = dt.get(k)
|
||||
if v is not None:
|
||||
ret = ret.replace(k, v)
|
||||
return ret
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -7,9 +7,15 @@ Napisz funkcję pokemon_speak, która zamienia w podanym napisie co drugą liter
|
||||
na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
|
||||
"""
|
||||
|
||||
import string as str
|
||||
|
||||
def pokemon_speak(text):
|
||||
pass
|
||||
lt = list(text)
|
||||
for i in range(len(lt)):
|
||||
if i%2 == 0:
|
||||
lt[i] = lt[i].upper()
|
||||
return ''.join(lt)
|
||||
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -9,8 +9,13 @@ Oba napisy będą składać się wyłacznie z małych liter.
|
||||
"""
|
||||
|
||||
def common_chars(string1, string2):
|
||||
pass
|
||||
|
||||
t1 = list(''.join(string1.split(' ')))
|
||||
t2 = list(''.join(string2.split(' ')))
|
||||
rett = list()
|
||||
for lit in t1:
|
||||
if lit in t2:
|
||||
rett.append(lit)
|
||||
return sorted(set(rett))
|
||||
|
||||
def tests(f):
|
||||
inputs = [["this is a string", "ala ma kota"]]
|
||||
|
29
labs03/task01.py
Normal file
29
labs03/task01.py
Normal file
@ -0,0 +1,29 @@
|
||||
"""
|
||||
**ć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.
|
||||
"""
|
||||
|
||||
|
||||
print("id(mL)")
|
||||
mL = list()
|
||||
print(id(mL))
|
||||
mL.append(4)
|
||||
print(id(mL))
|
||||
|
||||
print("id(mS)")
|
||||
mS = "my string"
|
||||
print(id(mS))
|
||||
mS = mS + "xyz"
|
||||
print(id(mS))
|
||||
|
||||
|
||||
print("id(mF)")
|
||||
mF = 2.71
|
||||
print(id(mF))
|
||||
mF =3.14 * mF
|
||||
print(id(mF))
|
||||
|
||||
|
26
labs03/task02.py
Normal file
26
labs03/task02.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
**ć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 Fibogen(n):
|
||||
if n == 0:
|
||||
yield 1
|
||||
if n == 1:
|
||||
yield 1
|
||||
yield 1
|
||||
if n >= 2 :
|
||||
i, j = 1, 1
|
||||
yield 1
|
||||
yield 1
|
||||
for k in range(2, n):
|
||||
f = i + j
|
||||
i = j
|
||||
j = f
|
||||
yield f
|
||||
|
||||
|
||||
for i in Fibogen(15):
|
||||
print(i)
|
||||
|
||||
|
19
labs03/task03.py
Normal file
19
labs03/task03.py
Normal file
@ -0,0 +1,19 @@
|
||||
"""
|
||||
**ć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 as rr
|
||||
import json as jsn
|
||||
|
||||
url_rates = "https://api.fixer.io/latest"
|
||||
website = rr.get(url_rates)
|
||||
json_s = website.text
|
||||
ratesJson = jsn.loads(json_s)
|
||||
#print(ratesJson)
|
||||
#print("EUR/PLN = ", ratesJson['rates']['PLN'])
|
||||
print(ratesJson['rates']['PLN'])
|
74
labs03/task04.py
Normal file
74
labs03/task04.py
Normal file
@ -0,0 +1,74 @@
|
||||
"""
|
||||
ć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.
|
||||
"""
|
||||
|
||||
|
||||
import weather as wth
|
||||
import locale
|
||||
|
||||
dayPL = {
|
||||
'Mon':'Poniedziałek',
|
||||
'Tue':'Poniedziałek',
|
||||
'Wed':'Środa',
|
||||
'Thu':'Czwartek',
|
||||
'Fri':'Piątek',
|
||||
'Sat':'Sobota',
|
||||
'Sun':'Niedziela'
|
||||
}
|
||||
|
||||
mthPL = {
|
||||
'Jan':'Styczeń',
|
||||
'Feb':'Luty',
|
||||
'Mar':'Marzec',
|
||||
'Apr':'Kwiecień',
|
||||
'May':'Maj',
|
||||
'Jun':'Czerwiec',
|
||||
'Jul':'Lipiec',
|
||||
'Aug':'Sierpień',
|
||||
'Sep':'Wrzesień',
|
||||
'Oct':'Październik',
|
||||
'Nov':'Listopad',
|
||||
'Dec':'Grudzień'
|
||||
}
|
||||
|
||||
def fconvF2C (pFdeg):
|
||||
return round((float(pFdeg) - 32) / 1.8, 1)
|
||||
|
||||
m = "Katowice"
|
||||
wth = wth.Weather()
|
||||
ort = wth.lookup_by_location(m)
|
||||
pog = ort.condition()
|
||||
pd = pog.date()
|
||||
|
||||
men = pd.split(' ')[2]
|
||||
mpl = mthPL[men]
|
||||
|
||||
pdd = pd.replace(',','').split(' ')[0]
|
||||
#dpl = pd.replace(pdd, dayPL[pdd])
|
||||
dpl = pd.replace(pdd, dayPL[pdd]).replace(men, mpl)
|
||||
|
||||
print("Aktualna pogoda w:", m)
|
||||
print("Data = ", dpl, "\nPogoda ogólnie (ang.) = ", pog.text(), "\nTemperatura = ", fconvF2C(pog.temp()), "C (", pog.temp(), "F )")
|
||||
|
||||
progs = ort.forecast()
|
||||
tmin = pog.temp()
|
||||
dmin = pog.date()
|
||||
for pr in progs:
|
||||
if pr.low() < tmin:
|
||||
tmin = pr.low()
|
||||
dmin = pr.date()
|
||||
# print(pr.date())
|
||||
# print(pr.text())
|
||||
# print(pr.high())
|
||||
# print(pr.low())
|
||||
print("Przewidywana minimalna temperatura dla:", m)
|
||||
mth = dmin.split(' ')[1]
|
||||
mpl = mthPL[mth]
|
||||
print(dmin.replace(mth, mpl), "|", fconvF2C(float(tmin)), "st. C")
|
||||
|
||||
|
||||
|
36
labs03/task05.py
Normal file
36
labs03/task05.py
Normal file
@ -0,0 +1,36 @@
|
||||
"""
|
||||
ć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 glob
|
||||
|
||||
def maxBleu(dir = './scores/', retmax = False):
|
||||
maxbleu, fmax = None, None
|
||||
for fn in glob.glob(dir+'model.iter*.npz.bleu'):
|
||||
with open(fn, 'r') as f:
|
||||
nmax = f.readline().replace(',', '').split(' ')[2]
|
||||
if (maxbleu is None) or (float(maxbleu) < float(nmax)):
|
||||
maxbleu = nmax
|
||||
fmax = fn
|
||||
else:
|
||||
pass
|
||||
if retmax:
|
||||
retval = fmax+' : '+maxbleu
|
||||
else:
|
||||
retval = fmax
|
||||
return retval
|
||||
|
||||
if __name__ == "__main__":
|
||||
#print(maxBleu(retmax = True))
|
||||
print(maxBleu())
|
||||
|
||||
|
||||
|
||||
|
@ -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<ipython-input-6-80ee186598d3>\u001b[0m in \u001b[0;36m<module>\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<ipython-input-20-41928d542bef>\u001b[0m in \u001b[0;36m<module>\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<ipython-input-36-4fb306b42ebc>\u001b[0m in \u001b[0;36m<module>\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": [
|
||||
|
@ -1,3 +1,18 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
**ć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).
|
||||
"""
|
||||
|
||||
def is_numeric(my_list):
|
||||
for item in my_list:
|
||||
if not (isinstance(item, int) or isinstance(item, float)):
|
||||
return False
|
||||
return True and len(my_list) > 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(is_numeric([]))
|
||||
|
@ -1,3 +1,37 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
**ć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.
|
||||
"""
|
||||
|
||||
class Employee:
|
||||
maxid = 0
|
||||
def __init__(self, vorname, name):
|
||||
self.imie = vorname
|
||||
self.nazwisko = name
|
||||
Employee.maxid += 1
|
||||
self.id = Employee.maxid
|
||||
|
||||
def get_id(self):
|
||||
return self.id
|
||||
|
||||
class Recruiter(Employee):
|
||||
def __init__(self, vorname, name):
|
||||
super().__init__(vorname, name)
|
||||
self.recruited = list()
|
||||
def recruit(self, oEmployee):
|
||||
self.recruited.append(oEmployee.id)
|
||||
|
||||
class Programmer(Employee):
|
||||
def __init__(self, vorname, name, oRecruiter):
|
||||
super().__init__(vorname, name)
|
||||
self.recruiter = oRecruiter.get_id()
|
||||
|
@ -1,3 +1,80 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
**ć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.
|
||||
* 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 reprezentująca wyjątek ilości 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.
|
||||
Pola publiczne:
|
||||
x, y , z - współrzędne punktu w 3 D
|
||||
"""
|
||||
|
||||
def __is_numeric(self, my_list):
|
||||
"""Zwraca True jeśli podana lista argumentów ma dokładnie 3 elementy typu int lub float
|
||||
argument my_list - lista 3 współzednych liczbowych typu int lub float"""
|
||||
for item in my_list:
|
||||
if not (isinstance(item, int) or isinstance(item, float)):
|
||||
return False
|
||||
return True and len(my_list) > 0
|
||||
|
||||
def __init__(self, xyz):
|
||||
"""Konstruktor klasy Point
|
||||
argument xyz - lista współrzędnych punktu w 3D. Musi zawierać 3 współrzędne!
|
||||
"""
|
||||
if not self.__is_numeric(xyz):
|
||||
raise DimensionError("Invalid coordindates!. Check the numbers!")
|
||||
if len(xyz) != 3:
|
||||
raise DimensionError("Invalid number of coordindates! (<> 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 liczbę współrzędnych = 3 bo punkt w przestrzeni 3D :-)"""
|
||||
return 3
|
||||
|
||||
def __str__(self):
|
||||
"""Funkcja string dla klasy Point. Wypisuje współrzędne punktu jako string"""
|
||||
return self.to_string()
|
||||
|
||||
####################################################
|
||||
|
||||
if __name__ == "__main__":
|
||||
p1 = Point([1, 2, 3])
|
||||
print('p1 =', p1)
|
||||
p2 = Point([-3, 0, -2])
|
||||
print('p2 =', p2)
|
||||
p3 = Point.add(p1, p2)
|
||||
print('p3 = p1 (+) p2 = ', p3)
|
@ -1,11 +1,14 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
def suma(liczby):
|
||||
pass
|
||||
s = 0
|
||||
for i in range(len(liczby)):
|
||||
s += float(liczby[i])
|
||||
return s
|
||||
|
||||
def main():
|
||||
print(summa([1, 2, 3, 4]))
|
||||
print(suma([1, 2, 3, 4]))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -0,0 +1,9 @@
|
||||
import task00 as t0
|
||||
import sys
|
||||
|
||||
def main():
|
||||
liczby = sys.argv[1:]
|
||||
print(t0.suma(liczby))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -0,0 +1,13 @@
|
||||
import task00 as t0
|
||||
import sys
|
||||
|
||||
def main():
|
||||
liczby = sys.argv[1:]
|
||||
try:
|
||||
print(t0.suma(liczby))
|
||||
except ValueError:
|
||||
print("Wrong types of arguments passed!")
|
||||
raise
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -0,0 +1,20 @@
|
||||
import task00 as t0
|
||||
import sys, argparse
|
||||
|
||||
def main():
|
||||
#liczby = sys.argv[1:]
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("floats", help="Lista liczb zmiennoprzecinkowych", nargs = "+")
|
||||
args = parser.parse_args()
|
||||
|
||||
liczby = args.floats
|
||||
|
||||
try:
|
||||
print(t0.suma(liczby))
|
||||
except ValueError:
|
||||
print("Wrong types of arguments passed!")
|
||||
raise
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -7,6 +7,7 @@ Zwraca liczbę słów, znaków i linii.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
|
||||
def count_lines(text):
|
||||
@ -29,11 +30,50 @@ def wc(text):
|
||||
chars = count_chars(text)
|
||||
return lines, words, chars
|
||||
|
||||
#Moja klasa wyjątku
|
||||
class ArgException(Exception):
|
||||
def __init__(self, text):
|
||||
self.text = text
|
||||
def __str__(self):
|
||||
return self.text
|
||||
|
||||
def main():
|
||||
""" main """
|
||||
print(wc(sys.stdin.read()))
|
||||
msg_usage = "Usage: task04.py [-h | -l | -w | -c] [file_name | stdin]"
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-l", help="-l returns number of lines", action = 'store_true')
|
||||
parser.add_argument("-w", help="-w returns number of words", action = 'store_true')
|
||||
parser.add_argument("-c", help="-c returns number of characters", action = 'store_true')
|
||||
parser.add_argument("file_name", help="This is path to the text input file to read the lines from or stdin if not given", type = argparse.FileType('rt'), nargs='?')
|
||||
args = parser.parse_args()
|
||||
if args.l + args.w + args.c > 1: #Jeśli więcej niż 1 argument {-l, -w, -c}
|
||||
print(msg_usage, "\nToo many arguments passed!")
|
||||
#print(args.l, args.w, args.c, args.input)
|
||||
return
|
||||
|
||||
res = "" #Zwracany napis
|
||||
|
||||
if args.file_name is None:
|
||||
fh_lines = sys.stdin.read()
|
||||
else:
|
||||
fh_lines = args.file_name.read()
|
||||
|
||||
if args.l:
|
||||
res = count_lines(fh_lines)
|
||||
elif args.w:
|
||||
res = count_words(fh_lines)
|
||||
elif args.c:
|
||||
res = count_chars(fh_lines)
|
||||
elif not (args.l and args.w and args.c):
|
||||
res = wc(fh_lines)
|
||||
else: #Coś jest nie tak!
|
||||
raise ArgException(msg_usage, "\nError in arguments!")
|
||||
|
||||
#print(wc(sys.stdin.read()))
|
||||
# print(wc(fh_lines))
|
||||
|
||||
#print(fh_lines)
|
||||
print(res)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -1,15 +1,32 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pandas as pd, numpy as np
|
||||
import argparse, sys, os
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
# 1. Napisz funkcje, która wczyta zestaw danych z pliku mieszkania.csv i zwróci obiekt typu DataFrame.
|
||||
# Jeżeli wszystko zostało zrobione poprawnie, powinno się wyśtwietlić 5 pierwszych wierszy.
|
||||
def wczytaj_dane():
|
||||
pass
|
||||
return pd.read_csv('mieszkania.csv', sep = ',')
|
||||
|
||||
# 1' Wczytaj_dane z parametrem
|
||||
def wczytaj_dane_2(file_name):
|
||||
return pd.read_csv(file_name, sep = ',')
|
||||
|
||||
# 2. Uzupełnij funkcję most_common_room_number, która zwróci jaka jest najpopularniejsza liczba pokoi w ogłoszeniach.
|
||||
# Funkcji powinna zwrócić liczbę całkowitą.
|
||||
def most_common_room_number(dane):
|
||||
pass
|
||||
rooms = dane['Rooms']
|
||||
return rooms.value_counts(sort = True, ascending = False).index[0]
|
||||
|
||||
# 3. Uzupełnij kod w funkcji cheapest_flats(dane, n), która wzróci n najtańszych ofert mieszkań. Wzrócony obiekt typu DataFrame.
|
||||
def cheapest_flats(dane, n):
|
||||
pass
|
||||
return dane['Expected'].sort_values(ascending = True).head(n).to_string(index = False).split('\n')
|
||||
|
||||
# 4. Napisz funkcje find_borough(desc), która przyjmuje 1 argument typu string i zwróci jedną z dzielnic zdefiniowaną w liście dzielnice.
|
||||
# Funkcja ma zwrócić pierwszą (wzgledem kolejności) nazwę dzielnicy, która jest zawarta w desc. Jeżeli żadna nazwa nie została odnaleziona, zwróć Inne.
|
||||
def find_borough(desc):
|
||||
dzielnice = ['Stare Miasto',
|
||||
'Wilda',
|
||||
@ -19,36 +36,71 @@ def find_borough(desc):
|
||||
'Winogrady',
|
||||
'Miłostowo',
|
||||
'Dębiec']
|
||||
pass
|
||||
|
||||
for first_d in dzielnice:
|
||||
if first_d in desc:
|
||||
return first_d
|
||||
return "Inne"
|
||||
|
||||
# 5. Dodaj kolumnę Borough, która będzie zawierać informacje o dzielnicach i powstanie z kolumny Localization. Wykorzystaj do tego funkcję find_borough.
|
||||
def add_borough(dane):
|
||||
pass
|
||||
dane['Borough'] = dane['Location'].map(lambda Location: find_borough(Location))
|
||||
|
||||
# 6. Uzupełnij funkcje write_plot, która zapisze do pliku filename wykres słupkowy przedstawiający liczbę ogłoszeń mieszkań z podziałem na dzielnice.
|
||||
def write_plot(dane, filename):
|
||||
pass
|
||||
add_borough(dane)
|
||||
hist_data = dane['Borough'].value_counts()
|
||||
h = hist_data.plot(kind = 'bar', grid = True, figsize = (10, 8))
|
||||
plt.savefig(filename)
|
||||
|
||||
# 7. Napisz funkcje mean_price, która zwróci średnią cenę mieszkania room_numer-pokojowego.
|
||||
def mean_price(dane, room_number):
|
||||
pass
|
||||
return dane.loc[dane['Rooms'] == room_number]['Expected'].mean()
|
||||
|
||||
# 8. Uzupełnij funkcje find_13, która zwróci listę dzielnic, które zawierają ofertę mieszkanie na 13 piętrze.
|
||||
def find_13(dane):
|
||||
pass
|
||||
return dane.loc[dane['Floor'] == 13]['Borough'].to_string(index=False).split('\n')
|
||||
|
||||
# 9. Napisz funkcje find_best_flats, która zwróci wszystkie ogłoszenia mieszkań, które znajdują się na Winogradach, mają 3 pokoje i są położone na 1 piętrze.
|
||||
def find_best_flats(dane):
|
||||
pass
|
||||
return dane.loc[(df['Borough'] == 'Winogrady') & (dane['Floor'] == 1) & (dane['Rooms'] == 3)]
|
||||
|
||||
# 10. (dodatkowe): Korzystając z pakietu sklearn zbuduj model regresji liniowej, która będzie wyznaczać cenę mieszkania na podstawie wielkości mieszkania i liczby pokoi.
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("file_name", help = "File mieszkania.csv will be used by default", type=argparse.FileType('rt'), nargs='?')
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.file_name is None:
|
||||
file_csv = 'mieszkania.csv'
|
||||
else:
|
||||
file_csv = args.file_name.name
|
||||
|
||||
###dane = wczytaj_dane_2(file_csv)
|
||||
dane = wczytaj_dane()
|
||||
print(dane[:5])
|
||||
|
||||
print("Najpopularniejsza liczba pokoi w mieszkaniu to: {}"
|
||||
.format(most_common_room_number(dane)))
|
||||
|
||||
|
||||
print("{} to najłądniejsza dzielnica w Poznaniu."
|
||||
.format(find_borough("Grunwald i Jeżyce"))))
|
||||
.format(find_borough("Grunwald i Jeżyce")))
|
||||
|
||||
print("Średnia cena mieszkania 3-pokojowego, to: {}"
|
||||
.format(mean_price(dane, 3)))
|
||||
|
||||
### Dopisałem te wywołania ###
|
||||
# ['1', ' 4000', '68000', '79000', '85000']
|
||||
n = 5
|
||||
print("Najtańsze oferty, to: {}"
|
||||
.format(cheapest_flats(dane, n)))
|
||||
|
||||
write_plot(dane, file_csv+'.hist.png')
|
||||
|
||||
print("Dzielnice z mieszkaniami na 13tym piętrze, to: {}"
|
||||
.format(find_13(dane)))
|
||||
#############################
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user