Моя программа не работает? Что делать?
Моя программа на Python выдаёт какую-то странную ошибку! Надо срочно где-нибудь спросить, а что же в питоне не так? Не в моей же программе дело!
Скорее всего, именно в программе где-то ошибка. Будем разбираться, как понять, в чём именно.
Моя программа не запускается
Проблема: Моя программа не запускается. На доли секунды появляется чёрное окошко, а затем исчезает.
Причина: Программа запускается. Просто после окончания выполнения (после выполнения всего кода или при возникновении исключения) программа закрывается. И если вы её вызвали двойным кликом по иконке (а вы, скорее всего, вызвали её именно так), то она закроется вместе с окошком, в котором находится вывод программы. И выглядит это так, как будто программа не запускается.
Решение: запускать программу через IDLE или через консоль.
Теперь же рассмотрим ситуации, когда программа запускается, но красным текстом (в IDLE так, в других средах программирования может быть другой цвет, это неважно) пишется какая-то ошибка.
Синтаксические ошибки
Это ошибки в синтаксисе. Чаще всего это забытое двоеточие, скобка или другой знак; отсутствующий, либо наоборот, лишний отступ.
IDLE программу даже не запустит, а выдаст всплывающее окно с ошибкой. Например, такое:
Здесь написано SyntaxError - expected ':'. Это переводится как "ожидается двоеточие". И да, без знания английского в Python никуда, даже если учиться по русскоязычным материалам. Если не знаете, как переводится то или иное сообщение - вбиваете в переводчик: deepl.com, или translate.google.com.
Также, помимо сообщения об ошибке, красным подсвечивается место, где, скорее всего, эта ошибка произошла. Если вы считаете, что в этой строке ошибки нет, посмотрите пару строк выше и ниже, ошибка тогда, скорее всего, там.
Вот ещё несколько примеров. Попробуйте по сообщению об ошибке понять, что неправильно и как исправить.
if a > 0: print(a) SyntaxError: expected an indented block after 'if' statement on line 1
if 2 + 2 = 5: print('Really?') SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?
Ошибки времени выполнения
Ошибки времени выполнения (или Runtime errors) - это все те ошибки, которые возникают при выполнении кода. В отличие от синтаксических ошибок, которые возникают на этапе синтаксического разбора программы, то есть ещё до начала выполнения программы.
Пример подобной ошибки:
a = 1 b = 2 print(a + B)
Traceback (most recent call last): File "C:/Users/Дмитрий/Desktop/1.py", line 3, in <module> print(a + B) NameError: name 'B' is not defined. Did you mean: 'b'?
Python, особенно в последних версиях, крайне точно описывает, где ошибка, в чём ошибка, а иногда и как исправить. Впрочем, с "как исправить" интерпретатор Python далеко не всегда точен, думать надо своей головой. Но здесь всё правильно и лаконично: имя 'B' не определено. Вы имели в виду: 'b'? Заменив B на b, мы избавимся от ошибки.
Далее можно приводить великое множество примеров ошибок и решений этих проблем, однако почти во всех случаях (а новичку тем более) достаточно внимательно прочитать описание.