Перахоп выключэнняў у Python

У Python у параўнанні з іншымі мовамі праграмавання вельмі многа сітуацый, якія выклікаюць выключэнні.

Давайце разгледзім іх падрабязней. Хай у нас ёсць спіс:

pythonlst = [1, 2, 3]

Звернемся да неіснуючага элемента спісу:

pythonprint(lts[4])

Пасля выканання кода выведзецца памылка (выключэнне):

errorIndexError: list index out of range

Калі ж нам трэба працягнуць працу без вываду выключэння, яго варта злавіць з дапамогай канструкцыі try-except. Яна мае наступны сінтаксіс:

pythontry:
  # код, які выклікае выключэнне
except:
  # апрацоўка памылкі

У блоку try варта размяшчаць код, які можа ўтрымліваць выключэнне. Калі раптам пры выкананні гэтага кода ўзнікне выключная сітуацыя, то выкананне кода не спыніцца, а перайдзе ў код блока except. У гэтым блоку варта прапісаць вывад паведамлення, максімальна дакладна апісваючага суць узнікшай памылкі.

Калі ж пры выкананні блока try ніякіх выключных сітуацый не здарылася, то карысны код проста выканаецца, а код з блока except - не.

Давайце зловім наша выключэнне пры звароце да неіснуючага элемента спісу. Для гэтага ў блок try размясцім код з патэнцыйнай памылкай. А ў блоку except пакажам вывад у кансоль паведамлення 'error: elem is not exist':

pythonlst = [1, 2, 3]
try:
  print(lst[4])
except:
  print('error: elem is not exist')

Пасля выканання кода выведзецца:

python'error: elem is not exist'

Пасля вывучэння канструкцыі try-except стыль напісанага вамі кода павінен змяніцца. Цяпер усе месцы, у якіх можа ўзнікнуць выключная сітуацыя, трэба абгортваць у try, а ў блоку except прапісваць рэакцыю на гэта выключэнне.

Задание 1

Спытайце ў карыстальніка два лікі. Падзеліце адно на другое. Злавіце выключную сітуацыю дзялення на нуль.

Задание 2

Спытайце ў карыстальніка лік. Знайдзіце квадратны корань з гэтага ліку. Злавіце выключную сітуацыю вымання кораня з адмоўнага ліку.

Задание 3

Дадзены спіс. Спытайце ў карыстальніка цэлы лік. Атрымайце элемент спісу, нумар якога ўвёў карыстальнік. Злавіце выключную сітуацыю, якая здарыцца, калі карыстальнік увёў лік па-за дыяпазонам спісу.

Задание 4

Дадзены наступны код:

pythonnum = '5'
res = num + 2

print(res)

Што не так з гэтым кодам? Выправіце яго недахопы.

Задание 5

Дадзены наступны код:

pythonlst = [1, 2, 3, 4]

def getElem(iter):
  print(iter[4])

getElem(lst)

Што не так з гэтым кодам? Выправіце яго недахопы.