From 81ece7137ad5769916635cfb241cf2694438f5a6 Mon Sep 17 00:00:00 2001 From: Szymon P Date: Mon, 30 Mar 2026 11:44:13 +0200 Subject: [PATCH] xd --- uczelnia/2_semestr/python/laby/czwarty_lab.py | 105 +++++++++++++ uczelnia/2_semestr/python/laby/piaty_lab.py | 141 ++++++++++++++++++ 2 files changed, 246 insertions(+) create mode 100644 uczelnia/2_semestr/python/laby/czwarty_lab.py create mode 100644 uczelnia/2_semestr/python/laby/piaty_lab.py diff --git a/uczelnia/2_semestr/python/laby/czwarty_lab.py b/uczelnia/2_semestr/python/laby/czwarty_lab.py new file mode 100644 index 0000000..cf89d7e --- /dev/null +++ b/uczelnia/2_semestr/python/laby/czwarty_lab.py @@ -0,0 +1,105 @@ +from math import sqrt +from collections import namedtuple +import random + +# zadanie 1 +def getDistance(A: tuple[int, int], B: tuple[int,int]) -> float: + return sqrt((A[0] - B[0])**2 + (A[1] - B[1])**2) + +def analizujProstokat(A: tuple[int, int], B: tuple[int, int]) -> tuple[float, float]: + a = getDistance((A[0], A[1]), (B[0], A[1])) + b = getDistance((B[0], A[1]), (B[0], B[1])) + + circuit = a * 2 + b * 2 + field = a * b + + return (circuit, field) + +# zadanie 2 +def analizujProstokat2(prostokat) -> tuple[float, float]: + a = getDistance((prostokat.x1, prostokat.y1), (prostokat.x2, prostokat.y1)) + b = getDistance((prostokat.x2, prostokat.y1), (prostokat.x2, prostokat.y2)) + + circuit = a * 2 + b * 2 + field = a * b + + return (circuit, field) + +def pobieraj_liczby() -> list: + liczby: list[int] = [] + while True: + answer = input("Podaj liczbę lub napisz koniec: ") + if answer == "koniec": + break + liczby.append(int(answer)) + liczby.sort(reverse=True) + return liczby + +# zadanie 8 +def levenshtein(s: str, t: str): + d = [[0 for _ in range(len(s))], [0 for _ in range(len(t))]] + for i in range(1, len(s) + 1): + d[i][0] = i + d[0][i] = i + for j in range(1, len(t)): + for i in range(1, len(s)): + if s[i] == t[j]: + subsitutionCost = 0 + else: + subsitutionCost = 1 + d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + subsitutionCost) + return d + +if __name__ == "__main__": + # zad 1 + print("=== Zadanie 1 ===") + circuit, field = analizujProstokat((1, 2), (3, 4)) + print(f"Obwód wynosi: {circuit}, a pole: {field}") + + # zad 2 + print("=== Zadanie 2 ===") + prostokat = namedtuple('prostokat', ['x1', 'y1', 'x2', 'y2']) + p = prostokat(1, 2, 3, 4) + circuit, field = analizujProstokat2(p) + print(f"Obwód wynosi: {circuit}, a pole: {field}") + + # zad 3 + print("=== Zadanie 3 ===") + lista: list = [i for i in range(1, 6)] + print(f"Lista przed zamianą: {lista}") + lista[0], lista[4] = (lista[2], lista[1]) + print(f"Lista po zamianie: {lista}") + + # zad 4 + print("=== Zadanie 4 ===") + inna_lista: list = [i for i in range(1, 1002, 2)] + print(f"Inna lista: {inna_lista}") + + # zad 5 + print("=== Zadanie 5 ===") + print(pobieraj_liczby()) + + # zad 6 + print("=== Zadanie 6 ===") + lista1: list[int] = [i for i in range(0, 11)] + lista2 = lista1.copy() + lista2[3] = 234 + print(f"Lista 1: {lista1}") + print(f"Lista 2: {lista2}") + + # zad 7 + print("=== Zadanie 7 ===") + lista1 = [] + lista2 = [] + for i in range(10): + lista1.append(random.randint(0, 10)) + lista2.append(random.random()) + print(lista1) + print(lista2) + lista1.extend(lista2) + print(f"Lista po dodaniu {lista1}") + print("Próbkowanie:") + print(random.sample(lista1, 3)) + + # zad 8 + diff --git a/uczelnia/2_semestr/python/laby/piaty_lab.py b/uczelnia/2_semestr/python/laby/piaty_lab.py new file mode 100644 index 0000000..ee78ed9 --- /dev/null +++ b/uczelnia/2_semestr/python/laby/piaty_lab.py @@ -0,0 +1,141 @@ +from itertools import product +from collections import Counter, defaultdict, deque + +# zadanie 1 + +def zad1(): + tekst = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt +ut labore et dolore magna aliqua. Dolor sed viverra ipsum nunc aliquet bibendum enim. In +massa tempor nec feugiat. Nunc aliquet bibendum enim facilisis gravida. Nisl nunc mi ipsum +faucibus vitae aliquet nec ullamcorper. Amet luctus venenatis lectus magna fringilla. Volut- +pat maecenas volutpat blandit aliquam etiam erat velit scelerisque in. Egestas egestas fringilla +phasellus faucibus scelerisque eleifend. Sagittis orci a scelerisque purus semper eget duis. Nulla +pharetra diam sit amet nisl suscipit. Sed adipiscing diam donec adipiscing tristique risus nec +feugiat in. Fusce ut placerat orci nulla. Pharetra vel turpis nunc eget lorem dolor. Tristique +senectus et netus et malesuada. +""" + wyrazy: set = set() + + for word in tekst.lower().replace(".", "").replace(",", "").strip().split(" "): + wyrazy.add(word) + print(wyrazy) + +# zadanie 2 + +def zad2(): + A = {1, 2, 3, 4, 5} + B = {2, 4, 5} + + if A < B: print("A jest podzbiorem B") + if A > B: print("A jest nadzbiorem B") + + print(f"Przecięcie: {A.intersection(B)}") + print(f"Suma: {A.union(B)}") + print(f"Różnica: {A.difference(B)}") + print(f"Różnica symetryczna: {A.symmetric_difference(B)}") + +# zadanie 3 +def zad3(): + A = {1, 2, 3, 4, 5} + B = {2, 4, 5} + print(f"Iloczyn kartezjański: {list(product(A, B))}") + +def zad3_wlasne(): + A = {1, 2, 3, 4, 5} + B = {2, 4, 5} + iloczyn: set = set() + for x in A: + for y in B: + iloczyn.add((x,y)) + print(f"Iloczyn kartezjański: {iloczyn}") + + + +# zadanie 4 +def zad4(): + urodziny: dict = {} + while True: + name = input("Podaj nazwisko (lub wpisz koniec by zakończyć): ") + if name == "koniec": + return + + if name in urodziny: + print(f"Urodziny odbędą się: {urodziny[name]}") + else: + urodziny[name] = input("Taki wpis nie istnieje. Podaj datę urodzin: ") + +# zadanie 5 +def zad5(): + slownik: dict = { + "1" : "jeden", + "2" : "dwa", + "3" : "trzy", + "4" : "cztery", + "5" : "pięć", + "6" : "sześć", + "7" : "siedem", + "8" : "osiem", + "9" : "dziewięć", + } + tekst = input("Podaj liczbę od 1 do 99: ") + if tekst == "10": + result = "dziesięć" + print(result) + return + + result = slownik[tekst[0]] + if len(tekst) > 1: + match tekst[0]: + case "1": + result = f"{slownik[tekst[1]]}naście" + print(result) + return + case "2": + result += "dzieścia" + case "3" | "4": + result += "dzieści" + case "5" | "6" | "7" | "8" | "9": + result += "dziesiąt" + + if tekst[1] != "0": + result += f" {slownik[tekst[1]]}" + print(result) + +# zadanie 6 +def zad6(): + tekst = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt +ut labore et dolore magna aliqua. Dolor sed viverra ipsum nunc aliquet bibendum enim. In +massa tempor nec feugiat. Nunc aliquet bibendum enim facilisis gravida. Nisl nunc mi ipsum +faucibus vitae aliquet nec ullamcorper. Amet luctus venenatis lectus magna fringilla. Volut- +pat maecenas volutpat blandit aliquam etiam erat velit scelerisque in. Egestas egestas fringilla +phasellus faucibus scelerisque eleifend. Sagittis orci a scelerisque purus semper eget duis. Nulla +pharetra diam sit amet nisl suscipit. Sed adipiscing diam donec adipiscing tristique risus nec +feugiat in. Fusce ut placerat orci nulla. Pharetra vel turpis nunc eget lorem dolor. Tristique +senectus et netus et malesuada. +""" + wyrazy: Counter = Counter() + + for word in tekst.lower().replace(".", "").replace(",", "").strip().split(" "): + wyrazy[word] += 1 + print(wyrazy) + +# zadanie 7 +def zad7(): + slownik: defaultdict = defaultdict(lambda: 5) + for _ in range(5): + klucz = input("Podaj klucz: ") + print(f"Aktualna wartość pod kluczem: {klucz} to: {slownik[klucz]}") + slownik[klucz] += 1 + +# zadanie 8 +def zad8(): + wyrazy: deque = deque(input("Podaj wyraz: ")) + if wyrazy.popleft() != wyrazy.pop(): + print("Wyraz nie jest palindromem!") + return + print("Wyraz jest palindromem") + + +if __name__ == "__main__": + zad3() + zad3_wlasne()