Хелпикс

Главная

Контакты

Случайная статья





V. Ошибки и отладка.



 

Вероятно, вы уже обратили внимание, что при написании программ у вас возникали хоть и разные ошибки, но у многих из них было что-то общее. На самом деле существуют три основных типа ошибок, которые нужно научиться различать, так вы сможете без труда их исправить.

Синтаксическая ошибка: происходит, когда встречается код, который не соответствует правилам языка Python. Например: отсутствие кавычек вокруг строковой переменной, невыставленное двоеточие или отсутствие отступов после оператора if. Интерпретатор останавливается и сообщает об ошибке без дальнейшего выполнения программы.

При запуске программа сразу же выводит текст ошибки и не выполняется. Указатель в данном случае можно не очень точно показывать место в коде, в котором допущена ошибка. В последних версиях python логи более точные.

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

 

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

Логическая ошибка (смысловая): происходит, когда программа ведет себя не так, как было задумано. Например, порядок действий в вычисляемом выражении задан неправильно или неверно были расставлены отступы во вложенных операторах условия и т. д. Интерпретатор запускает программу и не сообщает об ошибке. Но все работает не так, как хотелось бы.

С исправлением первых двух типов ошибок справиться достаточно просто, поскольку интерпретатор сообщает, где ошибка произошла, а в среде разработки чаще всего указывается строка, на которой эта ошибка возникла. А для логических ошибок требуется детальное изучение кода, чтобы найти такие ошибки, разработан специальный механизм отладки.

 

Рассмотрим задачу:

 

В программу закралась логическая ошибка. При вводе суммы 10000 мы хотели бы получить 11000, вместо 132000. Что-то идёт не так. Для поиска проблемы мы можем воспользоваться отладчиком.

 

Что бы запустить программу в режиме отладки необходимо сперва поставить breakpoint(2) –точку остановки. Для этого щёлкните левой кнопкой мыши по той строке, с которой вы хотите начать отладку, в область между номером строки и кодом. После чего необходимо запустить программу кнопкой debug(1).

При таком запуске программа не будет сразу выполняться целиком, она остановится на той строке, которую вы выбрали. Внизу помимо консоли(6) появятся ещё два окна и панель управления отладкой.

В вашем коде строка, которая будет выполнена следующей будет выделена синим цветом(3).

Одно из окон внизу экрана будет показывать все находящиеся на текущий момент выполнения программы переменные и их значения(5).

Что бы выполнить следующую команду вашей программы нужно будет нажать кнопку step_over(4).

 

Логическая ошибка в данной задаче заключена в следующем: при вводе некоторых чисел, срабатывают сразу несколько условий. Например при вводе 10000 сначала срабатывает условие 8 строки, число увеличивается до 11000, после чего срабатывает условие 10 строки, 11000 умножается на 1. 2 и мы в ответе получаем 13200.

Что бы такого не происходило, нам необходимо связать все три условия. Можно в 10 и 12 строках ifзаменить на elif.

 

Попытайтесь выяснить что делает эта программа (используйте отладчик):

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

 

Домашнее задание:

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

Пример:

Ввод:

Вывод:

2) Напишите программу, имитирующую простой диалог с пользователем. Для начала пусть она попросит пользователя представиться, затем задаст пару вопросов и отреагирует на ответы (желательно осмысленно). А затем возможно даже позволит пользователю задать пару вопросов, и сама ответит на них. Как минимум 4 вопроса-ответа с двумя вариантами реакций на них.

3) Последовательность Фибоначчи описывается так: первый и второй элемент последовательности равны 1, каждый последующий равен сумме двух предыдущих. Напишите программу, которая считает число n, а затем выведет nэлементов последовательности Фибоначчи.

Пример:

Ввод:

Вывод:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.