forked from tdwojak/Python2017
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
a0fecba5c4 | |||
26afa652a5 | |||
f61d161938 | |||
5d25e165c4 | |||
dc5fb3f34b | |||
fd67d4b96f | |||
1599eb71ba | |||
524eefe436 | |||
7ef244fb88 | |||
d8025c91ff | |||
378fee7582 |
39
README.md
39
README.md
@ -1,36 +1,3 @@
|
||||
# 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ą).
|
||||
|
||||
|
||||
|
||||
|
||||
Link do arkusza z obecnością:
|
||||
|
||||
https://docs.google.com/spreadsheets/d/1TxJSYM-voKJ7siCgtkCS77pSF0l7I-OtzfCrQdq9RtE/edit?usp=sharing
|
0
homeworks/main.py
Normal file → Executable file
0
homeworks/main.py
Normal file → Executable file
@ -1,24 +1,38 @@
|
||||
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
|
||||
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
|
||||
|
@ -7,10 +7,8 @@ która zawiera tylko elementy z list o parzystych indeksach.
|
||||
"""
|
||||
|
||||
def even_elements(lista):
|
||||
x=len(lista)
|
||||
list = lista[1:x:2]
|
||||
return list
|
||||
pass
|
||||
pass
|
||||
|
||||
|
||||
def tests(f):
|
||||
inputs = [[[1, 2, 3, 4, 5, 6]], [[]], [[41]]]
|
||||
|
@ -6,12 +6,8 @@
|
||||
"""
|
||||
|
||||
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]
|
||||
|
@ -7,12 +7,9 @@ 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]
|
||||
|
@ -9,11 +9,9 @@ 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):
|
||||
z=math.sqrt((sum((x-y)**2 for x,y in zip(x,y))))
|
||||
return z
|
||||
|
||||
pass
|
||||
|
||||
def tests(f):
|
||||
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
||||
outputs = [4.2]
|
||||
|
@ -10,11 +10,7 @@ ma być zwracany napis "It's not a Big 'No!'".
|
||||
"""
|
||||
|
||||
def big_no(n):
|
||||
if n<5:
|
||||
return "It's not a Big 'No!'"
|
||||
else:
|
||||
return "N"+"O"*n+"!"
|
||||
pass
|
||||
pass
|
||||
|
||||
def tests(f):
|
||||
inputs = [[5], [6], [2]]
|
||||
|
@ -6,7 +6,6 @@ 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):
|
||||
|
@ -7,16 +7,8 @@ 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]
|
||||
|
@ -9,17 +9,9 @@ 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']
|
||||
|
@ -9,17 +9,9 @@ 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']
|
||||
|
@ -1,8 +0,0 @@
|
||||
**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.
|
||||
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
**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,15 +1,3 @@
|
||||
#!/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
|
||||
|
@ -1,68 +1,3 @@
|
||||
#!/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
|
||||
|
@ -1,23 +1,13 @@
|
||||
#!/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):
|
||||
@ -29,34 +19,22 @@ 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():
|
||||
@ -67,7 +45,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)))
|
||||
|
Loading…
Reference in New Issue
Block a user