Как исправить ошибку в коде python
Перейти к содержимому

Как исправить ошибку в коде python

  • автор:

Python: Синтаксические ошибки

Если программа на Python написана синтаксически некорректно, то интерпретатор выводит на экран соответствующее сообщение. Также он указывает на файл и строчку, где произошла ошибка.

Синтаксическая ошибка возникает в том случае, когда код записали с нарушением грамматических правил. В естественных языках грамматика важна, но текст с ошибками обычно можно понять и прочитать. В программировании все строго. Мельчайшее нарушение — и программа даже не запустится. Примером может быть забытая ; , неправильно расставленные скобки и другие детали.

Вот пример кода с синтаксической ошибкой:

print('Hodor) 

Если запустить код выше, то мы увидим следующее сообщение:

$ python index.py File "index.py", line 1 print('Hodor) ^ SyntaxError: EOL while scanning string literal 

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

Задание

Это задание не связано с уроком напрямую. Но будет полезным потренироваться с выводом на экран.

Выведите на экран:

What Is Dead May Never Die

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

Определения

  • Синтаксическая ошибка — нарушение грамматических правил языка программирования.
  • SyntaxError (ошибка парсинга) — тип ошибок в Python, возникающих при наличии синтаксических ошибок в коде.

Ошибка в коде python как исправить?

IndentationError: expected an indented block
Как исправить?

  • Вопрос задан более трёх лет назад
  • 1706 просмотров

Комментировать

Решения вопроса 1

cronk

Делаю графику для кино. Роботы, взрывы, пиу-пиу!

Расставить отступы, в Питоне они важны

def getConfig(): with open("config.json", "rb") as f: data_file = f.read().decode("UTF-8") data = json.load(data_file) return data

Ответ написан более трёх лет назад

Нравится 5 1 комментарий

def getConfig(): with open("config.json", "rb") as f: data_file = f.read().decode("UTF-8") data = json.load(data_file) return data

Ответы на вопрос 1

Питон вокруг меня

Попробуйте использовать гугл, у вас есть код ошибки, нужно взять скопировать ‘IndentationError’, потом навести курсор на поисковую строку гугла, вставить код ошибки, нажать Enter. В первых 4 ссылках будет ответ.
Далее нужно вернутся на 32 строчку вашего скрипта и исправить эту ошибку.

Ответ написан более трёх лет назад

Комментировать

Нравится 2 Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Палиндромы leetcode, в VS все правильно, на сайте другой ответ, что делать?

  • 1 подписчик
  • 3 часа назад
  • 58 просмотров

Исправить ошибки в программе python

ТЗ: Необходимо исправить ошибки в коде,внести корректировки, чтобы программа заработала. Сначала получить у человека ожидаемое число баллов. После этого программа вычисляет свой ориентир: если число меньше 50, то оно удваивается. Если число больше или равно 50, то ориентиром будет число 100. Также выбирается, какой текст напечатать, в зависимости от введённого числа. В результате печатается этот текст и число. Например, если введено 35, программа ответит: «А постарайся набрать 70 баллов!». Если введено 70, программа ответит: «Давай стремиться к максимуму: 100 баллов!» `

a = input "Сколько баллов ты рассчитываешь набрать в этом тесте?" if a < 50: a = 2 * a s = "А постарайся набрать " else: a = 100 s = "Давай стремиться к максимуму: " print s + str(a) + " баллов!" 

Отслеживать

задан 30 янв 2020 в 16:38

11 1 1 бронзовый знак

Что у Вас не получается, укажите в вопросе, будьте так добры.

30 янв 2020 в 16:41

необходимо исправить код, чтобы он работал

30 янв 2020 в 16:44

В каком месте у Вас возникли проблемы, укажите, пожалуйста.

30 янв 2020 в 16:46

В этом и проблема, я не знаю что где и как исправлять

30 янв 2020 в 16:51

Код работает? Нет. Если нет, то в чем это выражается? Если выдает ошибку (а он выдает), то в самую первую очередь необходимо прочитать текст этой ошибки.. Если непонятно, что он означает, то вбить в поисковик и почитать пару ссылок, там будет разъяснено, что это за ошибка и как ее исправлять. У вас не возникнет НИ ОДНОЙ ошибки, которая не была бы уже 100500 раз описана в интернетах. Так нужно делать до тех пор, пока не перестанут появляется ошибки. Если после этого код все еще работает не так, как вам хочется, то вот тогда можно начинать спрашивать.

Борьба с багами

Следующий код определяет функцию add_underscores(), принимающую в качестве аргумента строковый объект и возвращающую новую строку – копию слова с каждым символом, окруженным подчеркиванием. Например, add_underscores("python") вернет «_p_y_t_h_o_n_» .

Вот неработающий код:

�� Найдите и исправьте ошибки в коде на Python: отладка с IDLE

Запустим. Выполнение останавливается на строке с определением функции.

Нажмите кнопку Go, чтобы выполнить код до точки останова:

�� Найдите и исправьте ошибки в коде на Python: отладка с IDLE

Код останавливается перед циклом for в функции add_underscores(). Обратите внимание, что на панели Locals отображаются две локальные переменные – word со значением «hello», и new_word со значением «_»,

Нажмите кнопку Step, чтобы войти в цикл for. Окно отладки изменится, и новая переменная i со значением 0 отобразится на панели Locals:

�� Найдите и исправьте ошибки в коде на Python: отладка с IDLE

Переменная i – это счетчик для цикла for, который можно использовать, чтобы отслеживать активную на данный момент итерацию.

Нажмите кнопку Step еще раз и посмотрите на панель Locals – переменная new_word приняла значение «h_»:

�� Найдите и исправьте ошибки в коде на Python: отладка с IDLE

Это неправильно т. к. сначала в new_word было значение «_», на второй итерации цикла for в ней должно быть «_h_». Если нажать Step еще несколько раз, то увидим, что в new_word попадает значение e_, затем l_ и так далее.

Шаг 3: Определение ошибки и исправление

Как мы уже выяснили – на каждой итерации цикла new_word перезаписывается следующим символом в строке «hello» и подчеркиванием. Поскольку внутри цикла есть только одна строка кода, проблема должна быть именно там:

new_word = word[i] + "_" 

Код указывает Python получить следующий символ word, прикрепить подчеркивание и назначить новую строку переменной new_word. Это именно то неверное поведение, которое мы наблюдали.

Чтобы все починить, нужно объединить word[i] + " _" с существующим значением new_word. Нажмите кнопку Quit в окне отладки, но не закрывайте его. Откройте окно редактора и измените строку внутри цикла for на следующую:

new_word = new_word + word[i] + "_" 

Примечание: Если бы вы закрыли отладчик, не нажав кнопку Quit, при повторном открытии окна отладки могла появиться ошибка:

You can only toggle the debugger when idle

Всегда нажимайте кнопку Go или Quit, когда заканчиваете отладку, иначе могут возникнуть проблемы с ее повторным запуском.

Шаг 4: повторение шагов 1-3, пока ошибка не исчезнет

Сохраните изменения в программе и запустите ее снова. В окне отладки нажмите кнопку Go, чтобы выполнить код до точки останова. Понажимайте Step несколько раз и смотрите, что происходит с переменной new_word на каждой итерации – все работает, как положено. Иногда необходимо повторять этот процесс несколько раз, прежде чем исправится ошибка.

Альтернативные способы поиска ошибок

Использование отладчика может быть сложным и трудоемким, но это самый надежный способ найти ошибки в коде. Однако отладчики не всегда есть в наличии. В подобных ситуациях можно использовать print debugging для поиска ошибок в коде. PD задействует функцию print() для отображения в консоли текста, указывающего место выполнения программы и состояние переменных.

Например, вместо отладки предыдущего примера можно добавить следующую строку в конец цикла for:

print(f"i = ; new_word = ") 

Измененный код будет выглядеть следующим образом:

def add_underscores(word): new_word = "_" for i in range(len(word)): new_word = word[i] + "_" print(f"i = ; new_word = ") return new_word phrase = "hello" print(add_underscores(phrase)) 

Вывод должен выглядеть так:

i = 0; new_word = h_ i = 1; new_word = e_ i = 2; new_word = l_ i = 3; new_word = l_ i = 4; new_word = o_ o_ 

PD работает, но имеет несколько недостатков по сравнению с отладкой дебаггером. Вы должны запускать всю программу каждый раз, когда хотите проверить значения переменных, а также помнить про удаление вызовов функций print().

Один из способов улучшить наш цикл – перебирать символы в word:

def add_underscores(word): new_word = "_" for letter in word: new_word = new_word + letter + "_" return new_word 

Заключение

Теперь вы знаете все об отладке с помощью DLE. Вы можете использовать этот принцип с различными дебагерами.

В статье мы разобрали следующие темы:

  • использование окна управления отладкой;
  • установку точки останова для глубокого понимания работы кода;
  • применение кнопок Step, Go, Over и Out;
  • четырехэтапный процессом выявления и удаления ошибок.

Не останавливайтесь в обучении и практикуйте дебаггинг – это весело!

  • ТОП-10 книг по Python: эффективно, емко, доходчиво
  • Парсинг сайтов на Python: подробный видеокурс и программный код
  • Python + Visual Studio Code = успешная разработка
  • 29 Python-проектов, оказавших огромное влияние на разработку
  • 15 вопросов по Python: как джуниору пройти собеседование

Источники

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *