forked from tdwojak/Python2017
zadania z zajec 16-17.12.2017
This commit is contained in:
parent
8bff1e02b1
commit
bfae3fa2c2
@ -125,7 +125,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
|
@ -2,16 +2,20 @@
|
||||
Napisz funkcję ``suma``, która przyjmnie jeden argument: listę liczb i zwróci ich sumę.
|
||||
|
||||
** zad. 1 **
|
||||
Zaimportuj z zadania 0 fukcje ``suma``. Korzystając z tej fukcji i tablicy ``sys.argv`` oblicz i wyświetl sumę argumentów, jakie zostały przekazane do proramu. Załóź, że argumentami do programu będą tylko liczby zmiennoprzecinkowe.
|
||||
Zaimportuj z zadania 0 fukcje ``suma``. Korzystając z tej fukcji i tablicy ``sys.argv`` oblicz i wyświetl sumę argumentów,
|
||||
jakie zostały przekazane do proramu. Załóź, że argumentami do programu będą tylko liczby zmiennoprzecinkowe.
|
||||
|
||||
** zad. 2 **
|
||||
Uodpornoj program z zad. 1 w następujący sposób: do programu mogą zostać przekazane argumenty, które nie mają wartości liczbowej (przyjmijmy, że ich wartość to 0). Skorzystaj z mechanizmu wyjątków: złap wyjątek, jeżeli argumenty nie da się skonwertować na liczbę zmiennoprzecinkową.
|
||||
Uodpornoj program z zad. 1 w następujący sposób: do programu mogą zostać przekazane argumenty, które nie mają wartości liczbowej
|
||||
(przyjmijmy, że ich wartość to 0). Skorzystaj z mechanizmu wyjątków: złap wyjątek, jeżeli argumenty nie da się skonwertować na
|
||||
liczbę zmiennoprzecinkową.
|
||||
|
||||
** zad. 3 **
|
||||
Przekształć rozwiązanie zadania drugiego w taki sposob, żeby korzystało z biblioteki ``argparse`` zamiast z z listy ``sys.argv``.
|
||||
|
||||
** zad. 4 (Domowe) **
|
||||
Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie unixowe ``wc`` (Word Counter): zlicza liczbę linii, wyrazów i znaków. Aktualnie program potrafi działać wyłącznie na wejściu podanym z klawiatury. Dodaj do niego opcje programu:
|
||||
Plik ``task04.py`` zawiera kod prorgamu, który działa jak popularne narzędzie unixowe ``wc`` (Word Counter): zlicza liczbę
|
||||
linii, wyrazów i znaków. Aktualnie program potrafi działać wyłącznie na wejściu podanym z klawiatury. Dodaj do niego opcje programu:
|
||||
* domyślnie program ma zliczać na wejściu z klawiatury (stdin) i wyświetlać wszystkie 3 liczby.
|
||||
* 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.
|
||||
|
@ -1,11 +1,21 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
|
||||
def suma(liczby):
|
||||
pass
|
||||
suma_liczb = 0
|
||||
for i in liczby:
|
||||
try:
|
||||
suma_liczb += float(i)
|
||||
except:
|
||||
suma_liczb += 0
|
||||
return suma_liczb
|
||||
|
||||
def main():
|
||||
print(summa([1, 2, 3, 4]))
|
||||
print(suma([1, 2, 3, 4]))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
else:
|
||||
suma(sys.argv[1:])
|
||||
|
@ -0,0 +1,3 @@
|
||||
import task00
|
||||
|
||||
print(task00.suma([5.2,3.4,4.5]))
|
@ -0,0 +1,3 @@
|
||||
import task00
|
||||
|
||||
print(task00.suma(['def',3.4,4.5]))
|
@ -4,13 +4,18 @@
|
||||
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.
|
||||
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. 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. 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,14 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import pandas as pd
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def wczytaj_dane():
|
||||
pass
|
||||
dane = pd.read_csv('mieszkania.csv',
|
||||
sep=',',
|
||||
encoding='utf-8')
|
||||
return dane
|
||||
|
||||
def most_common_room_number(dane):
|
||||
pass
|
||||
return dane.Rooms.mode()[0]
|
||||
|
||||
def cheapest_flats(dane, n):
|
||||
pass
|
||||
dane = dane.sort_values('Expected',ascending=True)
|
||||
return dane.head(n)
|
||||
|
||||
def find_borough(desc):
|
||||
dzielnice = ['Stare Miasto',
|
||||
@ -19,23 +27,35 @@ def find_borough(desc):
|
||||
'Winogrady',
|
||||
'Miłostowo',
|
||||
'Dębiec']
|
||||
pass
|
||||
|
||||
for dzielnica in dzielnice:
|
||||
if desc.find(dzielnica)>=0:
|
||||
return dzielnica
|
||||
|
||||
return 'Inne'
|
||||
|
||||
|
||||
def add_borough(dane):
|
||||
pass
|
||||
borough = []
|
||||
for current_location in dane:
|
||||
borough.append(find_borough(current_location))
|
||||
return pd.Series(borough)
|
||||
|
||||
def write_plot(dane, filename):
|
||||
pass
|
||||
dane['Borough'].hist()
|
||||
plt.savefig(filename)
|
||||
|
||||
def mean_price(dane, room_number):
|
||||
pass
|
||||
dane = dane[dane.Rooms == room_number]
|
||||
return round(dane.Expected.mean(),2)
|
||||
|
||||
def find_13(dane):
|
||||
pass
|
||||
dane = dane[dane.Floor == 13]
|
||||
return list(dane.Borough)
|
||||
|
||||
def find_best_flats(dane):
|
||||
pass
|
||||
dane = dane[(dane.Borough=='Winogrady') & (dane.Rooms==3) & (dane.Floor == 1)]
|
||||
return dane
|
||||
|
||||
def main():
|
||||
dane = wczytaj_dane()
|
||||
@ -44,11 +64,22 @@ def main():
|
||||
print("Najpopularniejsza liczba pokoi w mieszkaniu to: {}"
|
||||
.format(most_common_room_number(dane)))
|
||||
|
||||
najtansze = cheapest_flats(dane,10)
|
||||
|
||||
print("{} to najłądniejsza dzielnica w Poznaniu."
|
||||
.format(find_borough("Grunwald i Jeżyce"))))
|
||||
.format(find_borough("Grunwald i Jeżyce")))
|
||||
|
||||
dzielnice = add_borough(dane['Location'])
|
||||
dane['Borough'] = dzielnice.values
|
||||
|
||||
write_plot(dane,'wykres.png')
|
||||
|
||||
print("Średnia cena mieszkania 3-pokojowego, to: {}"
|
||||
.format(mean_price(dane, 3)))
|
||||
|
||||
find_13(dane)
|
||||
|
||||
find_best_flats(dane)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
BIN
labs06/wykres.png
Normal file
BIN
labs06/wykres.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in New Issue
Block a user