Программа не работает. Что делать?
Моя программа не работает! Что делать? В данной статье я постараюсь собрать наиболее частые ошибки начинающих программировать на python 3, а также расскажу, как их исправлять.
Проблема: Моя программа не запускается. На доли секунды появляется чёрное окошко, а затем исчезает.
Причина: после окончания выполнения программы (после выполнения всего кода или при возникновении исключения программа закрывается. И если вы её вызвали двойным кликом по иконке (а вы, скорее всего, вызвали её именно так), то она закроется вместе с окошком, в котором находится вывод программы.
Решение: запускать программу через IDLE или через консоль.
Проблема: Не работает функция input. Пишет SyntaxError.
Пример кода:
>>> a = input() hello world Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1 hello world ^ SyntaxError: unexpected EOF while parsing
Причина: Вы запустили Python 2.
Решение: Установить Python 3.
Проблема: Где-то увидел простую программу, а она не работает.
Пример кода:
name = raw_input() print name
Ошибка:
File "a.py", line 3 print name ^ SyntaxError: invalid syntax
Причина: Вам подсунули программу на Python 2.
Решение: Прочитать об отличиях Python 2 от Python 3. Переписать её на Python 3. Например, данная программа на Python 3 будет выглядеть так:
name = input() print(name)
Проблема: TypeError: Can't convert 'int' object to str implicitly.
Пример кода:
>>> a = input() + 5 8 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'int' object to str implicitly
Причина: Нельзя складывать строку с числом.
Решение: Привести строку к числу с помощью функции int(). Кстати, заметьте, что функция input() всегда возвращает строку!
>>> a = int(input()) + 5 8 >>> a 13
Проблема: SyntaxError: invalid syntax.
Пример кода:
a = 5 if a == 5 print('Ура!')
Ошибка:
File "a.py", line 3 if a == 5 ^ SyntaxError: invalid syntax
Причина: Забыто двоеточие.
Решение:
a = 5 if a == 5: print('Ура!')
Проблема: SyntaxError: invalid syntax.
Пример кода:
a = 5 if a = 5: print('Ура!')
Ошибка:
File "a.py", line 3 if a = 5 ^ SyntaxError: invalid syntax
Причина: Забыто равно.
Решение:
a = 5 if a == 5: print('Ура!')
Проблема: NameError: name 'a' is not defined.
Пример кода:
print(a)
Причина: Переменная "a" не существует. Возможно, вы опечатались в названии или забыли инициализировать её.
Решение: Исправить опечатку.
a = 10 print(a)
Проблема: IndentationError: expected an indented block.
Пример кода:
a = 10 if a > 0: print(a)
Причина: Нужен отступ.
Решение:
a = 10 if a > 0: print(a)
Проблема: TabError: inconsistent use of tabs and spaces in indentation.
Пример кода:
a = 10 if a > 0: print(a) print('Ура!')
Ошибка:
File "a.py", line 5 print('Ура!') ^ TabError: inconsistent use of tabs and spaces in indentation
Причина: Смешение пробелов и табуляции в отступах.
Решение: Исправить отступы.
a = 10 if a > 0: print(a) print('Ура!')
Проблема: UnboundLocalError: local variable 'a' referenced before assignment.
Пример кода:
def f(): a += 1 print(a) a = 10 f()
Ошибка:
Traceback (most recent call last): File "a.py", line 7, in <module> f() File "a.py", line 3, in f a += 1 UnboundLocalError: local variable 'a' referenced before assignment
Причина: Попытка обратиться к локальной переменной, которая ещё не создана.
Решение:
def f(): global a a += 1 print(a) a = 10 f()
Проблема: Программа выполнилась, но в файл ничего не записалось / записалось не всё.
Пример кода:
>>> f = open('output.txt', 'w', encoding='utf-8') >>> f.write('bla') 3 >>>
Причина: Не закрыт файл, часть данных могла остаться в буфере.
Решение:
>>> f = open('output.txt', 'w', encoding='utf-8') >>> f.write('bla') 3 >>> f.close() >>>
Проблема: Здесь может быть ваша проблема. Комментарии чуть ниже :)
Также вам может быть полезно это описание: