Funkce s výjimkou v Pythonu

Výjimky je velmi pohodlné vyhazovat, popisovat je ve funkcích pomocí podmínek.

Pojďme vytvořit funkci get_sum, která vypíše součet prvků seznamu pouze pokud je délka seznamu menší nebo rovna 3. V opačném případě nechť je vyhozena naše výjimka ToBigLength:

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

Nyní předáme funkci get_sum seznam a vypíšeme funkci do konzole:

pythonlst = [1, 2, 3, 4]

print(get_sum(lst)) # vypíše 6

Také ve funkcích lze nastavit zachycení několika typů výjimek. Pojďme vytvořit ještě jednu třídu výjimek ToSmallLength:

pythonclass ToSmallLength(Exception):
  pass

Nyní popíšeme ve funkci podmínku, pokud je délka seznamu rovna nule, nechť je vyhozena ToSmallLength. Pokud nebude zachycena žádná výjimka, nechť je vypsán součet všech prvků seznamu:

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

Pro pohodlí lze uzavřít seznam, který bude předán do parametru funkce, samotnou funkci a její volání do bloku try. A zachycení našich dvou výjimek umístíme v blocích except:

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

Vytvořte funkci, která jako parametr bude přijímat číslo. V ní popište podmínky, pokud je číslo záporné a rovno nule, nechť jsou vyhozeny odpovídající výjimky. v opačném případě nechť je číslo vynásobeno 3.

Задание 2

Vyzkoušejte funkci, kterou jste vytvořili, pomocí konstrukce try-except. Při tom také zachyťte vaše výjimky.