Funkcja z wyjątkiem w Pythonie

Wyjątki są bardzo wygodne do wyrzucania, opisując je w funkcjach za pomocą warunków.

Stwórzmy funkcję get_sum, która będzie zwracać sumę elementów listy tylko, jeśli długość listy jest mniejsza lub równa 3. W przeciwnym razie, niech zostanie rzucony nasz wyjątek ToBigLength:

pythondef get_sum(lst):
  if len(lst) <= 3:
    return sum(lst)
  else:
    raise ToBigLength

Teraz przekażmy do funkcji get_sum listę i wypiszmy wynik funkcji w konsoli:

pythonlst = [1, 2, 3, 4]

print(get_sum(lst)) # wyświetli 6

Również w funkcjach można ustawiać przechwytywanie kilku typów wyjątków. Stwórzmy jeszcze jedną klasę wyjątków ToSmallLength:

pythonclass ToSmallLength(Exception):
  pass

Teraz opiszmy w funkcji warunek, jeśli długość listy jest równa zero, to niech zostanie rzucony ToSmallLength. Jeśli nie zostanie przechwycony żaden wyjątek, to niech zostanie zwrócona suma wszystkich elementów listy:

pythondef get_sum(lst):
  if len(lst) > 3:
    raise ToBigLength
  if len(lst) == 0:
    raise ToSmallLength
  else:
    return sum(lst)

Dla wygody można umieścić listę, która będzie przekazywana do parametru funkcji, samą funkcję i jej wywołanie w bloku try. A przechwytywanie naszych dwóch wyjątków umieśćmy w blokach except:

pythontry:
  lst = [1, 2, 3]
  res = get_sum(lst)
  print(res)
except ToBigLength:
  print('error 1')
except ToSmallLength:
  print('error 2')
Задание 1

Stwórz funkcję, która parametrem będzie przyjmować liczbę. W niej opisz warunki, jeśli liczba jest ujemna lub równa zero, to niech zostaną rzucone odpowiednie wyjątki. W przeciwnym razie niech liczba zostanie pomnożona przez 3.

Задание 2

Sprawdź działanie stworzonej przez ciebie funkcji z pomocą konstrukcji try-except. Przy tym również przechwyć twoje wyjątki.