Compare commits

..

17 Commits

Author SHA1 Message Date
MrFrodo94
a78c3e089a task04 2018-01-07 19:10:20 +01:00
MrFrodo94
0d6fb2847e zadanie domowe 2017-12-15 20:41:08 +01:00
MrFrodo94
d92d5c3f6f '' 2017-12-15 17:13:29 +01:00
3dcde1c6e0 Delete 'model.iter100000.npz.bleu' 2017-12-15 16:06:32 +00:00
403d0c0051 Delete 'model.iter10000.npz.bleu' 2017-12-15 16:06:24 +00:00
d636596f03 Delete 'haslo.txt' 2017-12-15 16:06:06 +00:00
a295c40785 Delete 'Podstawy 2.ipynb' 2017-12-15 16:05:50 +00:00
a69318bc7e Upload files to '' 2017-12-15 16:04:50 +00:00
dda70b0c8d Update 'labs02/task08.py' 2017-12-01 17:19:34 +00:00
d17a0deeed Update 'labs02/task07.py' 2017-12-01 17:18:42 +00:00
fb7e6e642e Update 'labs02/task06.py' 2017-12-01 17:17:45 +00:00
cb3142f748 Update 'labs02/task05.py' 2017-12-01 17:15:06 +00:00
f43122f338 Update 'labs02/task10.py' 2017-12-01 17:13:09 +00:00
7934874c58 Update 'labs02/task09.py' 2017-12-01 17:12:26 +00:00
d2eeea8a25 Update 'labs02/task04.py' 2017-12-01 17:11:41 +00:00
50e576e7d9 Update 'labs02/task02.py' 2017-12-01 17:10:54 +00:00
819b314e17 Update 'labs02/task01.py' 2017-12-01 17:09:45 +00:00
17 changed files with 231 additions and 50 deletions

View File

@ -1,3 +1,36 @@
Link do arkusza z obecnością:
https://docs.google.com/spreadsheets/d/1TxJSYM-voKJ7siCgtkCS77pSF0l7I-OtzfCrQdq9RtE/edit?usp=sharing
# Laboratoria 3
## Zadania
**ćwiczenie 0**
Sklonuj repozytorium ``https://github.com/realpython/python-scripts``, które różne, przydatne skrypty. Przejrzyj je i zobacz na ile jesteś w stanie zrozumieć co i jak robią. Uruchom kilka z nich, np. ``27_send_sms.py``.
**ć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.
**ć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)``).
**ć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.
**ć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.
**ć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ą).

0
homeworks/main.py Executable file → Normal file
View File

View File

@ -1,38 +1,24 @@
ID | labs02:task07 | labs02:task08 | labs02:task09 | labs02:task10 | labs02:task11 | labs03 | labs04 | labs06 | Punkty | Ocena |
---------|-----------------|-----------------|-----------------|-----------------|-----------------|----------|----------|----------|--------|-------|
s45146 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45147 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45148 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45150 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 8 | 16 | 4 |
s45151 | 1 | 1 | 1 | 1 | 1 | 0 | 5 | 8 | 18 | 4.5 |
s45152 | 1 | 1 | 1 | 0 | 1 | 0 | 5 | 8 | 17 | 4 |
s45153 | 0 | 1 | 1 | 1 | 1 | 4 | 0 | 8 | 16 | 4 |
s45155 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 8 | 19 | 4.5 |
s45156 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45157 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
s45158 | 1 | 1 | 0 | 0 | 1 | 4 | 5 | 8 | 19 | 4.5 |
s45159 | 1 | 1 | 1 | 1 | 1 | 2 | 3 | 8 | 18 | 4.5 |
s45160 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
s45161 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45162 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45163 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
s45164 | 1 | 1 | 0 | 1 | 0 | 0 | 5 | 8 | 16 | 4 |
s45165 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45166 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 8 | 22 | 5 |
s45167 | 1 | 1 | 1 | 1 | 1 | 0 | 5 | 8 | 17 | 4 |
s45168 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
s45452 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 21 | 5 |
szwedek | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 10 | 24 | 5 |
Skala:
Punkty | Ocena |
-------|-------|
24-20 | 5 |
19-18 | 4.5 |
17-16 | 4 |
15-13 | 3 |
12-0 | 2 |
Max: 22
ID | labs02:task07 | labs02:task08 | labs02:task09 | labs02:task10 | labs02:task11
---------|-----------------|-----------------|-----------------|-----------------|---------------
s45168 | 0 | 0 | 0 | 0 | 0
s45162 | 1 | 1 | 1 | 1 | 1
s45158 | 1 | 1 | 0 | 0 | 1
szwedek | 1 | 1 | 1 | 1 | 1
s45155 | 1 | 1 | 1 | 1 | 1
s45152 | 1 | 1 | 1 | 0 | 1
s45148 | 1 | 1 | 1 | 1 | 1
s45166 | 1 | 1 | 1 | 1 | 1
s45151 | 1 | 1 | 1 | 1 | 1
s45146 | 1 | 1 | 1 | 1 | 1
s45150 | 1 | 1 | 1 | 1 | 1
s45452 | 1 | 1 | 1 | 1 | 1
s45165 | 1 | 1 | 1 | 1 | 1
s45160 | 1 | 1 | 1 | 1 | 1
s45153 | 0 | 0 | 0 | 0 | 0
s45156 | 1 | 1 | 1 | 1 | 1
s45157 | 0 | 0 | 1 | 1 | 1
s45167 | 1 | 1 | 1 | 1 | 1
s45147 | 1 | 0 | 0 | 1 | 0
s45159 | 0 | 0 | 0 | 0 | 0
s45161 | 1 | 1 | 1 | 1 | 1
s45164 | 1 | 1 | 0 | 1 | 0

View File

@ -7,8 +7,10 @@ która zawiera tylko elementy z list o parzystych indeksach.
"""
def even_elements(lista):
pass
x=len(lista)
list = lista[1:x:2]
return list
pass
def tests(f):
inputs = [[[1, 2, 3, 4, 5, 6]], [[]], [[41]]]

View File

@ -6,8 +6,12 @@
"""
def days_in_year(days):
if (days%4==0 and days%100!=0) or days%400==0:
return 366
else:
return 365
pass
def tests(f):
inputs = [[2015], [2012], [1900], [2400], [1977]]
outputs = [365, 366, 365, 366, 365]

View File

@ -7,9 +7,12 @@ Jeśli podany argument jest mniejszy od 1 powinna być zwracana wartość 0.
"""
def sum_from_one_to_n(n):
if n<1:
return 0
else:
return n*(n+1)/2
pass
def tests(f):
inputs = [[999], [-100]]
outputs = [499500, 0]

View File

@ -9,9 +9,11 @@ trzyelementowe listy liczb zmiennoprzecinkowych.
np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
"""
import math
def euclidean_distance(x, y):
pass
z=math.sqrt((sum((x-y)**2 for x,y in zip(x,y))))
return z
def tests(f):
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
outputs = [4.2]

View File

@ -10,7 +10,11 @@ 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!'"
else:
return "N"+"O"*n+"!"
pass
def tests(f):
inputs = [[5], [6], [2]]

View File

@ -6,6 +6,7 @@ Napisz funkcję char_sum, która dla zadanego łańcucha zwraca
sumę kodów ASCII znaków.
"""
def char_sum(text):
return sum(ord(ch) for ch in text)
pass
def tests(f):

View File

@ -7,8 +7,16 @@ przez 3 lub 5 mniejszych niż n.
"""
def sum_div35(n):
s=0
i=0
while i<n:
if (i%3==0) or (i%5==0):
s=s+i
i=i+1
return s
pass
def tests(f):
inputs = [[10], [100], [3845]]
outputs = [23, 2318, 3446403]

View File

@ -9,9 +9,17 @@ Np. leet('leet') powinno zwrócić '1337'.
def leet_speak(text):
replacements = ( ('e','3'), ('l','1'),
('o','0'), ('o','7') )
my_string = text
new_string = my_string
for old, new in replacements:
new_string = new_string.replace(old, new)
return new_string
pass
def tests(f):
inputs = [['leet'], ['do not want']]
outputs = ['1337', 'd0 n07 wan7']

View File

@ -9,9 +9,17 @@ na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
def pokemon_speak(text):
i=0
res=""
for s in text:
if i%2==0:
res += s.upper()
else:
res+= s
i=i+1
return res
pass
def tests(f):
inputs = [['pokemon'], ['do not want'], ['POKEMON']]
outputs = ['PoKeMoN', 'Do nOt wAnT', 'POKEMON']

8
labs03/task1.py Normal file
View File

@ -0,0 +1,8 @@
**cwiczenie 1**
Kazdy obiekt w Pythonie na wbudowana funkcje ``id()``, która zwraca liczbe, która jest unikatowa i stala dla obiektu. Pozwala ona w prosty sposób sprawdzic, który obiekt jest *mutable*a, który *immutable*: jezeli po wykonaniu operacji, zwracana liczba jest stala, to oznacza, ze obiekt jest *mutable*. Sprawdz zachowanie funkcji na obiektach typy:
* lista,
* napis (string),
* liczba zmiennoprzecinkowa.

