Ошибки начинающих

Ошибки начинающих

@Pycoders

"Почему моя программа не работает? Я всё делал по гайду."

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

Если вы делаете всё, как показано где-либо, это уже ошибка. Надо делать не так, как где-то уже сделано, а необходимо сначала понять, как работает тот или иной алгоритм, а потом уже самому попытаться реализовать. Иначе вы просто не научитесь решать поставленные задачи, шаг влево, шаг вправо от изученного - и всё, вы в тупике.

Основной совет - изучайте принципы работы чего-либо, а не заучивайте уже написанный кем-то код.

Решение всех проблем - загуглить.

Разбор частых ошибок

SyntaxError, несовместимость python 2 и python 3.

Искать и пробовать новые функции - хорошая затея, если вы вникаете в их действие. Но не стоит забывать про то, что версии языка сильно различаются. Вы можете найти код на python 2 и пробовать запустить его на python 3, что вызовет ошибку. Первым делом лучше понять, под какую версию была написана программа, которую вы нашли.

Простой пример.

Python 2.

name = raw_input()
print name

Python 3.

name = input()
print(name)

Программа сразу же закрывается.

Такое может прозойти из-за исключения, либо из-за того, что программа закончила свое выполнение (это уже особенности вашего редактора). Настоятельно рекомендую запускать код через терминал или IDLE.


IndentationError: expected an indented block.

if 15 > 10:
print('Yes')

Необходимо сделать отступы в теле конструкции if. Допускается как табуляция, так и пробелы. Но следует ставить именно 4 пробела по правим оформления кода pep8.


TabError: inconsistent use of tabs and spaces in indentation.

Если у вас вылезла такая ошибка, то вы намешали табов и пробелов в своем коде. Исправить можно легко, поставив везде, где это требуется, только пробелы, либо только табуляцию.


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

bar = input()
print(bar + 10)

Переменная bar является строкой, а не числом. Складывать строки и числа нельзя. Не забывайте конвертировать данные в нужный тип.

bar = int(input())
print(bar + 10)

UnboundLocalError: local variable 'a' referenced before assignment.

def f():
    a = 5
    print(a)

a = 10
f()

В данном примере идет обращение к локальной перменной a, которой нет. Чтобы обратиться к глобальной, надо это обозначить.

def f():
    global a
    a = 5
    print(a)

a = 10
f()

Здесь были приведены самые частые проблемы и ошибки, но далеко не все. Напоминаю, что почти абсолютно всё можно найти в интернете.

Буквально за минуту до публикации нашел вот такую познавательную картинку :)


Report Page