Лабораторная работа № 8. Тестирование и отладка программ

Теоретические сведения

Сообщение об ошибке

После возникновения ошибки, интерпретатор Python выводит сообщение с информацией для программиста. На изображении показаны важные элементы сообщения:

Описание ошибки

Описание ошибки

Чтобы сделать описание ошибок подробным и более понятным учащемуся, рекомендуется использовать модуль под названием friendly.

СоветУстановка модуля

Если вы заходите в дальнейшем использовать модуль friendly в своей работе, его нужно установить на ваш компьютер. Для этого нужно открыть командную строку и набрать команду pip install friendly.

Список ошибок

В таблице перечислены имена часто появляющихся ошибок и описание причин их появления.

Имя ошибки Пояснение
SyntaxError Ошибка в синтаксисе: пропущен необходимый символ, не хватает открывающей или закрывающей скобки и т.д.
NameError В выражении используется переменная, которой ещё не было присвоено значение. Возможна опечатка в имени переменной, функции, класса.
ValueError Функция ожидала аргумент другого типа. Например в функцию int передана строка, которая не содержит целое число.
TypeError В выражении используются несовместимые типы. Например попытка сложить строку и число. Или в функцию передано неправильное количество аргументов. Для проверки типа переменной можно использовать функцию type().
IndexError Попытка получить элемент из списка, или символ из строки по индексу, которого нет в последовательности.

Исправление синтаксических ошибок

  • Убедитесь, что для имён переменных не используются служебные слова языка.
  • В начале нового блока расположено двоеточие (после for, while, if, def, class).
  • Соблюдены правила использования отступов.
  • Строки обладают парными кавычками.
  • Для каждой открывающей скобки есть своя закрывающая – (), {}, [].

Исправление ошибок времени выполнения

Программа ничего не выводит на экран

Убедитесь, что описанные в программе функции или методы классов вызываются, для получения результата и вывода их на экран с помощью print.

Программа выполняется без остановки

Это может произойти за-за бесконечного цикла. Чтобы найти цикл, который не завершается, разместите перед каждым циклом в программе print c сообщением “Начало цикла N”, а после цикла - “Конец цикла N”, где N - номер цикла по-порядку. Таким образом можно определить, какой из циклов в программе выполняется бесконечно:

print("Начало цикла 1")
x = 1
while x < 10:
    y = x * x
    print(x)
print("Конец цикла 1")

Когда бесконечный цикл найден, разместите в конце цикла print с выводом переменной цикла и условия завершения цикла (для while):

x = 1
while x < 10:
    y = x * x
    print(x, x < 10)

В примере выше получим следующее:

...
1 True
1 True
1 True
...

Исходя из вывода становится понятно, что условие завершения цикла никогда не становится ложным, так как не изменяется значение переменной x. Исправленная программа выглядит следующим образом:

x = 1
while x < 10:
    y = x * x
    x = x + 1 # изменение переменной цикла

Задания для самостоятельной работы

💻 Задание 1. Тестирование программ

Предложите набор тестовых данных для проверки корректности работы функции triangle(a, b, c), которая по введённым длинам сторон треугольника a, b и c вернёт одно из следующих значений: не треугольник, разносторонний, равнобедренный, равносторонний.

В текстовые поля формы вводите различные комбинации входных данных, которые позволят проверить корректность работы функции.

Полоска Покрытие тестами полностью заполнится после того. как будут проверены все тестовые кейсы.

Покрытие тестами: 0

💻 Задание 2. Отладка программ

Распакуйте архив Задание2.zip. Последовательно открывайте программы из архива в редакторе IDLE. Исправьте синтаксические и семантические ошибки в программах. Убедитесь, что решение соответствует условию задачи.

💻 *Задание 3. Функция triangle()(sam03.py)

Реализуйте функцию из Задания 1. Проверьте работоспособность функции на предложенных вами тестовых данных.