Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a78c3e089a | ||
|
0d6fb2847e | ||
|
d92d5c3f6f | ||
3dcde1c6e0 | |||
403d0c0051 | |||
d636596f03 | |||
a295c40785 | |||
a69318bc7e | |||
dda70b0c8d | |||
d17a0deeed | |||
fb7e6e642e | |||
cb3142f748 | |||
f43122f338 | |||
7934874c58 | |||
d2eeea8a25 | |||
50e576e7d9 | |||
819b314e17 |
37
README.md
37
README.md
@ -1,3 +1,36 @@
|
|||||||
Link do arkusza z obecnością:
|
# 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ą).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
https://docs.google.com/spreadsheets/d/1TxJSYM-voKJ7siCgtkCS77pSF0l7I-OtzfCrQdq9RtE/edit?usp=sharing
|
|
0
homeworks/main.py
Executable file → Normal file
0
homeworks/main.py
Executable file → Normal file
@ -7,9 +7,11 @@ która zawiera tylko elementy z list o parzystych indeksach.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def even_elements(lista):
|
def even_elements(lista):
|
||||||
|
x=len(lista)
|
||||||
|
list = lista[1:x:2]
|
||||||
|
return list
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[[1, 2, 3, 4, 5, 6]], [[]], [[41]]]
|
inputs = [[[1, 2, 3, 4, 5, 6]], [[]], [[41]]]
|
||||||
outputs = [[1, 3, 5], [], [41]]
|
outputs = [[1, 3, 5], [], [41]]
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def days_in_year(days):
|
def days_in_year(days):
|
||||||
|
if (days%4==0 and days%100!=0) or days%400==0:
|
||||||
|
return 366
|
||||||
|
else:
|
||||||
|
return 365
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -7,9 +7,12 @@ Jeśli podany argument jest mniejszy od 1 powinna być zwracana wartość 0.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def sum_from_one_to_n(n):
|
def sum_from_one_to_n(n):
|
||||||
|
if n<1:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return n*(n+1)/2
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[999], [-100]]
|
inputs = [[999], [-100]]
|
||||||
outputs = [499500, 0]
|
outputs = [499500, 0]
|
||||||
|
@ -9,8 +9,10 @@ trzyelementowe listy liczb zmiennoprzecinkowych.
|
|||||||
np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
|
np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import math
|
||||||
def euclidean_distance(x, y):
|
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):
|
def tests(f):
|
||||||
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
||||||
|
@ -10,6 +10,10 @@ ma być zwracany napis "It's not a Big 'No!'".
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def big_no(n):
|
def big_no(n):
|
||||||
|
if n<5:
|
||||||
|
return "It's not a Big 'No!'"
|
||||||
|
else:
|
||||||
|
return "N"+"O"*n+"!"
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -6,6 +6,7 @@ Napisz funkcję char_sum, która dla zadanego łańcucha zwraca
|
|||||||
sumę kodów ASCII znaków.
|
sumę kodów ASCII znaków.
|
||||||
"""
|
"""
|
||||||
def char_sum(text):
|
def char_sum(text):
|
||||||
|
return sum(ord(ch) for ch in text)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
|
@ -7,8 +7,16 @@ przez 3 lub 5 mniejszych niż n.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def sum_div35(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
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [[10], [100], [3845]]
|
inputs = [[10], [100], [3845]]
|
||||||
outputs = [23, 2318, 3446403]
|
outputs = [23, 2318, 3446403]
|
||||||
|
@ -9,9 +9,17 @@ Np. leet('leet') powinno zwrócić '1337'.
|
|||||||
|
|
||||||
|
|
||||||
def leet_speak(text):
|
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
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [['leet'], ['do not want']]
|
inputs = [['leet'], ['do not want']]
|
||||||
outputs = ['1337', 'd0 n07 wan7']
|
outputs = ['1337', 'd0 n07 wan7']
|
||||||
|
@ -9,9 +9,17 @@ na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
|
|||||||
|
|
||||||
|
|
||||||
def pokemon_speak(text):
|
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
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tests(f):
|
def tests(f):
|
||||||
inputs = [['pokemon'], ['do not want'], ['POKEMON']]
|
inputs = [['pokemon'], ['do not want'], ['POKEMON']]
|
||||||
outputs = ['PoKeMoN', 'Do nOt wAnT', 'POKEMON']
|
outputs = ['PoKeMoN', 'Do nOt wAnT', 'POKEMON']
|
||||||
|
8
labs03/task1.py
Normal file
8
labs03/task1.py
Normal 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
15
labs03/task2.py
Normal 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)
|
@ -1,3 +1,15 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 -*-
|
# -*- 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
|
||||||
|
@ -1,3 +1,68 @@
|
|||||||
#!/usr/bin/env python2
|
#!/usr/bin/env python2
|
||||||
# -*- coding: utf-8 -*-
|
# -*- 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
|
||||||
|
@ -1,13 +1,23 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
import pandas as pd
|
||||||
|
import sys
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
def wczytaj_dane():
|
def wczytaj_dane():
|
||||||
|
dane=pd.read_csv('mieszkania.csv',encoding='utf-8',index_col='Id',sep=',')
|
||||||
|
return dane
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def most_common_room_number(dane):
|
def most_common_room_number(dane):
|
||||||
|
dane_agg = dane["Rooms"].value_counts()
|
||||||
|
return dane_agg.index.tolist()[0]
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def cheapest_flats(dane, n):
|
def cheapest_flats(dane, n):
|
||||||
|
dane_cheapest = dane.sort_values(by=["Expected"])[:n]
|
||||||
|
return dane_cheapest
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def find_borough(desc):
|
def find_borough(desc):
|
||||||
@ -19,22 +29,34 @@ def find_borough(desc):
|
|||||||
'Winogrady',
|
'Winogrady',
|
||||||
'Miłostowo',
|
'Miłostowo',
|
||||||
'Dębiec']
|
'Dębiec']
|
||||||
|
for dzielnica in dzielnice:
|
||||||
|
if desc.find(dzielnica)>=0:
|
||||||
|
return dzielnica
|
||||||
|
return 'Inne'
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def add_borough(dane):
|
def add_borough(dane):
|
||||||
|
dane['Borough'] = dane.apply(lambda row: find_borough(row['Location']))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def write_plot(dane, filename):
|
def write_plot(dane, filename):
|
||||||
|
dane['Borough'].hist()
|
||||||
|
plt.savefig(filename)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def mean_price(dane, room_number):
|
def mean_price(dane, room_number):
|
||||||
|
dane2 = dane[dane.Rooms == room_number]
|
||||||
|
return round(dane2.Expected.mean(),5)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def find_13(dane):
|
def find_13(dane):
|
||||||
|
ff = dane[dane['Floor'] == 13]
|
||||||
|
return ff['Borough'].unique()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def find_best_flats(dane):
|
def find_best_flats(dane):
|
||||||
|
return dane[(dane['Rooms'] == 3) & (dane['Floor'] == 1) & (dane['Borough'] == 'Winogrady')]
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -45,7 +67,7 @@ def main():
|
|||||||
.format(most_common_room_number(dane)))
|
.format(most_common_room_number(dane)))
|
||||||
|
|
||||||
print("{} to najłądniejsza dzielnica w Poznaniu."
|
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: {}"
|
print("Średnia cena mieszkania 3-pokojowego, to: {}"
|
||||||
.format(mean_price(dane, 3)))
|
.format(mean_price(dane, 3)))
|
||||||
|
Loading…
Reference in New Issue
Block a user