Funktion med undantag i Python

Undantag är mycket bekväma att kasta ut, genom att specificera dem i funktioner med villkor.

Låt oss skapa en funktion get_sum, som kommer att returnera summan av elementen i en lista endast om listans längd är mindre än eller lika med 3. Annars, låt vårt undantag ToBigLength kastas:

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

Låt oss nu skicka en lista till funktionen get_sum och skriva ut resultatet till konsolen:

pythonlst = [1, 2, 3, 4]

print(get_sum(lst)) # kommer att skriva ut 6

I funktioner kan man också fånga flera typer av undantag. Låt oss skapa ytterligare en undantagsklass ToSmallLength:

pythonclass ToSmallLength(Exception):
  pass

Låt oss nu specificera ett villkor i funktionen: om listans längd är noll, låt ToSmallLength kastas. Om inget undantag fångas, låt summan av alla element i listan returneras:

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

För enkelhetens skull kan man placera listan som skickas till funktionens parameter, själva funktionen och dess anrop i ett try-block. Och fånga våra två undantag i except-block:

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

Skapa en funktion som tar ett nummer som parameter. Specificera villkor i den: om talet är negativt eller lika med noll, låt motsvarande undantag kastas. Annars, låt talet multipliceras med 3.

Задание 2

Testa funktionen du skapade med hjälp av konstruktionen try-except. Vid detta, fånga även dina undantag.