Erandiga funktsioon Pythonis

Erandeid on väga mugav visata, neid funktsioonidesse tingimuste abil kirjutades.

Teeme funktsiooni get_sum, mis väljastab loendi elementide summa ainult siis, kui loendi pikkus on väiksem või võrdne 3. Vastasel juhul visatakse meie erand ToBigLength:

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

Nüüd edastame funktsioonile get_sum loendi ja väljastame funktsiooni konsooli:

pythonlst = [1, 2, 3, 4]

print(get_sum(lst)) # väljastab 6

Funktsioonides saab määrata ka mitu tüüpi erandeid püüda. Loome veel ühe erandite klassi ToSmallLength:

pythonclass ToSmallLength(Exception):
  pass

Nüüd kirjutame funktsiooni tingimuse, et kui loendi pikkus on võrdne nulliga, siis visatakse ToSmallLength. Kui ühtki erandit ei püüta, siis väljastatakse kõikide loendi elementide summa:

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

Mugavuse huvides saab loendi, mis edastatakse funktsiooni parameetriks, funktsiooni enda ja selle väljakutse panna try plokki. Ja meie kahe erandi püüdmise paigutame except plokkidesse:

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

Looge funktsioon, mis võtab parameetrina arvu. Kirjutage sellesse tingimused, et kui arv on negatiivne või võrdne nulliga, siis visatakse vastavad erandid. Vastasel juhul korrutatakse arv 3-ga.

Задание 2

Kontrollige loodud funktsiooni tööd konstruktsiooni try-except abil. Samal ajal püüdke ka teie erandid.