#List Comprehensions
#lista bazowa
# lista = [1, 2, 3, 4, 5]
#list comprrehensions
# lista2 = [expression for item in iterable if condition]
# ● expression: Operacja lub wartość, która zostanie zastosowana do
# każdego elementu w iterowalnej sekwencji.
# ● item: Pojedynczy element z iterowalnej sekwencji.
# ● iterable : Sekwencja, którą chcemy przejść (np. lista, krotka, zbiór).
# ● condition: Opcjonalny warunek, który musi być spełniony, aby element
# został uwzględniony w nowej liście.
lista = [1,2,3,4,5,6,7,8,9,10]
#print(kwadraty)
# Stworz liste "minus" ktora bazuje na liscie kwadraty oraz niech 
# ta lista zawiera elementy o 1 mniejsze od elementow listy kwadraty
# minus = [i-1 for i in kwadraty]
# print(minus)
podwojenia = [2*i for i in range(10)]
# print(podwojenia)
kwadraty = [i**2 for i in lista if i%2 == 1]
# print(kwadraty)
# łączenie list w jedno
# panstwa = ["Polska", "Niemcy", "Francja", "Włochy"]
# stolice = ["Warszawa", "Berlin", "Paryż", "Rzym"]
# info = [f"Stolicą {panstwo} jest {stolica}" for panstwo, stolica in zip(panstwa, stolice)]
# print(info)
# # Na podstawie listy temperatur w stopniach Fahrenhaita wygeneruj liste ze
# # stopniami Celcjusza
# fahrnheit = [32, 68, 104, 140]
# celcjusz = [(i - 32)*5/9 for i in fahrnheit]
# print(celcjusz)




#obsługa wyjątków

# 1. Napisz funkcję dzielenie i mnożenie przyjmującą dwie wartości a i b, która
# wyświetli wynik działania a/b i a*b. Co się wydarzy jeżeli nie zaimplementujemy
# obsługi wyjątków i spróbujemy dzielić przez 0?
def dzialania(a, b):
    try:
        a/b
        pass
    except Exception as e:
        print(f"Typ błędu: {e}")
        pass
    else:
        print(f"Wynik dzielenia {a} przez {b} wynosi {a/b}")
        pass
    finally:
        print(f"Wynik mnożenia {a} razy {b} wynosi {a*b}")
        pass
dzialania(5,7)