Функсия бо истисно дар Python

Истисноҳо хеле боқулак партофта мешаванд, дар функсияҳо бо истифода аз шартҳо навишта шаванд.

Биёед функсияи get_sum созем, ки ҳамаи унсурҳои рӯйхатро фақат дар сурате ҷамъ мекунад, ки дарозии рӯйхат хурд ё баробар бо 3 бошад. Дар акси ҳол, бигзор истиснои мо ToBigLength партофта шавад:

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

Ҳоло рӯйхатро ба функсияи get_sum гузаронем ва натиҷаро дар консол чоп кунем:

pythonlst = [1, 2, 3, 4]

print(get_sum(lst)) # 6-ро чоп мекунад

Инчунин дар функсияҳо мумкин аст чанд намуди истисноро дастгирӣ кардан. Биёед як синфи дигари истисно ToSmallLength созем:

pythonclass ToSmallLength(Exception):
  pass

Ҳоло дар функсия шартеро нависем, агар дарозии рӯйхат ба сифр баробар бошад, пас бигзор ToSmallLength партофта шавад. Агар ягон истисно дастгирӣ нашавад, пас бигзор ҳамаи унсурҳои рӯйхат ҷамъ шаванд:

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

Барои осонӣ, рӯйхатеро, ки ба параметри функсия мегузарад, худ функсия ва фарохониашро дар блоки try қарор додан мумкин аст. Ва дастгирии ду истиснои моро дар блокҳои except ҷойгир кунем:

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

Функсияе созед, ки параметраш адад қабул мекунад. Дар он шартҳоро нависед, агар адад манфӣ ва ба сифр баробар бошад, пас бигзор истисноҳои мувофиқ партофта шаванд. дар акси ҳол бигзор адад ба 3 зарб карда шавад.

Задание 2

Коркарди функсияи сохтаи худро бо йӯрии сохтмони try-except санҷед. Дар ин ҳол инчунин истисноҳои худро дастгирӣ кунед.