неділя, 28 травня 2017 р.

Помилки. Налаштування проекту. Оператори try та except

При створенні програм мовою Python, не рідко можуть виникати помилки. Це трапляється із усіма програмістами, а особливо із початківцями, тому не потрібно дуже засмучуватися, коли при виконанні вашої програми з'являється страшне червоне повідомлення. А от знати основні помилки та вміти їх обробляти дуже потрібно. Тому, давайте ознайомимося із основними помилками мови Python, які найчастіше зустрічаються у початківців:


BaseException - базовий виняток, від якого беруть початок всі інші:

  • StopIteration - породжується вбудованою функцією next, якщо в Ітератор більше немає елементів.
  • ArithmeticError - арифметична помилка.
  • AttributeError - об'єкт не має даного атрибута (значення або методу).
  • BufferError - операція, пов'язана з буфером, не може бути виконана.
  • EOFError - функція натрапила на кінець файлу і не змогла прочитати те, що хотіла.
  • ImportError - не вдалося імпортування модуля або його атрибута.
  • LookupError - некоректний індекс або ключ.
  • MemoryError - недостатньо пам'яті.
  • NameError - не знайдено змінної з таким ім'ям.
  • RuntimeError - виникає, коли винятку не потрапляє ні під одну з інших категорій.
  • SyntaxError - синтаксична помилка.
  • SystemError - внутрішня помилка.
  • TypeError - операція застосована до об'єкта невідповідного типу.
  • ValueError - функція отримує аргумент правильного типу, але некоректного значення.
  • UnicodeError - помилка, пов'язана з кодуванням / розкодуванням unicode в рядках.
  • Warning - попередження.
Наприклад, у нас є програма, яка запитує два числа у користувача, а виводить їх суму:
a=float(input())
b=float(input())
print(a+b)
Але що станеться, якщо користувач замість числа введе текст, або розділить цілу та дробову частину, комою, а не крапкою? А от що:
Виникає ValueError, яка означає, що введене значення не є дійсним число. І все,на цьому наша програма припиняє роботу. Якщо ж ми передбачимо дану помилку, і дії в випадку її виникнення, то ми зможемо зробити так, аби програма не закрилася, а продовжила виконувати свою функцію. Для цього існують оператори try та except:
try:
    дії, які потрібно виконати
except вид_помилки:
    дії, при виникненні даної помилки

Тобто, наприклад, якщо при виконанні нашої програми користувач ввів замість числа текст, вивелося би повідомлення що він не правильно ввів дані та повторно запитати дані у нього:
try:
     a=float(input())
except ValueError:
     print("Введіть число, розділивши цілу та дробову частину крапкою")
     a=float(input())
try:
     b=float(input())
except ValueError:
     print("Введіть число, розділивши цілу та дробову частину крапкою")
     b=float(input())
print(a+b)
Введемо числа 3.6 та 2,4 та подивимося, що вийде:
Як ви помітили, друге число ми ввели із помилкою, тому вивелося повідомлення і програма попросила ввести значення ще раз, що ми і зробили.
Також існують ще два не обов'язкові оператори, які використовують для обробки помилок: else finally:
try:
    дії, які потрібно виконати
except вид_помилки:
    дії, при виникненні даної помилки
else:
    дії, які виконується якщо помилка не виникла
finally:
    дії, які будуть виконуватися в будь-якому випадку

Наприклад, створимо програму, яка буде ділити одне число на інше. Та ми знаємо, що ділити на 0 не можна, тому, якщо друге число буде дорівнювати 0, програма видасть помилку. А ми передбачимо такий хід подій і застосуємо оператори try, except та else:
a=float(input())
b=float(input())
try:
     с=a/b
except ArithmeticError:
     print("Ділення на 0")
else:
     print(c)
Спочатку введемо числа 4 і 2, а потім числа 4 і 0 та поспостерігаємо за результатом. 

Список помилок взятий з сайту pythonworld.ru
Дізнатися більше про Python: proginschool.ho.ua

Немає коментарів:

Дописати коментар

Працюємо з Blockly Demos Code

Створимо все ту ж програму для розв'язування квадратних рівнянь, але тепер за допомогою Blockly Demos Code. Стаття про вступ до програм...