Перейти к содержимому

Python unexpected indent что за ошибка

  • автор:

Как исправить ошибку «unexpected indent» в Python?

По сравнению с другими языками Python имеет множество уникальных сообщений об ошибках, например «unexpected indent». В этом руководстве мы расскажем, почему она возникает и как ее исправить.

Ошибка «unexpected indent» в Python

unexpected indent

Сообщение об ошибке, которое выдает Python и с которым большинство из нас хотя бы раз сталкивалось при изучении и работе на этом языке:

IndentationError: unexpected indent

Исключение IndentationError является подклассом SyntaxError. Оно срабатывает, когда Python парсирует отступ, которого там быть не должно.

Это чистая синтаксическая ошибка, которую обычно допускают новички. Например, распространенная ошибка при написании оператора if-else в Python:

a = 1;

if a:
print(«The statement is true»)
print(a)
else:
print(«The statement is false»)
print(a)

И в результате вы получите вот такое сообщение:

File «code.py», line 5
print(a)
IndentationError: unexpected indent

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

Что такое отступы?

В то время как во многих других языках программирования, таких как Java, HTML или C++, для обозначения блоков кода используются фигурные скобки <>, в Python используется отступ. Отступы – это пробельные символы, которыми начинается строка кода. Его необходимо использовать для начала блока кода (например, тела оператора if или функции).

Как программист, вы вольны выбирать способ использования табуляции или пробелов для создания отступа. Но он должен быть представлен для указания блока кода. Можно записать весь блок в одну строку, используя точку с запятой. Однако всегда лучше вместо этого сделать отступ. Сравните эти два фрагмента, которые оба являются корректными и выполняют одну и ту же задачу.

Сниппет 1

a = 28
b = 22

if a > b:
print(«a is greater than b») # a is greater than b

Сниппет 2

a = 28
b = 22

if a > b: print(«a is greater than b») # a is greater than b

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

Правила отступов

Python использует уровень отступа для определения принадлежности строк кода к одной группе. Официальный стиль языка, PEP8, гласит, что для обозначения отступа необходимо использовать четыре пробела. Это хорошая практика, если вы хотите, чтобы ваш код соответствовал тому, как написаны встроенные библиотеки.

Однако для этой цели можно также использовать табуляцию или восемь пробелов. Это зависит как от личных предпочтений, так и от требований проекта. Только следите за тем, чтобы не вставлять лишние отступы во избежание ошибки «unexpected indent».

Вы можете оформить каждый блок кода по-своему (хотя это плохая практика программирования). Python все равно выполнит их нормально. Но если в одном блоке кода будет несколько уровней отступов, он покажет исключение IndentationError.

Заключение

Отступы – это отличительная и важная особенность Python. Не понимая ее, вы можете столкнуться с такими распространенными проблемами, как ошибка «unexpected indent». Однако это легко исправить, так как можно переформатировать блок кода, чтобы убрать сообщение об ошибке.

Ошибка в Python 3.9.0 : IndentationError: unexpected indent, что делать.

Хочу написать очень простенькую программу на Python, код ниже :

name = input(«Введите ваше имя : «)
print(«Привет , » + name + » , сколько тебе лет?»)
age = input(«Введи свой возраст : «)
print = input(«Ух-ты! » + name + » , тебе уже » + age + «!»)
password = input(«Введите пароль для следующего входа в систему :»)
what = input(«Введите \»Войти\», если хотите запустить систему! «)
print = input(«Вам надо срочно отключить систему! Введите \»Да\» если хотите ПРИНУДИТЕЛЬНО остановить систему, иначе будет автоматческая перезагрузка!»)
password2 = input(«Введите ваш пароль, который вы указали ранее! : «)
if password == password2

Что тут не так? пишет ошибка в строке кода «if password == password2», кто знает помогите пожалуйста) А лучше скиньте, как можно сделать проверку паролей. тоесть=
если пароль равняется паролю2(тобишь если пароли совпадают)
печатать : Вход в систему успешно выполнен
или если пароль не равен паролю2
печатать : Пароль неверный!

Просьба помочь) спасибо.

Дополнен 3 года назад

+ если я в конце вместо
if password == password2 ввожу
print(«Вход в систему выполнен!»)
Выдаёт какую то . ую ошибку
print(«Вход в систему выполнен!»)
TypeError: ‘str’ object is not callable
и так с каждой командой print, что бы я не написал в print(«») мне выдаёт эту субачью ошибку.. Че за дичь? (редактор у меня pycharm)

Голосование за лучший ответ

Вот так это делается:
if password == password2:
print(‘Вход в систему успешно выполнен’)
else:
print(‘Пароль неверный!’)

wamnazlo_Профи (500) 3 года назад

File «C:\Users\User\PycharmProjects\pygame\main.py», line 9
if password == password2
^
SyntaxError: invalid syntax

Process finished with exit code 1

Почему возникает ошибка IndentationError: unexpected indent?

введите сюда описание изображения

Установил питон под Windows 10 64bit. Работает на Anaconda. Окружение python 3.4. Установил theano. import theano работает при построчном вводе в консоль.
Когда пытаюсь запустить любой файл с примером, с theano связи нету.

Отслеживать
19.9k 5 5 золотых знаков 44 44 серебряных знака 61 61 бронзовый знак
задан 26 фев 2016 в 21:01
Игорь Ларин Игорь Ларин
63 1 1 золотой знак 1 1 серебряный знак 6 6 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если бы вы перевели текст ошибки, вы бы поняли, что у вас проблема с отступами.
Обратите внимание на отступ перед import .

Напоминаю, что в python блоки кода разграничиваются отступами.

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

На основе этого ответа.

В данном случае отступ вообще следует удалить.

Что означает ошибка IndentationError: expected an indented block

Самая популярная ошибка у начинающих программистов на Python.

Ситуация: программисту нужно вывести все числа по очереди от 1 до 10. Если он параллельно с Python осваивает несколько других языков, то иногда может организовать цикл так:

for i in range(10):
print(i)

Но при выполнении такого кода компьютер выдаст ошибку:

File «temp.py», line 2
print(‘Привет Мир!’)
^
❌ IndentationError: expected an indented block

Почему так происходит: компьютер знает, что в Python после двоеточия в цикле идёт тело цикла, которое отделяется отступами. В нашем коде команда цикла начинается на том же уровне, что и начало цикла, а в Python так не принято. Компилятор ругается, что не хватает отступов, и просит обратить на это внимание.

Что делать с ошибкой IndentationError: expected an indented block

Чтобы исправить ошибку, достаточно поставить отступы перед нужными командами:

for i in range(10):
print(i)

Единственное, нужно не запутаться в отступах и добавить их только там, где нужна вложенность, иначе сломается логика программы.

Практика

Попробуйте найти ошибки в этих фрагментах кода, а также найдите среди них код без ошибок:

for i in range(10): print(i)
for i in range(10): print(i)
for i in range(10): print(i)
for i in range(10): print(i+1)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *