Не работает python программа

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

Понимание того, какую информацию предоставляет traceback Python является основополагающим критерием того, как стать лучшим Python программистом.

К концу данной статьи вы сможете:

  • Понимать, что несет за собой traceback
  • Различать основные виды traceback
  • Успешно вести журнал traceback, при этом исправить ошибку

Python Traceback — Как правильно читать трассировку?

Traceback (трассировка) — это отчет, который содержит вызовы выполненных функций в вашем коде в определенный момент.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

[1] Курс по Python 3. Установка на компьютер и настройка IDLE

Telegram Чат /home/test.py» , line 4 , in < module >
say_hello ( ‘Иван’ )
File «/home/test.py» , line 2 , in say_hello
print ( ‘Привет, ‘ + wrong_variable )
NameError : name ‘wrong_variable’ is not defined
Process finished with exit code 1

Эта выдача из traceback содержит массу информации, которая вам понадобится для определения проблемы. Последняя строка трассировки говорит нам, какой тип ошибки возник, а также дополнительная релевантная информация об ошибке. Предыдущие строки из traceback указывают на код, из-за которого возникла ошибка.

В traceback выше, ошибкой является NameError, она означает, что есть отсылка к какому-то имени (переменной, функции, класса), которое не было определено. В данном случае, ссылаются на имя wrong_variable .

Последняя строка содержит достаточно информации для того, чтобы вы могли решить эту проблему. Поиск переменной wrong_variable , и заменит её атрибутом из функции на man . Однако, скорее всего в реальном случае вы будете иметь дело с более сложным кодом.

Python Traceback — Как правильно понять в чем ошибка?

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

Подробный обзор структуры трассировки в Python 3

Существует несколько секций для каждой трассировки Python, которые являются крайне важными. Диаграмма ниже описывает несколько частей:

Читайте также:
Команда меню запуск программы

Обзор трассировки Python

В Python лучше всего читать трассировку снизу вверх.

  1. Синее поле: последняя строка из traceback — это строка уведомления об ошибке. Синий фрагмент содержит название возникшей ошибки .
  2. Зеленое поле: после названия ошибки идет описание ошибки . Это описание обычно содержит полезную информацию для понимания причины возникновения ошибки.
  3. Желтое поле: чуть выше в трассировке содержатся различные вызовы функций. Снизу вверх — от самых последних, до самых первых. Эти вызовы представлены двухстрочными вводами для каждого вызова. Первая строка каждого вызова содержит такую информацию, как название файла , номер строки и название модуля . Все они указывают на то, где может быть найден код.
  4. Красное подчеркивание: вторая строка этих вызовов содержит непосредственный код, который был выполнен с ошибкой .

Есть ряд отличий между выдачей трассировок, когда вы запускает код в командной строке, и между запуском кода в REPL. Ниже вы можете видеть тот же код из предыдущего раздела, запущенного в REPL и итоговой выдачей трассировки:

Почему не работает программа на Python? Основные ошибки

Python 3.7.4 ( default , Jul 16 2019 , 07 : 12 : 58 )
[ GCC 9.1.0 ] on linux
Type «help» , «copyright» , «credits» or «license» for more information .
>>> def say_hello ( man ) :
. . . print ( ‘Привет, ‘ + wrong_variable )
>>> say_hello ( ‘Иван’ )
Traceback ( most recent call last ) :
File «» , line 1 , in
File «» , line 2 , in say_hello
NameError : name ‘wrong_variable’ is not defined

Обратите внимание на то, что на месте названия файла вы увидите . Это логично, так как вы выполнили код через стандартный ввод. Кроме этого, выполненные строки кода не отображаются в traceback.

Важно помнить: если вы привыкли видеть трассировки стэка в других языках программирования, то вы обратите внимание на явное различие с тем, как выглядит traceback в Python. Большая часть других языков программирования выводят ошибку в начале, и затем ведут сверху вниз, от недавних к последним вызовам.

Это уже обсуждалось, но все же: трассировки Python читаются снизу вверх . Это очень помогает, так как трассировка выводится в вашем терминале (или любым другим способом, которым вы читаете трассировку) и заканчивается в конце выдачи, что помогает последовательно структурировать прочтение из traceback и понять в чем ошибка.

Traceback в Python на примерах кода

Изучение отдельно взятой трассировки поможет вам лучше понять и увидеть, какая информация в ней вам дана и как её применить.

Код ниже используется в примерах для иллюстрации информации, данной в трассировке Python:

Почему не работает программа на Python?

