1
0
forked from tdwojak/Python2017

Compare commits

..

11 Commits

Author SHA1 Message Date
a0fecba5c4 Final updates 2018-01-29 12:22:18 +01:00
26afa652a5 update 2018-01-24 10:26:29 +01:00
f61d161938 update results 2018-01-23 22:34:37 +01:00
5d25e165c4 Update 45163 2018-01-23 22:05:16 +01:00
dc5fb3f34b Add marks 2018-01-23 17:19:50 +01:00
fd67d4b96f Add task06 2018-01-23 16:54:47 +01:00
1599eb71ba update szwedek 2018-01-22 15:42:47 +01:00
524eefe436 Update scores for 45161 2018-01-19 08:50:18 +01:00
7ef244fb88 Fix socres for 147 2018-01-18 17:41:40 +01:00
d8025c91ff Add missed results 2018-01-15 11:11:11 +01:00
378fee7582 Update results 2018-01-11 13:41:08 +01:00
28 changed files with 98 additions and 477 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
# wiki files
Python2017.wiki/*
# Jupyter Files
*/.ipynb_checkpoints/*
# Rope files
.ropeproject
*/.ropeproject
# Labs temp files
labs03/haslo2.txt

View File

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

View File

@ -7,7 +7,7 @@ która zawiera tylko elementy z list o parzystych indeksach.
""" """
def even_elements(lista): def even_elements(lista):
return lista[::2] pass
def tests(f): def tests(f):

View File

@ -5,11 +5,8 @@
Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366). Napisz funkcję days_in_year zwracającą liczbę dni w roku (365 albo 366).
""" """
def days_in_year(year): def days_in_year(days):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: pass
return 366
else:
return 365
def tests(f): def tests(f):
inputs = [[2015], [2012], [1900], [2400], [1977]] inputs = [[2015], [2012], [1900], [2400], [1977]]

View File

@ -13,14 +13,7 @@ jak 'set', która przechowuje elementy bez powtórzeń.)
def oov(text, vocab): def oov(text, vocab):
list_of_words = [] pass
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

View File

@ -7,18 +7,7 @@ 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: pass
# return 0
# else:
# return sum(range(n + 1))
ranges = range(n + 1)
if n < 1:
return 0
else:
return sum(ranges)
def tests(f): def tests(f):

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import math
""" """
Napisz funkcję euclidean_distance obliczającą odległość między Napisz funkcję euclidean_distance obliczającą odległość między
dwoma punktami przestrzeni trójwymiarowej. Punkty dane jako dwoma punktami przestrzeni trójwymiarowej. Punkty dane jako
@ -10,10 +10,7 @@ np. odległość pomiędzy punktami (0, 0, 0) i (3, 4, 0) jest równa 5.
""" """
def euclidean_distance(x, y): def euclidean_distance(x, y):
dist = [(a - b) ** 2 for a, b in zip(x, y)] pass
dist = math.sqrt(sum(dist))
return dist
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)]]

View File

@ -10,11 +10,7 @@ ma być zwracany napis "It's not a Big 'No!'".
""" """
def big_no(n): def big_no(n):
if n < 5: pass
return "It's not a Big 'No!'"
else:
o_creater = 'O'*n
return 'N'+o_creater+'!'
def tests(f): def tests(f):
inputs = [[5], [6], [2]] inputs = [[5], [6], [2]]

View File

@ -6,11 +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):
suma = 0 pass
for n in text:
asco = ord(n)
suma += asco
return suma
def tests(f): def tests(f):
inputs = [["this is a string"], ["this is another string"]] inputs = [["this is a string"], ["this is another string"]]

View File

@ -7,15 +7,7 @@ przez 3 lub 5 mniejszych niż n.
""" """
def sum_div35(n): def sum_div35(n):
new_range = range(n) pass
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): def tests(f):
inputs = [[10], [100], [3845]] inputs = [[10], [100], [3845]]

View File

@ -9,16 +9,7 @@ Np. leet('leet') powinno zwrócić '1337'.
def leet_speak(text): def leet_speak(text):
let_dict = {'e': '3', 'l': '1', 'o': '0', 't': '7'} pass
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): def tests(f):

View File

@ -9,16 +9,7 @@ na wielką. Np. pokemon_speak('pokemon') powinno zwrócić 'PoKeMoN'.
def pokemon_speak(text): def pokemon_speak(text):
text_list = [] pass
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): def tests(f):

View File

@ -9,10 +9,7 @@ Oba napisy będą składać się wyłacznie z małych liter.
""" """
def common_chars(string1, string2): def common_chars(string1, string2):
string1_list = set([n for n in string1 if n != ' ']) pass
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): def tests(f):

View File

@ -1,11 +0,0 @@
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))

View File

@ -1,13 +0,0 @@
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)

View File

@ -1,15 +0,0 @@
# **ć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)

View File

@ -1,31 +0,0 @@
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))

View File

@ -1,30 +0,0 @@
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)

View File

@ -177,7 +177,8 @@
" super().__init__(vertexes)\n", " super().__init__(vertexes)\n",
" \n", " \n",
" def czy_jestem_kwadratem(self):\n", " def czy_jestem_kwadratem(self):\n",
" pass" " pass\n",
" "
] ]
}, },
{ {
@ -308,13 +309,13 @@
{ {
"ename": "AttributeError", "ename": "AttributeError",
"evalue": "'Parser' object has no attribute '__parse'", "evalue": "'Parser' object has no attribute '__parse'",
"output_type": "error",
"traceback": [ "traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\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;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'" "\u001b[0;31mAttributeError\u001b[0m: 'Parser' object has no attribute '__parse'"
], ]
"output_type": "error"
} }
], ],
"source": [ "source": [
@ -464,13 +465,13 @@
{ {
"ename": "FileNotFoundError", "ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'nieistniejący_plik.txt'", "evalue": "[Errno 2] No such file or directory: 'nieistniejący_plik.txt'",
"output_type": "error",
"traceback": [ "traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "\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;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'" "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'nieistniejący_plik.txt'"
], ]
"output_type": "error"
} }
], ],
"source": [ "source": [
@ -613,13 +614,13 @@
{ {
"ename": "MyError", "ename": "MyError",
"evalue": "Coś poszło nie tak!", "evalue": "Coś poszło nie tak!",
"output_type": "error",
"traceback": [ "traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mMyError\u001b[0m Traceback (most recent call last)", "\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;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!" "\u001b[0;31mMyError\u001b[0m: Coś poszło nie tak!"
], ]
"output_type": "error"
} }
], ],
"source": [ "source": [
@ -633,9 +634,7 @@
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": []
""
]
} }
], ],
"metadata": { "metadata": {
@ -648,7 +647,7 @@
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
"name": "ipython", "name": "ipython",
"version": 3.0 "version": 3
}, },
"file_extension": ".py", "file_extension": ".py",
"mimetype": "text/x-python", "mimetype": "text/x-python",
@ -659,5 +658,5 @@
} }
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 0 "nbformat_minor": 2
} }

View File

@ -13,4 +13,6 @@ 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ę 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ę ``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ę __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.

View File

@ -1,31 +1,3 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# -*- coding: utf-8 -*- # -*- 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]))

View File

@ -1,40 +1,3 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# -*- coding: utf-8 -*- # -*- 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

View File

@ -1,58 +1,3 @@
# **ćwiczenie 3 (zadanie domowe) ** #!/usr/bin/env python2
# Stwórz klasę ``Point``, która będzie reprezentować punkt w przestrzeni wielowymiarowej: # -*- coding: utf-8 -*-
# * 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)

View File

@ -16,4 +16,5 @@ 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 `-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 `-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 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.

View File

@ -2,13 +2,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
def suma(liczby): def suma(liczby):
sm = 0 pass
for i in liczby:
sm += i
return sm
def main(): def main():
print(suma([1, 2, 3, 4])) print(summa([1, 2, 3, 4]))
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -1,10 +0,0 @@
import task00
import sys
def main():
x = sys.argv
if __name__ == "__main__":
main()

View File

@ -846,9 +846,7 @@
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": []
""
]
} }
], ],
"metadata": { "metadata": {
@ -861,7 +859,7 @@
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
"name": "ipython", "name": "ipython",
"version": 2.0 "version": 2
}, },
"file_extension": ".py", "file_extension": ".py",
"mimetype": "text/x-python", "mimetype": "text/x-python",
@ -872,5 +870,5 @@
} }
}, },
"nbformat": 4, "nbformat": 4,
"nbformat_minor": 0 "nbformat_minor": 2
} }

View File

@ -1,50 +1,14 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- 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(): def wczytaj_dane():
flats_data = pd.read_csv('mieszkania.csv', encoding='utf-8', sep=',', index_col='Id') pass
flats_as_frame = pd.DataFrame(flats_data)
return flats_as_frame
def most_common_room_number(dane): def most_common_room_number(dane):
rooms = dane['Rooms'] pass
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): def cheapest_flats(dane, n):
sorted_flats_data = dane.sort_values(by=['Expected']) pass
first_n_cheapest_flats = sorted_flats_data[:n]
return first_n_cheapest_flats
def find_borough(desc): def find_borough(desc):
dzielnice = ['Stare Miasto', dzielnice = ['Stare Miasto',
@ -55,95 +19,23 @@ def find_borough(desc):
'Winogrady', 'Winogrady',
'Miłostowo', 'Miłostowo',
'Dębiec'] '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): def add_borough(dane):
dane['Borough'] = dane['Location'].apply(find_borough) pass
return dane
def write_plot(dane, filename): def write_plot(dane, filename):
bar_plot_data = dane['Borough'] pass
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): def mean_price(dane, room_number):
filtered_data_mean = dane[dane['Rooms'] == room_number]['Expected'].mean() pass
return filtered_data_mean
def find_13(dane): def find_13(dane):
filtered_data_floor_13 = dane[dane['Floor'] == 13]['Borough'].values pass
return filtered_data_floor_13
def find_best_flats(dane): def find_best_flats(dane):
filtered_data = dane.loc[(dane['Borough'] == 'Winogrady') & dane['Rooms'].isin([3]) & dane['Floor'].isin([1])] pass
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(): def main():
dane = wczytaj_dane() dane = wczytaj_dane()
@ -153,13 +45,10 @@ 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)))
linear_regression(dane, 100, 4)
if __name__ == "__main__": if __name__ == "__main__":
main() main()