plan na czwartek

This commit is contained in:
2025-12-17 21:54:38 +01:00
parent 168c5d1c32
commit f2754cba35
22 changed files with 611 additions and 1 deletions

7
dzien_04/Readme.md Normal file
View File

@@ -0,0 +1,7 @@
Plan:
- kolejne moduły - Faker i przykład z pliku dzien_03
- importowanie własnych funkcji z innych plików
(wysyłka maili na podstawie: https://github.com/thevickypedia/gmail-connector)
- zasieg zmiennych, mutable i immutable
- klasy
- pliki i operacje... rozpoznawanie po nagłówkach

Binary file not shown.

View File

@@ -0,0 +1,72 @@
# nothing
from faker import Faker
from random import randint, random, choice
import pandas as pd
fake = Faker("pl_PL")
papiery = [
"PKOGS",
"PKOSO",
"RENTIERFIZ",
"PZUAKORD",
"PKOGD",
"INVGLDFIZ",
"PKOASZEWZ",
"INVFIZ",
"IPOBENE3A",
"INVCEEFIZ",
]
daty = [
"2025-03-01",
"2025-03-02",
"2025-03-03",
"2025-03-04",
"2025-03-05",
"2025-03-06",
"2025-03-07",
"2025-05-08",
"2025-05-09",
"2025-05-10",
"2025-05-11",
"2025-05-12",
"2025-04-13",
"2025-04-14",
"2025-04-15",
]
osoby = []
for _ in range(20):
osoby.append(fake.name())
elementy_dat = []
elementy_inst = []
elementy_osoba = []
elementy_ilosc = []
elementy_obrot = []
for _ in range(20000):
data = choice(daty)
instrument = choice(papiery)
osoba = choice(osoby)
ilosc = randint(100,2000)
obrot = ilosc * random()*1000
elementy_dat.append(data)
elementy_inst.append(instrument)
elementy_osoba.append(osoba)
elementy_ilosc.append(ilosc)
elementy_obrot.append(obrot)
bazowy_slownik_dla_df = {
"data": elementy_dat,
"osoba": elementy_osoba,
"instrument": elementy_inst,
"ilosc": elementy_ilosc,
"obrot": elementy_obrot,
}
df = pd.DataFrame(bazowy_slownik_dla_df)
df.to_excel("bazowy_slownik_dla_df_faker.xlsx")

View File

@@ -0,0 +1,13 @@
class Osoba:
def __init__(self, name, age=30, sex="M"):
self.name = name
self.sex = sex
self.age = age
print(f"Start obiektu: {id(self)}")
lista_osob = []
for _ in range(10):
osoba = Osoba("Adam Jurkiewicz")
lista_osob.append(osoba)
print(lista_osob)

View File

@@ -0,0 +1,27 @@
from random import choice, randint
class Osoba:
def __init__(self, name, age=30, sex="M"):
self.name = name
self.sex = sex
self.age = age
print(f"Start obiektu: {id(self)} - plec: {self.sex} wiek: {self.age}")
def __del__(self):
print (f"Bye, bye: {id(self)}....")
def __str__(self):
return f"Oto osoba - {self.name} "
lista_osob = []
for nr in range(10):
wiek = randint(20,50)
plec = choice(["M","K","X"])
osoba = Osoba("Jurkiewicz", sex=plec, age=wiek)
lista_osob.append(osoba)
lista_osob.append(osoba)
print(lista_osob)
print("----------------------")
for osoba in lista_osob:
print(osoba)

View File

@@ -0,0 +1,38 @@
from random import choice, randint
nazwiska = [
"Sylwia Ciuruś",
"Marcelina Janc",
"Dorota Leśny",
"Hubert Beker",
"Albert Budzeń",
"Bruno Kargol",
"Olaf Juroszek",
]
class Osoba:
def __init__(self, name="XXX", age=30, sex="M"):
self.name = name
self.sex = sex
self.age = age
print(f"Start obiektu: {id(self)} - plec: {self.sex} wiek: {self.age}")
def __del__(self):
print (f"Bye, bye: {id(self)}....")
def __str__(self):
return f"Oto osoba - {self.name} "
lista_osob = []
for nr in range(10):
wiek = randint(20,50)
plec = choice(["M","K","X"])
nazwisko = choice(nazwiska)
osoba = Osoba(nazwisko, sex=plec, age=wiek)
lista_osob.append(osoba)
print(lista_osob)
print("----------------------")
for osoba in lista_osob:
print(osoba)

View File

@@ -0,0 +1,58 @@
from random import choice, randint
nazwiska = [
"Sylwia Ciuruś",
"Marcelina Janc",
"Dorota Leśny",
"Hubert Beker",
"Albert Budzeń",
"Bruno Kargol",
"Olaf Juroszek",
]
class Osoba:
def __init__(self, name="XXX", age=30, sex="M"):
self.name = name
self.sex = sex
self.age = age
self.miesieczny_przychod = None
print(f"Start obiektu: {id(self)} - plec: {self.sex} wiek: {self.age}")
def __del__(self):
print (f"Bye, bye: {id(self)}....")
def __str__(self):
return f"Oto osoba - {self.name} "
def roczne_dochody(self):
if self.miesieczny_przychod is None:
return -1
return 12*self.miesieczny_przychod
def miesieczny_przychod_wpisz(self,wartosc):
if self.miesieczny_przychod is None:
self.miesieczny_przychod = wartosc
print(f"Zmieniam na {wartosc}")
else:
print("POzostawiam stare")
lista_osob = []
for nr in range(10):
wiek = randint(20,50)
plec = choice(["M","K","X"])
nazwisko = choice(nazwiska)
osoba = Osoba(nazwisko, sex=plec, age=wiek)
lista_osob.append(osoba)
print(lista_osob)
print("----------------------")
for obiekt_osoby in lista_osob:
mc = randint(2000,5000)
print(obiekt_osoby)
print(f"Roczny dochód wynosi przed: {obiekt_osoby.roczne_dochody()}")
obiekt_osoby.miesieczny_przychod_wpisz(200)
obiekt_osoby.miesieczny_przychod_wpisz(300)
# obiekt_osoby.miesieczny_przychod = "zero" -tak nie robimy!
print(f"Roczny dochód wynosi po : {obiekt_osoby.roczne_dochody()}")

View File

@@ -0,0 +1,88 @@
from random import choice, randint
nazwiska = [
"Sylwia Ciuruś",
"Marcelina Janc",
"Dorota Leśny",
"Hubert Beker",
"Albert Budzeń",
"Bruno Kargol",
"Olaf Juroszek",
]
class Osoba:
def __init__(self, name="XXX", age=30, sex="M", status = "Osoba"):
self.name = name
self.sex = sex
self.age = age
self.miesieczny_przychod = None
self.status = status
# print(f"Start obiektu: {id(self)} - plec: {self.sex} wiek: {self.age}")
def __str__(self):
return f"Oto osoba - {self.name} - {self.status=} "
def roczne_dochody(self):
if self.miesieczny_przychod is None:
return -1
return 12*self.miesieczny_przychod
def miesieczny_przychod_wpisz(self,wartosc):
if self.miesieczny_przychod is None:
self.miesieczny_przychod = wartosc
print(f"Zmieniam na {wartosc}")
else:
print("POzostawiam stare")
class Dyrektor(Osoba):
def __init__(self,name="Dyrektorskie nazwisko", age=40, sex="M"):
print("Uruchamiam init dyrektora")
super().__init__(name, age=age, sex=sex, status="Dyrektor")
def miesieczny_przychod_wpisz(self, wartosc):
self.miesieczny_przychod = wartosc *2
print(f"Zmieniam podwójnie dla dyrektora na {self.miesieczny_przychod}")
def roczne_dochody(self):
if self.miesieczny_przychod is None:
return -2
return 13*self.miesieczny_przychod
# zadanie - zdefiniować klasę Prektykant z rocznym dochodem 3 * miesięczny / -3
class Praktykant(Osoba):
nowy_status = "Praktykant"
def roczne_dochody(self):
if self.miesieczny_przychod is None:
return -3
return 3 * self.miesieczny_przychod
lista_osob = []
for nr in range(10):
wiek = randint(20,50)
plec = choice(["M","K","X"])
nazwisko = choice(nazwiska)
osoba = Osoba(nazwisko, sex=plec, age=wiek)
lista_osob.append(osoba)
# pojedynczy dyrektor
dyro = Dyrektor()
lista_osob.append(dyro)
praktyk = Praktykant("Adam praktykant", age=30, sex="X")
lista_osob.append(praktyk)
print(lista_osob)
print("----------------------")
for obiekt_osoby in lista_osob:
mc = randint(2000,5000)
print(obiekt_osoby)
print(f"Roczny dochód wynosi przed: {obiekt_osoby.roczne_dochody()}")
obiekt_osoby.miesieczny_przychod_wpisz(200)
obiekt_osoby.miesieczny_przychod_wpisz(300)
# obiekt_osoby.miesieczny_przychod = "zero" -tak nie robimy!
print(f"Roczny dochód wynosi po : {obiekt_osoby.roczne_dochody()}")

View File

@@ -0,0 +1,10 @@
class Computer:
pass
komputer1 = Computer()
komputer2 = Computer()
print(komputer1)
print(dir(komputer1))

View File

@@ -0,0 +1,22 @@
class Computer:
def __init__(self):
print("Startujemy...")
# definicja właściwości obiektów tej lasy
self.procesor = "CPU at start"
self.speed = "5 GHz"
self.cpu_speed = 5000
komputer1 = Computer()
komputer2 = Computer()
print(komputer1)
print(dir(komputer1))
print(dir(komputer2))
print(komputer1.procesor)
print(komputer2.procesor)
komputer1.procesor = "AMD M6"
print('-------------------')
print(komputer1.procesor)
print(komputer2.procesor)

View File

@@ -0,0 +1,32 @@
class Computer:
def __init__(self):
print("Startujemy...")
# definicja właściwości obiektów tej lasy
self.procesor = "CPU at start"
self.speed = "5 GHz"
self.cpu_speed = 5000
def informacje(self):
print(f"Mój komputer ma procesor {self.procesor}")
print(f"o prędkości {self.speed}")
return None
komputer1 = Computer()
komputer2 = Computer()
print(komputer1)
print(dir(komputer1))
print(dir(komputer2))
print(komputer1.procesor)
print(komputer2.procesor)
komputer1.procesor = "AMD M6"
print('-------------------')
print(komputer1.procesor)
print(komputer2.procesor)
print('-------------------')
komputer2.speed = "3,3 GHz"
komputer1.informacje()
komputer2.informacje()

View File

@@ -0,0 +1,47 @@
class Computer:
def __init__(self):
print("Startujemy...")
# definicja właściwości obiektów tej lasy
self.procesor = "CPU at start"
self.speed = "5 GHz"
self.cpu_speed = 5000
def informacje(self):
print(f"Mój komputer ma procesor {self.procesor}")
print(f"o prędkości {self.speed}")
return None
# utówrz metodę szybki i zwróć w niej True gdy self.cpu_speed>3000
# inaczej False - sprawdź, przetestuj, ustaw 1 obiekt na cpu_speed 1200
def szybki(self):
# return True if self.cpu_speed > 3000 else False
if self.cpu_speed> 3000:
return True
else:
return False
komputer1 = Computer()
komputer2 = Computer()
print(komputer1)
print(dir(komputer1))
print(dir(komputer2))
print(komputer1.procesor)
print(komputer2.procesor)
komputer1.procesor = "AMD M6"
print('-------------------')
print(komputer1.procesor)
print(komputer2.procesor)
print('-------------------')
komputer2.speed = "3,3 GHz"
komputer1.informacje()
komputer2.informacje()
print(komputer1.szybki())
print(komputer2.szybki())
komputer1.cpu_speed = 1200
print(komputer1.szybki())
print(komputer2.szybki())

View File

@@ -0,0 +1,27 @@
import hashlib
import os
from pyfsig import *
def dane_pliku(plik):
with open(plik, "rb") as plik_binarny:
dane = plik_binarny.read()
naglowek = dane[:32]
wielkosc = len(dane) / 1024 # w kb
suma_sha1 = hashlib.sha1(dane).hexdigest()
suma_md5 = hashlib.md5(dane).hexdigest()
# sprawdzenie content-type
matches = find_matches_for_file_header(file_header=naglowek)
return suma_sha1, suma_md5, wielkosc, matches
directory = "/home/adasiek/Documents"
if not os.path.exists(directory):
print(f"Directory {directory} doesn't exist")
exit(1)
for dirpath, dirname, files in os.walk(directory):
print(f"Katalog {dirpath}:")
for any_file in files:
pliczek = dirpath+"/"+any_file
sha1, md5, rozmiar, lista_content_type = dane_pliku(pliczek)
print(f"Plik {any_file} ma rozmiar: {rozmiar} i {md5=} {sha1=} / {lista_content_type=}")

View File

@@ -0,0 +1,27 @@
import hashlib
import os
from pyfsig import *
def dane_pliku(plik):
with open(plik, "rb") as plik_binarny:
dane = plik_binarny.read()
naglowek = dane[:32]
wielkosc = len(dane) / 1024 # w kb
suma_sha1 = hashlib.sha1(dane).hexdigest()
suma_md5 = hashlib.md5(dane).hexdigest()
# sprawdzenie content-type
matches = find_matches_for_file_header(file_header=naglowek)
return suma_sha1, suma_md5, wielkosc, matches
directory = "/home/adasiek/Documents"
if not os.path.exists(directory):
print(f"Directory {directory} doesn't exist")
exit(1)
for dirpath, dirname, files in os.walk(directory):
print(f"Katalog {dirpath}:")
for any_file in files:
pliczek = dirpath+"/"+any_file
sha1, md5, rozmiar, lista_content_type = dane_pliku(pliczek)
print(f"Plik {any_file} ma rozmiar: {rozmiar} i {md5=} {sha1=} / {lista_content_type=}")

View File

@@ -0,0 +1,8 @@
def liczymy(liczba):
print(f"{id(liczba)=}")
return (liczba+10)*3
print(liczymy(100))
liczba = 200
print("A", id(liczba))
print(liczymy(120))

View File

@@ -0,0 +1,15 @@
inna_liczba = 555
def liczymy(liczba):
print(f"{id(liczba)=}")
print(f"{id(inna_liczba)=} / {inna_liczba=}")
tmp_liczba = inna_liczba
tmp2 = liczba *3
return (liczba+10)*3
q = liczymy(100)
print(q)
liczba = 200
print("A", id(liczba), "B", id(inna_liczba))
print(liczymy(120))

View File

@@ -0,0 +1,17 @@
inna_liczba = 555
def liczymy(liczba):
print(f"{id(liczba)=}")
inna_liczba = 556
print(f"{id(inna_liczba)=} / {inna_liczba=}")
tmp_liczba = inna_liczba
tmp2 = liczba *3
return (liczba+10)*3
print("AA", id(inna_liczba))
q = liczymy(100)
print(q)
liczba = 200
print("A", id(liczba), "B", id(inna_liczba))
print(liczymy(120))

View File

@@ -0,0 +1,20 @@
inna_liczba = [555]
slownik = {}
def liczymy(liczba):
print(f"{id(liczba)=}")
inna_liczba.append(556)
slownik['lista'] = liczba
print(f"{id(inna_liczba)=} / {inna_liczba=}")
tmp_liczba = inna_liczba
tmp2 = liczba *3
return (liczba+10)*3
print("AA", id(inna_liczba))
q = liczymy(100)
print(q)
liczba = 200
print("A", id(liczba), "B", id(inna_liczba))
print(liczymy(120))

View File

@@ -0,0 +1,27 @@
inna_liczba = [555]
kolory = ("red", "blue")
slownik = {}
def liczymy(liczba):
print(f"{id(liczba)=}")
inna_liczba.append(liczba)
slownik['lista'] = liczba
print(f"{id(inna_liczba)=} / {inna_liczba=}")
tmp_liczba = inna_liczba.copy()
tmp_liczba.append(0)
return (liczba+10)*3
print("AA", id(inna_liczba))
q = liczymy(100)
print(q)
liczba = 200
print("A", id(liczba), "B", id(inna_liczba))
liczymy(120)
liczymy(220)
liczymy(320)
liczymy(420)
liczymy(520)
print(inna_liczba, slownik)

View File

@@ -0,0 +1,25 @@
class Jakas:
def __init__(self, liczba):
self.liczba = liczba
def fn():
print(cos1.liczba)
print(cos2.liczba)
print("-----------")
def pokaz(obiekt):
stringi = dir(obiekt)
print(f"{id(obiekt)=} >> {type(obiekt)} >> {stringi=}")
print("===========================")
cos1 = Jakas(12)
cos2 = Jakas(16)
cos1.liczba = 22
fn()
cos2.nowa = "NOWY"
print(cos1.nowa)
pokaz(cos1)
pokaz(cos2)

View File

@@ -0,0 +1,30 @@
# szablon
class Klasa:
def __init__(self, nazwa_klasy, przedmiot="BRAK"):
self.klasa = nazwa_klasy
if przedmiot == "BRAK":
raise Exception("ZŁY PRZEDMIOT")
self.przedmiot = przedmiot
def jaki_przedmiot(self):
return f"Klasa {self.klasa} to {self.przedmiot}"
class Informatyka(Klasa):
def __init__(self, nazwa_klasy):
super().__init__(nazwa_klasy, przedmiot="Informa")
class Biologia(Klasa):
def __init__(self, nazwa_klasy):
super().__init__(nazwa_klasy, przedmiot="Biol")
klasy = [
Informatyka("1A"),
Biologia("2A"),
Biologia("3A"),
]
for jaka in klasy:
print(jaka.jaki_przedmiot())
Klasa("Tu powinien być eroor")