Что-то не так с программой, она либо запускается и просит ввести значение для input, затем выводит следом идущий код и сразу же закрывается, я не успеваю ничего разглядеть, либо просто появляется окно и оно сразу закрывается. Я проверял этот код в компиляторах-онлайн, там все работает (хотя не всегда). В чем может быть причина? Версия для х64 и я нажал на галочку, когда предлагали установку в переменную PATH.

  • Вопрос задан более трёх лет назад
  • 249 просмотров
Читайте также:
Какие программы должны быть в посудомоечной машине

Комментировать
Решения вопроса 2
Начинающий питонист

Импортируйте в начале своей программы модуль time

После напишите свой код и в конце вставьте time.sleep(10)
Таким образом ваша консоль закроется через 10 секунд после выполнения всего кода.

P.S.: в скобках можете написать свое количество секунд.

import time #ваш код #много вашего кода time.sleep(10)

Источник: qna.habr.com

Глава 7.1 Поиск ошибок в программах Python 3

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

Обычно это происходит из-за ошибок в программе. Обычно это происходит потому что программист ошибся в написании кода или неверно продумал ход выполнения программы. Существуют три вида ошибок:

  • Синтаксические ошибки(syntax errors) . Обычно возникают при беглом наборе кода — опечатки. Интерпретатор Python проверяет программу перед каждым запуском . Если в результате проверки выяснится несоответствие участка кода правилам Python, то такая программа не запустится.
  • Ошибки выполнения (run-timeerrors) . Такие ошибки возникают в ходе выполнения программы. Программа будет выполнятся до тех пор, пока ход выполнения не дойдет до строки с ошибкой. Выполнение программы аварийно завершится (сбой), а на экран будет выведено текстовое сообщение с номером строки, в которой произошла ошибка.
  • Семантические ошибки (semantic errors). Их труднее всего исправить, так как в этом случае, внешне, программа работает без ошибок. Но работает она не совсем так (а иногда и совсем не так) как задумывал программист. Например, программист хочет чтобы в переменной total хранилась сумма значений переменных « a » « b » и « c ». Но ошибается и записывает следующее выражение: total = a*b*c. Разумеется, результат в переменной total будет отличаться от нужного. Но интерпретатор Python этого не заметит — все правила написания кода соблюдены. Поиск такой ошибки может занять весьма значительное время, особенно, если программа большая.

Поиск ошибок в программе весьма сложная задача и не факт, что вы с первого раза устраните все ошибки. Некоторые могут проявится лишь во время выполнения программы. Например какая-то функция не вызывается или наоборот — вызывается слишком часто. Ошибка в программировании цикла while может привести к тому, что цикл будет выполнен на несколько раз больше или меньше задуманного.

Читайте также:
Что такое программа апп

Кроме того, существует ошибка бесконечного цикла — когда ошибочный код программы заставляет выполнятся тело цикла неограниченное число раз. Чтобы выйти из бесконечного цикла нажмите сочетание клавиш « Ctrl+C » в интерактивной оболочке. Любая из описанных ошибок может вкрасться в вашу программу и доставить массу неприятностей, если вы не будете внимательны при написании программы.

Чтобы понять, что такое бесконечный цикл, наберите в оболочке Python 3 следующую команду (требуется два раза нажать клавишу « Enter », чтобы Python понял, что вы завершили набор команды)

print(‘ Нажмите Ctrl+C чтобы остановить этот бесконечный цикл ’)

Теперь одновременно нажмите клавиши Ctrl и C. Окно интерпретатора Python будет выглядеть следующим образом:

711

Рис 7.1-1 Пример бесконечного цикла в Python 3

Отладчик (Debagger) Python 3.

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

Запуск Debagger- а

В IDLE откройте игру «Царство драконов», которую мы написали в последней главе. После того, как вы открыли файл dragon.py, щелкните в верхнем меню пункт Debug > Debugger, чтобы увидеть окно отладчика Python. Этот пункт находится в верхнем меню IDLE, а не текстового редактора, в котором вы открыли программу.

712

Рис 7-1.2 Окно отладчика Python 3

Теперь, когда вы запустите программу клавишей F5, запустится выполнение программы в IDLE, а в отладчике будет отображаться текущая информация. Это называется «запуском программы под отладчиком» (так в оригинале — прим. перев.). В окне « Debug Control» установите флажки в полях « Source » и « Globals ».

Когда вы запускаете программу под отладчиком, она останавливается перед выполнением первой строки кода программы. Если вы установили флажок « Source » и перейдете в окно редактора программ IDLE, то увидите, что строка, которую сейчас будет выполнять Python, выделена серым цветом. В окне « Debug Control » показано, что сейчас выполняется команда в строке 1 : import random, которая импортирует модуль работы со случайными числами.

Рис 7.1-3 Работа программы «под отладчиком»

713

Рис 7.1-3 Работа программы «под отладчиком».

Источник: writegamepython.wordpress.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru