Featured image of post Py03. Почему моя программа не работает? (FAQ)

Py03. Почему моя программа не работает? (FAQ)

FAQ по ошибкам

Не работает функция input. Пишет SyntaxError

Пример кода:

1
2
3
4
5
6
>>> a = input()
hello world
  File "<string>", line 1
    hello world
              ^
SyntaxError: unexpected EOF while parsing

Причина: Вы запустили Python 2.

Решение: Установить Python 3.

Где-то увидел простую программу, а она не работает

Пример кода:

1
2
3
4
5
6
7
8
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 будет выглядеть так:

1
2
name = input()
print(name)

TypeError: Can't convert 'int' object to str implicitly

Пример кода:

1
2
3
4
5
>>> 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() всегда возвращает строку!

1
2
3
4
5
>>>
>>> a = int(input()) + 5
8
>>> a
13

SyntaxError: invalid syntax

Пример кода:

1
2
3
4
5
6
7
>>> a = 5
>>> if a == 5
...     print('Ура!')
  File "a.py", line 3
    if a == 5
            ^
SyntaxError: invalid syntax

Причина: Забыто двоеточие.

Решение:

1
2
3
a = 5
if a == 5:
    print('Ура!')

SyntaxError: invalid syntax 2

Пример кода:

1
2
3
4
5
6
7
8
>>> a = 5
>>> if a = 5:
...     print('Ура!')

  File "a.py", line 3
    if a = 5
         ^
SyntaxError: invalid syntax

Причина: Забыто равно.

Решение:

1
2
3
a = 5
if a == 5:
    print('Ура!')

NameError: name 'a' is not defined

Пример кода:

1
print(a)

Причина: Переменная “a” не существует. Возможно, вы опечатались в названии или забыли инициализировать её.

Решение: Исправить опечатку.

1
2
a = 10
print(a)

IndentationError: expected an indented block

Пример кода:

1
2
3
>>> a = 10
>>> if a > 0:
... print(a)

Причина: Нужен отступ.

Решение:

1
2
3
a = 10
if a > 0:
    print(a)

TabError: inconsistent use of tabs and spaces in indentation

Пример кода:

1
2
3
4
5
6
7
8
>>> a = 10
>>> if a > 0:
...    print(a)
...    print('Ура!')
  File "a.py", line 5
    print('Ура!')
                 ^
TabError: inconsistent use of tabs and spaces in indentation

Причина: Смешение пробелов и табуляции в отступах.

Решение: Исправить отступы.

1
2
3
4
a = 10
if a > 0:
    print(a)
    print('Ура!')

UnboundLocalError: local variable 'a' referenced before assignment

Пример кода:

1
2
3
4
5
6
def f():
    a += 1
    print(a)

a = 10
f()
1
2
3
4
5
6
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

Причина: Попытка обратиться к локальной переменной, которая ещё не создана.

Решение:

1
2
3
4
5
6
7
def f():
    global a
    a += 1
    print(a)

a = 10
f()

Программа выполнилась, но в файл ничего не записалось / записалось не всё

Пример кода:

1
2
3
4
5
>>>
>>> f = open('output.txt', 'w', encoding='utf-8')
>>> f.write('bla')
3
>>>

Причина: Не закрыт файл, часть данных могла остаться в буфере.

Решение:

1
2
3
4
5
6
>>>
>>> f = open('output.txt', 'w', encoding='utf-8')
>>> f.write('bla')
3
>>> f.close()
>>>
comments powered by Disqus
Сделано с 💖
Создано при помощи Hugo
Тема Stack, дизайн Jimmy