- Python indentationError: неожиданный отступ (как исправить эту глупую ошибку)
- Как исправить ошибку вдавливания Python?
- Смесительные вкладки и пробелы частоты часто вызывают ошибку
- Как исправить ошибку отступа на все времена?
- Куда пойти отсюда?
- Что делать с «неожиданным отступом» в Python?
- Я получаю IndentationError. Как это исправить?
- 4 ответов
- почему отступ имеет значение?
- как сделать отступ мой код?
- можно ли использовать вкладки?
- что означает» IndentationError: неожиданный отступ»?
- что означает» IndentationError: ожидаемый отступ блока»?
- что означает «IndentationError: unindent не соответствует никакому внешнему уровню отступа»?
- я все еще получаю IndentationError, но моя программа, похоже, правильно отступ. Что мне делать?
- что делает » TabError: непоследовательное использование вкладок и пробелов в отступах» означает?
- записку о «SyntaxError» связанные проблемы отступа
- мне все еще трудно с синтаксисом отступов Python. Что мне делать?
- ресурсы используется
- Возвышенный Текст 3
Python indentationError: неожиданный отступ (как исправить эту глупую ошибку)
Если вы похожи на меня, вы сначала попробуйте все в своем коде и исправить ошибки, как они приходят. Одна частая ошибка в Python является undationError: неожиданный отступ. Итак, что означает это сообщение об ошибке? Ошибка indentationError: Неожиданный отступ возникает, если вы используете непоследовательную отступ вкладки или пробелы для кода с отступом блоков, таких … Python indentationError: неожиданный отступ (как исправить эту глупую ошибку) Подробнее »
Автор: Chris
Дата записи
Если вы похожи на меня, вы сначала попробуйте все в своем коде и исправить ошибки, как они приходят. Одна частая ошибка в Python – IndentationError: неожиданный отступ Отказ Итак, что означает это сообщение об ошибке?
Ошибка . IndentationError: неожиданный отступ Возникает, если вы используете непоследовательную отступ вкладок или пробелы для блоков кода с отступом, таких как Если блок и для петля. Например, Python бросит ошибку вдавливания, если вы используете для петля с три персонажа пробелов Отступ для первой строки и Один символ вкладок отступ второй строки корпуса петли. Чтобы устранить ошибку, используйте одинаковое количество пустых пробелов для всех блоков кода с отступом.
Давайте посмотрим на пример, где возникает эта ошибка:
Первая строка в корпусе петли использует два пробела в качестве уровня вдавливания. Вторая строка в корпусе петлей использует три персонажа пробелов в качестве уровня отступа. Таким образом, блоки вдавливания различны для разных линий того же блока. Однако Python ожидает, что все линии с отступом имеют структурно те же отступ.
Как исправить ошибку вдавливания Python?
Чтобы исправить ошибку, просто используйте одинаковое количество пробелов для каждой строки кода:
Общая рекомендация состоит в том, чтобы использовать четыре единственных пробелных персонажей » для каждого Отступ уровень. Если у вас вложенные уровни вдавливания, это означает, что второй уровень вдавливания имеет одновение пробелы:
Смесительные вкладки и пробелы частоты часто вызывают ошибку
Общая проблема также в том, что вдавливание, по-видимому, является последовательным – пока это не так. Следующий код имеет один символ вкладки в первой строке и четырех пустых пробеле во второй строке блока кода с отступом. Они выглядят одинаково, но Python все еще бросает ошибку вдавливания.
На первый взгляд углубление выглядит одинаково. Однако, если вы пройдете пробелы перед Печать (I) , вы видите, что он состоит только из одного табличного характера, в то время как пробелы перед Распечатать (j) Заявление состоит из ряда пустых мест » Отказ
Попробуйте сами: Прежде чем я скажу вам, что делать с этим, попробуйте исправить код себя в нашей интерактивной оболочке Python:
Упражнение : Исправьте код в оболочке интерактивного кода, чтобы избавиться от сообщения об ошибке.
Вы хотите развивать навыки Хорошо округлый Python Professional То же оплачивается в процессе? Станьте питоном фрилансером и закажите свою книгу Оставляя крысиную гонку с Python На Amazon ( Kindle/Print )!
Как исправить ошибку отступа на все времена?
Источник ошибки часто является неправильным использованием вкладок и пробеловных символов. Во многих редакторах кода вы можете установить символ вкладки на фиксированное количество символов пробела. Таким образом, вы, по сути никогда не используете сам табличный символ. Например, если у вас есть Sublime Text Editor, следующее быстрое руководство гарантирует, что вы никогда не будете работать в этой ошибке:
- Установить Возвышенный текст Использовать вкладки для отступа: Вид -> Отступ -> Преобразовать вдавшиеся вкладки
- Снимите флажок Опция Отступ с использованием пробелов в том же подменю выше.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Источник
Что делать с «неожиданным отступом» в Python?
Как исправить ошибку «неожиданный отступ» в Python?
Python использует интервал в начале строки, чтобы определить, когда блоки кода начинаются и заканчиваются. Вы можете получить следующие ошибки:
Неожиданный отступ. Эта строка кода имеет больше пробелов в начале, чем предыдущая, но предыдущая не является началом подблока (например, оператор if / while / for). Все строки кода в блоке должны начинаться с одной и той же строки пробелов. Например:
Это особенно часто встречается при интерактивном запуске Python: убедитесь, что вы не добавляете лишних пробелов перед своими командами. (Очень раздражает при копировании и вставке кода примера!)
Unindent не соответствует ни одному внешнему уровню отступа. Эта строка кода имеет меньше пробелов в начале, чем предыдущая, но в равной степени не соответствует ни одному другому блоку, частью которого она могла бы быть. Python не может решить, куда он пойдет. Например, в дальнейшем предполагается, что окончательный вывод должен быть частью предложения if или нет?
Ожидается блок с отступом. Эта строка кода имеет такое же количество пробелов в начале, что и предыдущая, но ожидалось, что последняя строка запустит блок (например, оператор if / while / for, определение функции).
Если вы хотите функцию , которая ничего не делает, использовать «не-оп» команду пропуск :
Разрешено смешивание табуляции и пробелов (по крайней мере, в моей версии Python), но Python предполагает, что длина табуляции 8 символов, что может не соответствовать вашему редактору. Просто скажите «нет» вкладкам. Большинство редакторов позволяют автоматически заменять их пробелами.
Лучший способ избежать этих проблем — всегда использовать постоянное количество пробелов при отступе во вложенном блоке и в идеале использовать хорошую среду IDE, которая решает проблему за вас. Это также сделает ваш код более читабельным.
Источник
Я получаю IndentationError. Как это исправить?
у меня есть Python-скрипт:
однако, когда я пытаюсь запустить свой скрипт, Python вызывает IndentationError :
Я продолжал играть со своей программой, и я также смог произвести три другие ошибки:
- IndentationError: unexpected indent
- IndentationError: expected an indented block
- TabError: inconsistent use of tabs and spaces in indentation
что означают эти ошибки? Что я делаю не так? Как я могу исправить свой код?
4 ответов
почему отступ имеет значение?
в Python отступ используется для разграничения блоки кода. Это отличается от многих других языков, которые используют фигурные скобки <> для разграничения блоков, таких как Java, Javascript и C. Из-за этого пользователи Python должны уделять пристальное внимание тому, когда и как они отступают от своего кода, потому что имеет значение пробел.
когда Python сталкивается с проблемой с отступом вашей программы, он либо вызывает исключение называется IndentationError или TabError .
немного истории
исторические причины того, почему Python использует отступы против, возможно, более общепринятых фигурных скобок <> изложена в статья из истории Python Гвидо ван Россума — создатель Python:
использование отступов Python происходит непосредственно из ABC, но эта идея не возникла с ABC-он уже был продвинут Дональдом Кнутом и был хорошо известной концепцией стиля программирования. (Язык программирования occam также использовал его.) Однако авторы ABC изобрели использование двоеточия, которое отделяет предложение о вводе от отступа блока. После раннего тестирования пользователя без двоеточия было обнаружено, что смысл отступа был неясен новичкам, обучаемым первым шагам программирования. Добавление толстой кишки значительно прояснило его: толстая кишка каким-то образом привлекает внимание к тому, что следует, и связывает фразы До и после него вместе в правильном направлении.
как сделать отступ мой код?
основное правило для отступа кода Python (учитывая, что вы рассматриваете всю программу как «базовый блок»): первый оператор в базовом блоке, и каждый последующий оператор после него должен быть отступом на ту же сумму.
так что технически следующие программы правильно:
однако, как вы, вероятно, можете сказать сверху, случайный отступ вашего кода делает чрезвычайно трудно читать и следить за потоком программы. Лучше быть последовательным и следовать стилю.
используйте 4 пробела на каждый уровень отступа.
то есть каждое утверждение то есть, начиная новый блок и каждый последующий оператор в новом блоке, должен быть отступом четыре пробела от текущего уровня отступа. Вот выше с отступом по данным руководства стиль PEP8:
можно ли использовать вкладки?
Python понимает, что некоторые люди по-прежнему предпочитают вкладки пробелам и что устаревший код может использовать вкладки, а не пробелы, поэтому он позволяет использовать вкладки в качестве отступов. PEP8 касается этого тема:
пробелы являются предпочтительным методом отступа.
вкладки должны использоваться исключительно для согласования с кодом, который уже имеет отступы с вкладками.
обратите внимание, однако одно большое предостережение не использовать обе вкладки и пробелы для отступов. Это может привести к всевозможным странным трудным для отладки ошибкам отступов. Python расширяет вкладки до следующего 8-го столбца, но если ваш редактор имеет размер вкладки 4 столбца, или вы используете пробелы, а также вкладки, вы можете легко создать отступ код, который выглядит отлично в вашем редакторе, но Python откажется работать. Компилятор Python 3 явно отклоняет любую программу, содержащую неоднозначную смесь вкладок и пробелов, обычно поднимая TabError . Однако, по умолчанию, смешивание вкладок и пробелов все еще разрешено в Python 2, но настоятельно рекомендуется не использовать эту «функцию». Используйте -t и -tt флаги командной строки, чтобы заставить Python 2 поднять предупреждение или (предпочтительно) ошибку соответственно. PEP8 также обсуждает эту тему:
Python 3 запрещает смешивание вкладок и пробелов для отступов.
код Python 2 с отступом со смесью вкладок и пробелов должен быть преобразован в использование исключительно пробелов.
при вызове интерпретатора командной строки Python 2 с параметром-t он выдает предупреждения о коде, который незаконно смешивает вкладки и пробелы. При использовании-tt эти предупреждения становятся ошибками. Эти варианты настоятельно рекомендуется!
что означает» IndentationError: неожиданный отступ»?
эта ошибка возникает, когда оператор имеет излишний отступ или его отступ не совпадает с отступом прежних операторов в том же блоке. Например, первый оператор в программе ниже излишне отступ:
в этом примере can_drive = True строка if блок не соответствует отступу любого предыдущего утверждения:
исправить
исправление этой ошибки заключается в том, чтобы сначала убедиться, что проблемная строка даже должна быть отступом. Например, приведенный выше пример использования print может быть исправлено просто быть unindenting линии:
однако, если вы уверены, что строка должен ли быть отступ, отступ должен соответствовать отступу прежнего оператора в том же блоке. Во втором примере выше с помощью if , мы можем исправить ошибку, убедившись, что строку с can_drive = True отступ на том же уровне, что и предыдущие утверждения в if тело:
что означает» IndentationError: ожидаемый отступ блока»?
эта ошибка возникает, когда Python видит ‘заголовок’ для составной оператор, например, if : или while : но тело составного оператора или блок никогда не определяется. Например, в приведенном ниже коде мы начали if утверждение, но мы никогда не определяем тело для утверждения:
в этом втором примере, мы начали писать for цикл, но мы забываем отступ for тело цикла. Поэтому Python по-прежнему ожидает отступом на for петли тело:
комментарии не считаются органы:
исправить
исправление этой ошибки состоит в том, чтобы просто включить тело для составного оператора.
как показано выше, распространенная ошибка новых пользователей является то, что они забывают отступ тела. Если это так, убедитесь, что каждый оператор, предназначенный для включения в тело составного оператора, имеет отступ на том же уровне под началом составного оператора. Здесь является ли приведенный выше пример фиксированным:
Другим распространенным случаем является то, что по какой-то причине пользователь может не захотеть определить фактическое тело для составного оператора или тело может быть прокомментировано. В этом случае pass оператор можно использовать. The pass оператор может использоваться везде, где Python ожидает один или несколько операторов в качестве заполнителя. из документации pass :
pass является нулевой операцией — когда он выполняется, ничего не происходит. Он полезен в качестве заполнителя, когда оператор требуется синтаксически, но код не должен выполняться, например:
вот приведенный выше пример с if оператор исправлен с помощью pass ключевые слова:
что означает «IndentationError: unindent не соответствует никакому внешнему уровню отступа»?
эта ошибка возникает, когда вы откручиваете утверждение, но теперь уровень отступа этого утверждения не соответствует уровню любого предыдущего утверждения. Например, в приведенном ниже коде мы открепляем второй вызов print . Однако уровень отступа не соответствует уровню любого предыдущего утверждения:
эту ошибку особенно трудно поймать, потому что даже одно пространство приведет к сбою кода.
исправить
исправление состоит в том, чтобы убедиться, что при снятии оператор, уровень отступа соответствует уровню предыдущего оператора. Рассмотрим приведенный выше пример еще раз. В примере я хочу, чтобы второй вызов для печати был в первом if заявления тела. Поэтому мне нужно убедиться, что уровень отступа этой строки соответствует уровню предыдущих утверждений в первом инструкции:
я все еще получаю IndentationError, но моя программа, похоже, правильно отступ. Что мне делать?
если ваш программа визуально имеет правильный отступ, но вы все равно получаете IndentationError у вас, скорее всего,смешанные вкладки с пробелами. Это иногда вызывает Python вызывает странные ошибки. См. подраздел особых случаях под что означает» TabError: непоследовательное использование вкладок и пробелов в отступах»? для более глубокого разъяснения проблемы.
что делает » TabError: непоследовательное использование вкладок и пробелов в отступах» означает?
эта ошибка возникает только при попытке смешать вкладки и пробелы в качестве символов отступа. Как сказано выше, Python не позволит вашей программе содержать сочетание вкладок и пробелов и вызовет конкретное исключение TabError если он найдет, что у вас есть. Например, в приведенной ниже программе для отступов используется сочетание вкладок и пробелов:
здесь изображение, которое визуально показывает пробелы в вышеуказанной программе. Серые точки-это пробелы, а серые стрелки-вкладки:
мы действительно смешанные пробелы и знаки табуляции для отступов.
особых случаях
Обратите Внимание На Python не будет всегда поднять TabError если вы смешиваете вкладки и пробелы в своей программе. Если отступ программы однозначно, Python позволит смешивать вкладки и пробелы. Например:
и иногда Python просто задыхается от смеси вкладок и пробелов и ошибочно поднимает IndentationError исключение, когда TabError было бы более уместно. Другой пример:
как вы можете видеть, запуск вашего кода таким образом может создать таинственные ошибки. Хотя программа визуально кажется, все в порядке, Python запутался, пытаясь разобрать вкладки и пробелы, используемые для отступов и ошибок.
это отличные примеры, которые демонстрируют, почему никогда не смешивайте пробелы и символы табуляции и использовать -t и -tt флаги интерпретатора при использовании Python 2.
исправить
если ваша программа короткая, вероятно, самым простым и быстрым решением является просто повторный отступ программы. Убедитесь, что каждый оператор отступается четырьмя пробелами на уровень отступа (см. как я отступ мой код?).
однако, если у вас уже есть большая программа, в которую вы смешали вкладки и пробелы, есть автоматические инструменты, которые можно использовать для преобразования всех ваших отступов в просто пробелы.
многие редакторы, такие как PyCharm и SublimeText есть опции для автоматического преобразования вкладок в пробелы. Есть также несколько он-лайн инструментов, таких как Вкладки В Пробелы или Browserling это позволяет быстро изменить отступ кода. Есть также инструменты, написанные на Python. autopep8 например, может автоматически повторно отступать ваш код и другие ошибки отступа, а также.
даже лучшие инструменты, хотя иногда не смогут исправить все ваши ошибки отступов, и вам придется исправить их вручную. Вот почему важно всегда правильно отступать от кода с самого начала.
записку о «SyntaxError» связанные проблемы отступа
хотя и не часто, иногда некоторые SyntaxError исключения возникают из-за неправильного отступа. Например, посмотрите на код ниже:
при выполнении вышеуказанного кода a SyntaxError is raised :
хотя Python поднимает SyntaxError , the реальные проблема с вышеуказанным кодом, это второй pass заявление должно быть с отступом. Потому что второй pass не изрезаны, Python не понимает, что предыдущий if заявления и else оператор предназначен для подключения.
исправить этот тип ошибки-просто правильно изменить отступ вашего кода. Чтобы узнать, как правильно отступить код, см. раздел как сделать отступ мой код?.
мне все еще трудно с синтаксисом отступов Python. Что мне делать?
не расстраивайтесь, если вы все еще боретесь. Он может потребоваться время, чтобы привыкнуть к Правила синтаксиса пробелов Python. Вот несколько советов, которые помогут:
- получите редактор, который сообщит вам, когда у вас есть ошибка отступа. Некоторые товары, как сказано выше,PyCharm, SublimeText и Jupyter Notebook.
- когда вы отступаете свой код, подсчитайте вслух для себя, сколько раз вы нажимаете пробел (или клавишу tab). Например, если вам нужно, чтобы отступ строчка на четыре пробела, вы бы сказали вслух»один, два, три, четыре » при одновременном нажатии пробела каждый раз. Это звучит глупо, но это помогает тренировать ваш мозг, чтобы думать о том, как глубоко вы отступаете свой код.
- если у вас есть редактор, посмотрите, есть ли у него возможность автоматически конвертировать вкладки в пробелы.
- Просмотр кода других. Обзор github или Stackoverflow и см. примеры кода Python.
- просто писать код. Это единственный лучший способ стать лучше. Чем больше вы пишете код Python, тем лучше вы получите.
ресурсы используется
Возвышенный Текст 3
если случится, что вы кодируете в Sublime Text 3, это может помочь вам с отступами problemes
в Sublime Text при редактировании файла Python:
возвышенное текстовое меню>предпочтения>Настройки Используется Специальный Синтаксис :
Python.sublime-настройки
вы видите, у вас есть небольшая ошибка.
вы должны были делать:
Как вы можете видеть, ваша печать имеет только отступ 3 пробела, она должна быть отступом 4 пробела.
быстрое исправление для пользователей Sublime:
- нажмите Ctrl-H для доступа к Find и Replace
- в Find: введите 4 пробела
- in Replace: скопируйте и вставьте вкладку откуда-нибудь из вашего кода Нажмите Кнопку Заменить Все
Источник