Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kurs_alx_pcz
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
kurs_alx_pcz
Commits
a4e159e6
Commit
a4e159e6
authored
Dec 11, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ostatnie zmiany w Employees
parent
bfddc056
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
19 additions
and
234 deletions
+19
-234
.gitignore
.gitignore
+1
-1
employees.py
dzien8/emps3_dodatki/employees.py
+6
-2
p0_test_odczytu.py
dzien8/emps3_dodatki/p0_test_odczytu.py
+2
-2
p1_wypisz_dane.py
dzien8/emps3_dodatki/p1_wypisz_dane.py
+0
-10
p2_wypisz_bogatych.py
dzien8/emps3_dodatki/p2_wypisz_bogatych.py
+0
-10
p3_srednia_wszystkich.py
dzien8/emps3_dodatki/p3_srednia_wszystkich.py
+2
-2
p4_srednia_jeden_job_v1.py
dzien8/emps3_dodatki/p4_srednia_jeden_job_v1.py
+2
-2
p4_srednia_jeden_job_v2.py
dzien8/emps3_dodatki/p4_srednia_jeden_job_v2.py
+0
-14
p5_grupowanie_v1.py
dzien8/emps3_dodatki/p5_grupowanie_v1.py
+0
-33
p5_grupowanie_v2.py
dzien8/emps3_dodatki/p5_grupowanie_v2.py
+0
-22
p5_grupowanie_v3.py
dzien8/emps3_dodatki/p5_grupowanie_v3.py
+2
-2
p5_grupowanie_v4.py
dzien8/emps3_dodatki/p5_grupowanie_v4.py
+0
-16
p5_grupowanie_v5.py
dzien8/emps3_dodatki/p5_grupowanie_v5.py
+0
-19
p6_min_max_v1.py
dzien8/emps3_dodatki/p6_min_max_v1.py
+0
-23
p6_min_max_v2.py
dzien8/emps3_dodatki/p6_min_max_v2.py
+0
-16
p6_min_max_v3.py
dzien8/emps3_dodatki/p6_min_max_v3.py
+0
-15
p6_min_max_v4.py
dzien8/emps3_dodatki/p6_min_max_v4.py
+0
-21
p7_wypisz_posortowanych_v1.py
dzien8/emps3_dodatki/p7_wypisz_posortowanych_v1.py
+0
-9
p7_wypisz_posortowanych_v2.py
dzien8/emps3_dodatki/p7_wypisz_posortowanych_v2.py
+0
-7
podwyzka.py
dzien8/emps3_dodatki/podwyzka.py
+4
-3
prosty_przyklad.py
dzien8/emps3_dodatki/prosty_przyklad.py
+0
-5
zmienione.csv
dzien8/emps3_dodatki/zmienione.csv
+0
-0
No files found.
.gitignore
View file @
a4e159e6
...
...
@@ -10,4 +10,4 @@ __pycache__/
/dzien4/pliki/nowy_win.txt
/dzien4/pliki/ponumerowany.txt
/dzien4/pliki/posortowany.txt
/dzien8/
emps2_obiektowo
/zmienione.csv
/dzien8/
*
/zmienione.csv
dzien8/emps3_dodatki/employees.py
View file @
a4e159e6
...
...
@@ -22,13 +22,17 @@ class Employee:
return
f
'Pracownik nr {self.employee_id}: {self.first_name} {self.last_name} ({self.job_title}), pensja {self.salary}'
def
read_csv
(
file_path
=
'emps.csv'
):
# Tutaj wczytywanie danych z pliku zrobimy jako metodę statyczną wewnątrz klasy.
# Metoda statyczna nie przyjmuje parametru self i jest wywoływana nie na obiekcie, tylko na klasie.
@staticmethod
def
read_csv
(
file_path
=
'emps.csv'
):
with
open
(
file_path
,
mode
=
'r'
,
encoding
=
'utf-8'
)
as
file
:
file
.
readline
()
return
[
Employee
(
*
(
line
.
strip
()
.
split
(
Employee
.
SEP
)))
for
line
in
file
]
def
write_csv
(
emps
,
sciezka
):
@staticmethod
def
write_csv
(
emps
,
sciezka
):
with
open
(
sciezka
,
mode
=
'w'
,
encoding
=
'utf-8'
)
as
file
:
print
(
*
Employee
.
nazwy_kolumn
,
sep
=
Employee
.
SEP
,
file
=
file
)
for
emp
in
emps
:
...
...
dzien8/emps3_dodatki/p0_test_odczytu.py
View file @
a4e159e6
from
employees
import
read_csv
from
employees
import
Employee
emps
=
read_csv
(
'emps.csv'
)
emps
=
Employee
.
read_csv
(
'emps.csv'
)
print
(
'Liczba odczytanych rekordów:'
,
len
(
emps
))
for
emp
in
emps
:
print
(
emp
)
dzien8/emps3_dodatki/p1_wypisz_dane.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
# Wszystkie szczegóły związane z dostępem do pliku, są ukryte w tej funkcji
emps
=
read_csv
(
'emps.csv'
)
# Aby wykonać operacje "dla każdego pracownika", wykonujemy pętlę po elementach listy `emps`.
# Pojedynczy element `emp` to obiekt klasy `Employee`, a dane pracownika są dostępne3 w postaci atrybutów tego obiektu,
# np. `.first_name`, `.salary`
for
emp
in
emps
:
print
(
f
'Pracownik {emp.first_name} {emp.last_name} ({emp.job_title}) zarabia ${emp.salary}'
)
dzien8/emps3_dodatki/p2_wypisz_bogatych.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
ile
=
0
for
emp
in
emps
:
if
emp
.
salary
>=
10
_000
:
print
(
f
'Pracownik {emp.first_name} {emp.last_name} ({emp.job_title}) zarabia ${emp.salary}'
)
ile
+=
1
print
(
'Liczba bogatych:'
,
ile
)
dzien8/emps3_dodatki/p3_srednia_wszystkich.py
View file @
a4e159e6
from
employees
import
read_csv
from
employees
import
Employee
emps
=
read_csv
(
'emps.csv'
)
emps
=
Employee
.
read_csv
(
'emps.csv'
)
suma
=
0
for
emp
in
emps
:
suma
+=
emp
.
salary
...
...
dzien8/emps3_dodatki/p4_srednia_jeden_job_v1.py
View file @
a4e159e6
from
employees
import
read_csv
from
employees
import
Employee
emps
=
Employee
.
read_csv
(
'emps.csv'
)
jaki_job
=
input
(
'Podaj nazwę stanowiska, np. Programmer: '
)
emps
=
read_csv
(
'emps.csv'
)
ile
=
0
suma
=
0
for
emp
in
emps
:
...
...
dzien8/emps3_dodatki/p4_srednia_jeden_job_v2.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
import
statistics
emps
=
read_csv
(
'emps.csv'
)
jobs
=
{
emp
.
job_title
for
emp
in
emps
}
print
(
'Dostępne stanowiska:'
,
jobs
)
jaki_job
=
input
(
'Podaj nazwę stanowiska, np. Programmer: '
)
try
:
srednia
=
statistics
.
mean
(
emp
.
salary
for
emp
in
emps
if
emp
.
job_title
==
jaki_job
)
print
(
f
'Średnia na stanowisku {jaki_job} jest równa {srednia}'
)
except
statistics
.
StatisticsError
:
print
(
f
'Nikt nie pracuje na stanowisku {jaki_job}'
)
dzien8/emps3_dodatki/p5_grupowanie_v1.py
deleted
100644 → 0
View file @
bfddc056
''' Dla każdej wartości job_title, która występuje w danych,
oblicz liczbę pracowników i średnią pensję.
Spodziewane wyniki (może w innej kolejności):
* President - 1 - 24000
* Administation Vice President - 2 - 17000
* Programmer - 5 - 5760
* ... ????
'''
# W tej wersji wielokrotnie przeglądamy cała listę:
# najpierw, aby ustalić, jakie są joby, a następnie dla każdego joba licząc średnią tak, jak w zadaniu 4.
# Ta wersja nie jest optymalna pod względem wydajności.
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
# etap 1: zbieranie informacji o jobach
jobs
=
set
()
for
emp
in
emps
:
jobs
.
add
(
emp
.
job_title
)
# print(jobs)
# etap 2: dla każdego joba liczymy liczbę oraz sumę pracowników i wypisujemy średnią
for
job
in
jobs
:
ile
=
0
suma
=
0
for
emp
in
emps
:
if
emp
.
job_title
==
job
:
suma
+=
emp
.
salary
ile
+=
1
srednia
=
suma
/
ile
print
(
f
'| {job:32} | {ile:2} | {srednia:8.2f} |'
)
dzien8/emps3_dodatki/p5_grupowanie_v2.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
# W tej wersji dane (sumę pensji i liczbę osoób) zbieramy do słowników, gdzie kluczami są nazwy jobów.
emps
=
read_csv
(
'emps.csv'
)
ilosci
=
{}
sumy
=
{}
for
emp
in
emps
:
if
emp
.
job_title
in
sumy
:
sumy
[
emp
.
job_title
]
+=
emp
.
salary
ilosci
[
emp
.
job_title
]
+=
1
else
:
sumy
[
emp
.
job_title
]
=
emp
.
salary
ilosci
[
emp
.
job_title
]
=
1
# print(sumy)
# print(ilosci)
for
job
in
sumy
.
keys
():
suma
=
sumy
[
job
]
ilosc
=
ilosci
[
job
]
srednia
=
suma
/
ilosc
print
(
f
'| {job:32} | {ilosc:2} | {srednia:8.2f} |'
)
dzien8/emps3_dodatki/p5_grupowanie_v3.py
View file @
a4e159e6
from
employees
import
read_csv
from
employees
import
Employee
emps
=
read_csv
(
'emps.csv'
)
emps
=
Employee
.
read_csv
(
'emps.csv'
)
slownik
=
{}
# W słowniku kluczem jest job, a wartością jest dwuelementowa lista: [count, sum]
...
...
dzien8/emps3_dodatki/p5_grupowanie_v4.py
deleted
100644 → 0
View file @
bfddc056
from
collections
import
defaultdict
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
ilosci
=
defaultdict
(
int
)
sumy
=
defaultdict
(
float
)
for
emp
in
emps
:
sumy
[
emp
.
job_title
]
+=
emp
.
salary
ilosci
[
emp
.
job_title
]
+=
1
for
job
in
sumy
.
keys
():
suma
=
sumy
[
job
]
ilosc
=
ilosci
[
job
]
srednia
=
suma
/
ilosc
print
(
f
'| {job:32} | {ilosc:2} | {srednia:8.2f} |'
)
dzien8/emps3_dodatki/p5_grupowanie_v5.py
deleted
100644 → 0
View file @
bfddc056
from
collections
import
defaultdict
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
# Jako parametr defaultdict wpisuje się "przepis na nowy element".
# Gdy podajemy przykłądowo int, to używane jest to w taki sposób, że jest wywoływane int() , a to daje wynik 0.
# Tutaj podamy funkcję, która nie pobiera argumentów, a wyniku zwraca nową listę zaweirającą dwa zera.
slownik
=
defaultdict
(
lambda
:
[
0
,
0
])
for
emp
in
emps
:
slownik
[
emp
.
job_title
][
0
]
+=
1
slownik
[
emp
.
job_title
][
1
]
+=
emp
.
salary
print
(
slownik
)
print
()
for
job
,
(
ilosc
,
suma
)
in
slownik
.
items
():
srednia
=
suma
/
ilosc
print
(
f
'| {job:32} | {ilosc:2} | {srednia:8.2f} |'
)
dzien8/emps3_dodatki/p6_min_max_v1.py
deleted
100644 → 0
View file @
bfddc056
# Wypisz dane pracownika, który zarabia najwięcej, i pracownika, który zarabia najmniej.
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
max_salary
=
0
max_ktotojest
=
''
min_salary
=
1
_000_000_000
# min_salary = float('+inf')
min_ktotojest
=
''
for
emp
in
emps
:
if
emp
.
salary
>
max_salary
:
max_salary
=
emp
.
salary
max_ktotojest
=
emp
.
first_name
+
' '
+
emp
.
last_name
for
emp
in
emps
:
if
emp
.
salary
<
min_salary
:
min_salary
=
emp
.
salary
min_ktotojest
=
emp
.
first_name
+
' '
+
emp
.
last_name
print
(
'Najwyższa pensja:'
,
max_salary
,
'Pracownik:'
,
max_ktotojest
)
print
(
'Najniższa pensja:'
,
min_salary
,
'Pracownik:'
,
min_ktotojest
)
dzien8/emps3_dodatki/p6_min_max_v2.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
# Uwaga! Pod nazwami min i max znajdują się wbudowane funkcje Pythona.
# Można pod te nazwy wpisać własne wartości, ale wtedy w obrębie tego programu nie będą dostępne funkcje min i max
max
=
None
min
=
None
for
emp
in
emps
:
if
max
is
None
or
emp
.
salary
>
max
.
salary
:
max
=
emp
if
min
is
None
or
emp
.
salary
<
min
.
salary
:
min
=
emp
print
(
'Najbogatszy:'
,
max
)
print
(
'Najbiedniejszy:'
,
min
)
dzien8/emps3_dodatki/p6_min_max_v3.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
# Na początku do min i max wpisujemy pierwszego pracownika, a później w pętli sprawdzamy, czy kotś ma większą / mniejszą pensję
max
=
emps
[
0
]
min
=
emps
[
0
]
for
emp
in
emps
:
if
emp
.
salary
>
max
.
salary
:
max
=
emp
if
emp
.
salary
<
min
.
salary
:
min
=
emp
print
(
'Najbogatszy:'
,
max
)
print
(
'Najbiedniejszy:'
,
min
)
dzien8/emps3_dodatki/p6_min_max_v4.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
# etap 1: ustalamy wartości minimalnej i maksymalnej pensji
max_salary
=
max
(
emp
.
salary
for
emp
in
emps
)
min_salary
=
min
(
emp
.
salary
for
emp
in
emps
)
# etap 2: wypisujemy te osoby, które mają właśnie taką pensję
print
(
'Najwyższa pensja:'
,
max_salary
)
print
(
'Zarabia tyle:'
)
for
emp
in
emps
:
if
emp
.
salary
==
max_salary
:
print
(
emp
)
print
()
print
(
'Najniższa pensja:'
,
min_salary
)
print
(
'Zarabia tyle:'
)
for
emp
in
emps
:
if
emp
.
salary
==
min_salary
:
print
(
emp
)
dzien8/emps3_dodatki/p7_wypisz_posortowanych_v1.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
print
(
f
'Wczytano {len(emps)} rekordów:'
)
emps
.
sort
(
key
=
lambda
emp
:
emp
.
salary
,
reverse
=
True
)
for
emp
in
emps
:
print
(
emp
)
dzien8/emps3_dodatki/p7_wypisz_posortowanych_v2.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
read_csv
emps
=
read_csv
(
'emps.csv'
)
print
(
f
'Wczytano {len(emps)} rekordów:'
)
for
emp
in
sorted
(
emps
,
key
=
lambda
emp
:
emp
.
salary
,
reverse
=
True
):
print
(
emp
)
dzien8/emps3_dodatki/podwyzka.py
View file @
a4e159e6
from
employees
import
*
from
employees
import
Employee
emps
=
Employee
.
read_csv
(
'emps.csv'
)
emps
=
read_csv
(
'emps.csv'
)
job
=
input
(
'Podaj nazwę stanowiska: '
)
podwyzka
=
int
(
input
(
'Podaj kwotę podwyżki: '
))
...
...
@@ -8,4 +9,4 @@ for emp in emps:
if
emp
.
job_title
==
job
:
emp
.
salary
+=
podwyzka
write_csv
(
emps
,
'zmienione.csv'
)
Employee
.
write_csv
(
emps
,
'zmienione.csv'
)
dzien8/emps3_dodatki/prosty_przyklad.py
deleted
100644 → 0
View file @
bfddc056
from
employees
import
Employee
steven
=
Employee
(
100
,
'Steven'
,
'King'
,
'President'
,
24000
,
'2001-01-01'
,
'Executive'
,
'Jasna 14/16a'
,
'01-321'
,
'Warszawa'
,
'Polska'
)
print
(
steven
)
print
(
f
'{steven.first_name} pracuje w mieście {steven.city}'
)
dzien8/emps3_dodatki/zmienione.csv
deleted
100644 → 0
View file @
bfddc056
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment