Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8f147230c8 | ||
|
2d6ac6ef66 | ||
|
e1c6d662fd | ||
|
7fa12549e1 | ||
|
6368f1bf8b | ||
|
b4dd74a5ca | ||
|
940596a57f | ||
|
8331a76115 | ||
|
e01ee1e58c | ||
|
20d7685a3a | ||
|
105364bf8f | ||
|
587c6d52a6 | ||
|
121db08b43 | ||
|
7ddeb4d38c | ||
|
9de284e666 |
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,12 +0,0 @@
|
||||
# wiki files
|
||||
Python2017.wiki/*
|
||||
|
||||
# Jupyter Files
|
||||
*/.ipynb_checkpoints/*
|
||||
|
||||
# Rope files
|
||||
.ropeproject
|
||||
*/.ropeproject
|
||||
|
||||
# Labs temp files
|
||||
labs03/haslo2.txt
|
@ -7,7 +7,7 @@ która zawiera tylko elementy z list o parzystych indeksach.
|
||||
"""
|
||||
|
||||
def even_elements(lista):
|
||||
pass
|
||||
return lista[::2]
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -5,8 +5,11 @@
|
||||
Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366).
|
||||
"""
|
||||
|
||||
def days_in_year(days):
|
||||
pass
|
||||
def days_in_year(year):
|
||||
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
|
||||
return 366
|
||||
else:
|
||||
return 365
|
||||
|
||||
def tests(f):
|
||||
inputs = [[2015], [2012], [1900], [2400], [1977]]
|
||||
|
@ -13,7 +13,14 @@ jak 'set', która przechowuje elementy bez powtórzeń.)
|
||||
|
||||
|
||||
def oov(text, vocab):
|
||||
pass
|
||||
list_of_words = []
|
||||
text_splitted = text.split()
|
||||
# print(text_splitted)
|
||||
for word in text_splitted:
|
||||
if word.lower() not in vocab:
|
||||
list_of_words.append(word)
|
||||
return list_of_words
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -7,7 +7,18 @@ 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
|
||||
# else:
|
||||
# return sum(range(n + 1))
|
||||
ranges = range(n + 1)
|
||||
if n < 1:
|
||||
return 0
|
||||
else:
|
||||
return sum(ranges)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
import math
|
||||
"""
|
||||
Napisz funkcję euclidean_distance obliczającą odległość między
|
||||
dwoma punktami przestrzeni trójwymiarowej. Punkty są dane jako
|
||||
@ -10,7 +10,10 @@ np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
|
||||
"""
|
||||
|
||||
def euclidean_distance(x, y):
|
||||
pass
|
||||
dist = [(a - b) ** 2 for a, b in zip(x, y)]
|
||||
dist = math.sqrt(sum(dist))
|
||||
return dist
|
||||
|
||||
|
||||
def tests(f):
|
||||
inputs = [[(2.3, 4.3, -7.5), (2.3, 8.5, -7.5)]]
|
||||
|
@ -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:
|
||||
o_creater = 'O'*n
|
||||
return 'N'+o_creater+'!'
|
||||
|
||||
def tests(f):
|
||||
inputs = [[5], [6], [2]]
|
||||
|
@ -6,7 +6,11 @@ Napisz funkcję char_sum, która dla zadanego łańcucha zwraca
|
||||
sumę kodów ASCII znaków.
|
||||
"""
|
||||
def char_sum(text):
|
||||
pass
|
||||
suma = 0
|
||||
for n in text:
|
||||
asco = ord(n)
|
||||
suma += asco
|
||||
return suma
|
||||
|
||||
def tests(f):
|
||||
inputs = [["this is a string"], ["this is another string"]]
|
||||
|
@ -7,7 +7,15 @@ przez 3 lub 5 mniejszych niż n.
|
||||
"""
|
||||
|
||||
def sum_div35(n):
|
||||
pass
|
||||
new_range = range(n)
|
||||
new_list = []
|
||||
suma = 0
|
||||
for n in new_range:
|
||||
if n % 3 == 0 or n % 5 == 0:
|
||||
new_list.append(n)
|
||||
for x in new_list:
|
||||
suma += x
|
||||
return suma
|
||||
|
||||
def tests(f):
|
||||
inputs = [[10], [100], [3845]]
|
||||
|
@ -9,7 +9,16 @@ Np. leet('leet') powinno zwrócić '1337'.
|
||||
|
||||
|
||||
def leet_speak(text):
|
||||
pass
|
||||
let_dict = {'e': '3', 'l': '1', 'o': '0', 't': '7'}
|
||||
new_word = []
|
||||
for n in text:
|
||||
if n in let_dict:
|
||||
x = let_dict[n]
|
||||
new_word.append(x)
|
||||
else:
|
||||
new_word.append(n)
|
||||
new_word_joined = ''.join(new_word)
|
||||
return new_word_joined
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -9,7 +9,16 @@ na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
|
||||
|
||||
|
||||
def pokemon_speak(text):
|
||||
pass
|
||||
text_list = []
|
||||
i = 0
|
||||
while i != len(text):
|
||||
text_list.append(text[i].upper())
|
||||
i += 1
|
||||
if i != len(text):
|
||||
text_list.append(text[i])
|
||||
i += 1
|
||||
text_list_joined = ''.join(text_list)
|
||||
return text_list_joined
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
@ -9,7 +9,10 @@ Oba napisy będą składać się wyłacznie z małych liter.
|
||||
"""
|
||||
|
||||
def common_chars(string1, string2):
|
||||
pass
|
||||
string1_list = set([n for n in string1 if n != ' '])
|
||||
string2_list = set([n for n in string2 if n != ' '])
|
||||
common_letter_list = sorted([n for n in string1_list if n in string2_list and n != ' '])
|
||||
return common_letter_list
|
||||
|
||||
|
||||
def tests(f):
|
||||
|
11
labs03/task01.py
Normal file
11
labs03/task01.py
Normal file
@ -0,0 +1,11 @@
|
||||
a = [1, 2, 3]
|
||||
b = 123
|
||||
c = 'ala ma kota'
|
||||
d = 123.13113
|
||||
d = 'kfidf'
|
||||
|
||||
print(id(a))
|
||||
print(id(b))
|
||||
print(id(c))
|
||||
print(id(d))
|
||||
|
13
labs03/task02.py
Normal file
13
labs03/task02.py
Normal file
@ -0,0 +1,13 @@
|
||||
def fibonacci(n):
|
||||
"""Fibonacci numbers generator, first n"""
|
||||
a, b, counter = 0, 1, 0
|
||||
while True:
|
||||
if (counter > n): return
|
||||
yield a
|
||||
a, b = b, a + b
|
||||
counter += 1
|
||||
|
||||
|
||||
f = fibonacci(5)
|
||||
for x in f:
|
||||
print (x)
|
15
labs03/task03.py
Normal file
15
labs03/task03.py
Normal file
@ -0,0 +1,15 @@
|
||||
# **ć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
|
||||
|
||||
response = requests.get('https://api.fixer.io/latest')
|
||||
content = response.content
|
||||
json_object = json.loads(content)
|
||||
currencies_vs_euro_dict = json_object.get("rates")
|
||||
pln = currencies_vs_euro_dict.get("PLN")
|
||||
print(pln)
|
31
labs03/task04.py
Normal file
31
labs03/task04.py
Normal file
@ -0,0 +1,31 @@
|
||||
from weather import Weather
|
||||
import datetime
|
||||
|
||||
|
||||
def fahrenheit_to_celsius(temperature_in_fahrenheit):
|
||||
temperature_in_celsius = (float(temperature_in_fahrenheit - 32) / (9/5))
|
||||
return round(temperature_in_celsius, 2)
|
||||
|
||||
weather = Weather()
|
||||
city = 'Poznan'
|
||||
weather_by_location = weather.lookup_by_location(city)
|
||||
condition = weather_by_location.condition()
|
||||
forecasts = weather_by_location.forecast()
|
||||
new_dict = {}
|
||||
polish_days = ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota', 'Niedziela']
|
||||
|
||||
for forecast in forecasts:
|
||||
data = forecast.date()
|
||||
lowest = forecast.low()
|
||||
new_dict.update({data: lowest})
|
||||
min_temp_day = min(new_dict, key=new_dict.get)
|
||||
new_date = datetime.datetime.strptime(min_temp_day, "%d %b %Y")
|
||||
day_of_week = new_date.weekday()
|
||||
min_temp = new_dict[min_temp_day]
|
||||
min_temp_in_celsius = fahrenheit_to_celsius(float(min_temp))
|
||||
|
||||
print('Current temperature in {0}: {1} Fahrenheit. It is {2}.'.format(city, condition.temp(), condition.text().lower()))
|
||||
|
||||
print('Najzimniejszy dzień: {0}. Temperatura w tym dniu to {1} Celsjusza'.format(polish_days[day_of_week], min_temp_in_celsius))
|
||||
|
||||
|
30
labs03/task05.py
Normal file
30
labs03/task05.py
Normal file
@ -0,0 +1,30 @@
|
||||
import glob
|
||||
import pathlib as p
|
||||
|
||||
|
||||
# set the path to directory
|
||||
my_path = 'C:/Users/**/*.bleu'
|
||||
new_dict = {}
|
||||
# match files in given directory
|
||||
for name in glob.glob(my_path, recursive=True):
|
||||
# for each file in directory set it's path and open the file
|
||||
path_to_file = p.Path(name)
|
||||
with path_to_file.open() as f:
|
||||
# read 1st line in each file
|
||||
line = f.readline()
|
||||
# split this line using ',' as separator
|
||||
line_splitted = line.split(',')
|
||||
# in this case BLUE = YY.YY is the first element of the list,
|
||||
# now we have to split it by ' ' and add it to dictionary
|
||||
# which key will be the file name and value will be that value
|
||||
for i, j in enumerate(line_splitted):
|
||||
if i == 0:
|
||||
blue_splitted = j.split(' ')
|
||||
second_element = float(blue_splitted[2])
|
||||
# in that case searched value is on 3rd position (2nd list element)
|
||||
new_dict.update({path_to_file: second_element})
|
||||
print(new_dict)
|
||||
# find max key (path) searching by values
|
||||
maximum = max(new_dict, key=new_dict.get)
|
||||
print(maximum)
|
||||
|
@ -177,8 +177,7 @@
|
||||
" super().__init__(vertexes)\n",
|
||||
" \n",
|
||||
" def czy_jestem_kwadratem(self):\n",
|
||||
" pass\n",
|
||||
" "
|
||||
" pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -309,13 +308,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 +464,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 +613,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": [
|
||||
@ -634,7 +633,9 @@
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
@ -647,7 +648,7 @@
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
"version": 3.0
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
@ -658,5 +659,5 @@
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
"nbformat_minor": 0
|
||||
}
|
@ -13,6 +13,4 @@ Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wiel
|
||||
* 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.
|
||||
|
||||
|
||||
* 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.
|
@ -1,3 +1,31 @@
|
||||
#!/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(another_list):
|
||||
"""
|
||||
Check whether each element of the list is an instance of int or float
|
||||
:param another_list:
|
||||
:return: True or False
|
||||
"""
|
||||
for i in another_list:
|
||||
if isinstance(i, bool):
|
||||
return False
|
||||
elif isinstance(i, (int, float)):
|
||||
i += 1
|
||||
else:
|
||||
return False
|
||||
return True
|
||||
|
||||
# 2nd option
|
||||
|
||||
# if type(i) in (float, int):
|
||||
# i += 1
|
||||
# else:
|
||||
# return False
|
||||
# return True
|
||||
|
||||
|
||||
# print(is_numeric([2, 1.8797, 43654354354354354354354354354354354325879]))
|
||||
|
@ -1,3 +1,40 @@
|
||||
#!/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``
|
||||
|
||||
|
||||
class Employee:
|
||||
id = 0
|
||||
|
||||
def __init__(self, name, surname):
|
||||
Employee.id += 1
|
||||
self.id = Employee.id
|
||||
self.name = name
|
||||
self.surname = surname
|
||||
|
||||
def get_id(self):
|
||||
return self.id
|
||||
|
||||
|
||||
class Recruiter(Employee):
|
||||
def __init__(self, name, surname):
|
||||
super().__init__(name, surname)
|
||||
self.recruited = []
|
||||
|
||||
def recruit(self, Employee_obj):
|
||||
self.recruited.append(Employee_obj.id)
|
||||
|
||||
|
||||
class Programmer(Employee):
|
||||
def __init__(self, name, surname, Recruiter_obj):
|
||||
super().__init__(name, surname)
|
||||
self.recruiter = Recruiter_obj.id
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,3 +1,58 @@
|
||||
#!/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.
|
||||
|
||||
from labs04.task01 import is_numeric
|
||||
|
||||
|
||||
class Point:
|
||||
coordinates = []
|
||||
|
||||
def __init__(self, coordinates):
|
||||
if is_numeric(coordinates):
|
||||
self.coordinates = coordinates
|
||||
else:
|
||||
raise DimensionError("Coordinates are not numeric")
|
||||
|
||||
def to_string(self):
|
||||
return str(self.coordinates)
|
||||
|
||||
def __len__(self):
|
||||
return len(self.coordinates)
|
||||
|
||||
def __str__(self):
|
||||
return self.to_string()
|
||||
|
||||
|
||||
class DimensionError(Exception):
|
||||
def __init__(self, text):
|
||||
self.text = text
|
||||
|
||||
def __str__(self):
|
||||
return self.text
|
||||
|
||||
|
||||
def add(point_1, point_2):
|
||||
if len(point_1.coordinates) != len(point_2.coordinates):
|
||||
raise DimensionError("Coordinates have different dimensions")
|
||||
else:
|
||||
new_coordinates = [x + y for x, y in zip(point_1.coordinates, point_2.coordinates)]
|
||||
return Point(new_coordinates)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
new_point = Point([5, 10, 12, 6])
|
||||
new_point.to_string()
|
||||
new_point.__len__()
|
||||
new_point_2 = Point([12, 23, 21, 16])
|
||||
print(new_point_2.__str__())
|
||||
new_point_3 = add(new_point, new_point_2)
|
||||
|
||||
print('1st point =', new_point)
|
||||
print('2nd point =', new_point_2)
|
||||
print('1st point + 2nd point = ', new_point_3)
|
@ -16,5 +16,4 @@ Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie
|
||||
* Jeżeli został podany przełącznik `-l`, to to ma zostać zwrócona tylko liczba linii.
|
||||
* Jeżeli został podany przełącznik `-w`, to to ma zostać zwrócona tylko liczba słów.
|
||||
* Jeżeli został podany przełącznik `-c`, to to ma zostać zwrócona tylko liczba znaków.
|
||||
* Jeżeli został podany inny argument, to należy założyć że jest to nazwa pliku i potraktować ten plik jako wejście do programu.
|
||||
|
||||
* Jeżeli został podany inny argument, to należy założyć że jest to nazwa pliku i potraktować ten plik jako wejście do programu.
|
@ -2,10 +2,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
def suma(liczby):
|
||||
pass
|
||||
sm = 0
|
||||
for i in liczby:
|
||||
sm += i
|
||||
return sm
|
||||
|
||||
def main():
|
||||
print(summa([1, 2, 3, 4]))
|
||||
print(suma([1, 2, 3, 4]))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -0,0 +1,10 @@
|
||||
import task00
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
x = sys.argv
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -846,7 +846,9 @@
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
@ -859,7 +861,7 @@
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 2
|
||||
"version": 2.0
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
@ -870,5 +872,5 @@
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
"nbformat_minor": 0
|
||||
}
|
131
labs06/task02.py
131
labs06/task02.py
@ -1,14 +1,50 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
## Zadania
|
||||
|
||||
# ** zad. 0 **
|
||||
# Sprawdź, czy masz zainstalowany pakiet ``pandas``. Jeżeli nie, zainstaluj go.
|
||||
#
|
||||
# ** zad. 2 (domowe) **
|
||||
# Jest to zadanie złożone, składające się z kilku części. Całość będzie opierać się o dane zawarte w pliku *mieszkania.csv* i dotyczą cen mieszkań w Poznaniu kilka lat temu.
|
||||
# 1, Otwórz plik ``task02.py``, który zawiera szkielet kodu, który będziemy rozwijać w tym zadaniu.
|
||||
# 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.
|
||||
# 1. 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ą.
|
||||
# 1. Uzupełnij kod w funkcji ``cheapest_flats(dane, n)``, która wzróci *n* najtańszych ofert mieszkań. Wzrócony obiekt typu ``DataFrame``.
|
||||
# 1. 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*.
|
||||
# 1. Dodaj kolumnę ``Borough``, która będzie zawierać informacje o dzielnicach i powstanie z kolumny ``Localization``. Wykorzystaj do tego funkcję ``find_borough``.
|
||||
# 1. Uzupełnił funkcje ``write_plot``, która zapisze do pliku ``filename`` wykres słupkowy przedstawiający liczbę ogłoszeń mieszkań z podziałem na dzielnice.
|
||||
# 1. Napisz funkcje ``mean_price``, która zwróci średnią cenę mieszkania ``room_numer``-pokojowego.
|
||||
# 1. Uzupełnij funkcje ``find_13``, która zwróci listę dzielnic, które zawierają ofertę mieszkanie na 13 piętrze.
|
||||
# 1. 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.
|
||||
# 1. *(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.
|
||||
|
||||
import pandas as pd
|
||||
import re
|
||||
from sklearn import *
|
||||
import numpy as np
|
||||
|
||||
|
||||
def wczytaj_dane():
|
||||
pass
|
||||
flats_data = pd.read_csv('mieszkania.csv', encoding='utf-8', sep=',', index_col='Id')
|
||||
flats_as_frame = pd.DataFrame(flats_data)
|
||||
return flats_as_frame
|
||||
|
||||
|
||||
def most_common_room_number(dane):
|
||||
pass
|
||||
rooms = dane['Rooms']
|
||||
rooms_counter = rooms.value_counts()
|
||||
rooms_counter_dict = rooms_counter.to_dict()
|
||||
max_room = max(rooms_counter_dict, key=rooms_counter_dict.get)
|
||||
return max_room
|
||||
|
||||
|
||||
def cheapest_flats(dane, n):
|
||||
pass
|
||||
sorted_flats_data = dane.sort_values(by=['Expected'])
|
||||
first_n_cheapest_flats = sorted_flats_data[:n]
|
||||
return first_n_cheapest_flats
|
||||
|
||||
|
||||
def find_borough(desc):
|
||||
dzielnice = ['Stare Miasto',
|
||||
@ -19,23 +55,95 @@ def find_borough(desc):
|
||||
'Winogrady',
|
||||
'Miłostowo',
|
||||
'Dębiec']
|
||||
pass
|
||||
|
||||
# using regular expression to get rid of all special characters with the exception of accents
|
||||
final_desc_wo_spaces = re.sub(u'[^a-zA-Z0-9áąéęćíóúÁÉÍÓÚâêîôÂÊÎÔńãõÃÕçÇżź:]', ' ', desc)
|
||||
final_desc_wo_spaces = final_desc_wo_spaces.split()
|
||||
for n in final_desc_wo_spaces:
|
||||
if n in dzielnice:
|
||||
return n
|
||||
# horrible hack to match 'Stare' with 'Miasto'
|
||||
elif n == 'Stare':
|
||||
return 'Stare Miasto'
|
||||
return "Inne"
|
||||
|
||||
|
||||
def add_borough(dane):
|
||||
pass
|
||||
dane['Borough'] = dane['Location'].apply(find_borough)
|
||||
return dane
|
||||
|
||||
|
||||
def write_plot(dane, filename):
|
||||
pass
|
||||
bar_plot_data = dane['Borough']
|
||||
counter = bar_plot_data.value_counts()
|
||||
my_plot = counter.plot(kind='bar', title='Liczba mieszkań w Poznaniu według dzielnicy', figsize=(12, 12))
|
||||
my_plot.set_xlabel('Dzielnica')
|
||||
my_plot.set_ylabel('Liczebność')
|
||||
fig = my_plot.get_figure()
|
||||
fig.savefig(filename + '.png')
|
||||
|
||||
|
||||
def mean_price(dane, room_number):
|
||||
pass
|
||||
filtered_data_mean = dane[dane['Rooms'] == room_number]['Expected'].mean()
|
||||
return filtered_data_mean
|
||||
|
||||
|
||||
def find_13(dane):
|
||||
pass
|
||||
filtered_data_floor_13 = dane[dane['Floor'] == 13]['Borough'].values
|
||||
return filtered_data_floor_13
|
||||
|
||||
|
||||
def find_best_flats(dane):
|
||||
pass
|
||||
filtered_data = dane.loc[(dane['Borough'] == 'Winogrady') & dane['Rooms'].isin([3]) & dane['Floor'].isin([1])]
|
||||
return filtered_data['Description']
|
||||
|
||||
|
||||
def percentile_based_outlier(dane, confidence=95):
|
||||
"""
|
||||
Filters data set by given confidence criterion
|
||||
:param dane:
|
||||
:param confidence:
|
||||
:return:
|
||||
"""
|
||||
diff = (100 - confidence) / 2.0
|
||||
minval, maxval = np.percentile(dane['Expected'], [diff, 100 - diff])
|
||||
return dane[(dane['Expected'] > minval) & (dane['Expected'] < maxval)]
|
||||
|
||||
|
||||
def linear_regression(dane, powierzchnia, liczba_pokoi):
|
||||
# remove outliers and define the data/predictors as the pre-set feature name
|
||||
dane_filtered = percentile_based_outlier(dane)
|
||||
features = dane_filtered[['SqrMeters', 'Rooms']]
|
||||
target = dane_filtered['Expected']
|
||||
# print(min(target), max(target))
|
||||
|
||||
x = features
|
||||
y = target
|
||||
|
||||
lm = linear_model.LinearRegression()
|
||||
lm.fit(x, y)
|
||||
model_score = lm.score(x, y)
|
||||
|
||||
# calculate mean squared error
|
||||
mse = np.mean((dane_filtered['Expected'] - lm.predict(x)) ** 2)
|
||||
price = lm.intercept_ + powierzchnia * lm.coef_[0] + liczba_pokoi * lm.coef_[1]
|
||||
|
||||
co = list(zip(x.columns, lm.coef_))
|
||||
coef = pd.DataFrame(co, columns=['feature', 'coefficient'])
|
||||
|
||||
print('Features and coefficients \n {}'.
|
||||
format(coef))
|
||||
print('Estimated intercept coefficient: {}'.
|
||||
format(lm.intercept_))
|
||||
print('Number of coefficients {}'.
|
||||
format(lm.coef_)) # list of coefficients
|
||||
print('R^2 of the prediction: {}'.
|
||||
format(model_score))
|
||||
print('Mean squared error {}'.
|
||||
format(mse))
|
||||
print('{} squared meter flat, which has {} rooms with should cost {} PLN'.
|
||||
format(powierzchnia, liczba_pokoi, round(price, 4)))
|
||||
|
||||
|
||||
def main():
|
||||
dane = wczytaj_dane()
|
||||
@ -45,10 +153,13 @@ 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)))
|
||||
|
||||
linear_regression(dane, 100, 4)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user