15
labs03/task2.py Normal file
View File

@ -0,0 +1,15 @@
**cwiczenie 2**
Napisz generator, który bedzie zwracac ``n`` kolejnych liczb ciagu Fibonacciego (``F(0)=1, F(1)=1, FN=F(N-1) + F(N-2)``).
"""
def Fib(n):
for i in range(n):
if n==0:
return 1
elif n==1:
return 1
else:
return Fib(n-1)+Fib(n-2)
print Fib(10)

View File

@ -1,3 +1,15 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
<<<<<<< HEAD
def is_numeric(n):
if isinstance(n,int):
return 'int'
elif isinstance(n,float):
return 'float'
elif isinstance(n,str):
return 'string'
else:
return 'unavailable'
=======
>>>>>>> 576d5ba943f3ccfb753c717350d0c31010bdab1d

View File

@ -1,3 +1,68 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
<<<<<<< HEAD
'''
**cwiczenie 3 (zadanie domowe) **
Stwórz klase ``Point``, która bedzie reprezentowac punkt w przestrzeni wielowymiarowej:
* Konstruktor ma przyjac tylko 1 parametr: liste wspólrzednych. Wykorzystaj funkcje z pierwszego zadania, zeby sprawdzic, czy lista zawiera wylacznie liczby.
* Napisz metode add, która dida dwa punkty (dwa wektory) po wspólrzednych i zwróci obiekt typu ``Punkt``. Zaimplementuj wlasny wyjatek ``DimensionError``, który zostaje wyrzucony, jezeli dodawany punkt ma inny wymiar.
* Napisz metode ``to\_string``, która zwróci lancuch znakowy, który w czytelny sposób przedstawi punkt.
* Napisz metode __len__, która zwróci liczbe wspólrzednych punktu. Zobacz, czy mozesz teraz wywolac funkcje len na obiekcie typy punkt.
* Napisz metode __str__, która bedzie dzialac dokladnie tak samo jak metoda ``to_string``. Wyswietl obiekt typy Point korzystajac z funkcji print.
'''
class DimensionError(Exception):
def __init__(self):
super().__init__(self)
self.msg="Inny wymiar"
class Point():
def __init__(self,list):
if Point.is_numeric(list)!=len(list):
self.points=[]
self.isnumeric = False
else:
self.points=list
self.isnumeric=True
def __add__(self, other):
new = []
if self.isnumeric==False or other.isnumeric==False:
return "To nie sa liczby!"
elif len(self.points) != len(other.points):
return DimensionError()
else:
for i in range(len(self.points)):
new.append(self.points[i]+other.points[i])
return new
def __len__(self):
len=0
for element in self.points:
len+=1
return len
def to_string(self):
point_tuple = tuple(self.points)
return str(point_tuple)
def __str__(self):
return (self.to_string())
@staticmethod
def is_numeric(point):
value=0
for i in point:
if isinstance(i, int) or isinstance(i, float):
value+=1
return value
=======
>>>>>>> 576d5ba943f3ccfb753c717350d0c31010bdab1d

View File

@ -1,13 +1,23 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import sys
import numpy as np
def wczytaj_dane():
dane=pd.read_csv('mieszkania.csv',encoding='utf-8',index_col='Id',sep=',')
return dane
pass
def most_common_room_number(dane):
dane_agg = dane["Rooms"].value_counts()
return dane_agg.index.tolist()[0]
pass
def cheapest_flats(dane, n):
dane_cheapest = dane.sort_values(by=["Expected"])[:n]
return dane_cheapest
pass
def find_borough(desc):
@ -19,22 +29,34 @@ def find_borough(desc):
'Winogrady',
'Miłostowo',
'Dębiec']
for dzielnica in dzielnice:
if desc.find(dzielnica)>=0:
return dzielnica
return 'Inne'
pass
def add_borough(dane):
dane['Borough'] = dane.apply(lambda row: find_borough(row['Location']))
pass
def write_plot(dane, filename):
dane['Borough'].hist()
plt.savefig(filename)
pass
def mean_price(dane, room_number):
dane2 = dane[dane.Rooms == room_number]
return round(dane2.Expected.mean(),5)
pass
def find_13(dane):
ff = dane[dane['Floor'] == 13]
return ff['Borough'].unique()
pass
def find_best_flats(dane):
return dane[(dane['Rooms'] == 3) & (dane['Floor'] == 1) & (dane['Borough'] == 'Winogrady')]
pass
def main():
@ -45,7 +67,7 @@ def main():
.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)))