Я пытаюсь создать приложение в Python 3.2 и все время использую вкладки для отступа, но даже редактор меняет некоторые из них на пробелы, а затем выдает «непоследовательное использование вкладок и пробелов в отступе» при попытке запустить программа.
Как я могу изменить пробелы на вкладки? Это сводит меня с ума. (Я новичок в программировании). Я был бы рад, если бы я мог получить некоторые общие советы по своему коду, если бы я сделал много ошибок, я был бы рад услышать.
import random
attraktioner = ["frittfall","bergodalbana","spökhuset"]
class Nojesfalt:
def __init__(self, attraktion):
self.val = attraktion
self.langd = 0
self.alder = 0
#längdgräns för fritt fall
def langdgrans(self):
print("")
self.langd = int(input("Hur lång är du i cm? "))
if self.langd < 140:
print("tyvärr, du är för kort, prova något annat")
return 0
elif self.langd >= 140:
print("håll dig hatten, nu åker vi!")
print(" ")
return 1
#åldersgräns för spökhuset
def aldersgrans(self):
print("")
self.alder = int(input("Hur gammal är du? "))
if self.alder < 10:
print("tyvärr, du är för ung, prova något annat")
return 0
elif self.alder >= 10:
print("Gå in om du törs!")
print(" ")
return 1
#åker attraktion frittfall lr bergodalbana
def aka(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("åkturen gick åt skogen, bättre lycka nästa gång")
elif tal >= 20:
print("jabbadabbbadoooooooo")
return 1
#går i spökhuset
def aka1(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("du är omringad av spöken och kan inte fortsätta") return 0
elif tal >= 20:
print("Buhuuuuuu, buuuhuuuu")
return 1
#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")
while 1:
vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
if vald_attr == "1":
val = Nojesfalt(attraktioner[0])
if val.langdgrans() == 1:
val.aka()
elif vald_attr == "2":
val = Nojesfalt(attraktioner[1])
val.aka()
elif vald_attr == "3":
val = Nojesfalt(attraktioner[2])
if val.aldersgrans() == 1:
val.aka1()
elif vald_attr == "4":
break
Ответы:
Не используйте вкладки.
Примечание: причина для 8 пробелов для вкладок заключается в том, что вы сразу же замечаете, что вкладки были вставлены непреднамеренно - например, при копировании и вставке из примера кода, в котором вместо пробелов используются вкладки.
источник
Использование
autopep8
команды ниже исправило это для меня:Документация по
autopep8
ссылке здесь.источник
С редактором IDLE вы можете использовать это:
источник
Если вы используете Sublime Text для разработки на Python, вы можете избежать ошибки, используя пакет Anaconda. После установки Anaconda, откройте файл в Sublime Text, щелкните правой кнопкой мыши на открытых пространствах → выберите Anaconda → нажмите на автоформат. Готово . Или нажмите Ctrl+ Alt+ R.
источник
Как правило, люди предпочитают отступать в пространстве. Это более согласованно между редакторами, что приводит к меньшему количеству несоответствий такого рода. Тем не менее, вы можете сделать отступ с вкладкой. Это твой выбор; Тем не менее, вы должны знать, что стандарт 8 пробелов на вкладку немного шире.
Что касается вашей проблемы, скорее всего, ваш редактор испорчен. Преобразование табуляции в пробел действительно зависит от редактора.
Например, в Emacs вы можете вызвать метод untabify.
В командной строке вы можете использовать sed-строку (адаптировать количество пробелов к тому, что вам нравится):
источник
При использовании возвышенного текстового редактора я смог выбрать сегмент моего кода, который выдавал мне
inconsistent use of tabs and spaces in indentation
ошибку, и выбрать:view > indentation > convert indentation to spaces
который решил проблему для меня.
источник
Что я сделал, когда всплыла та же ошибка: выберите все ( Str+ A) и нажмите Shift+ Tab. Так что больше ничего не отступило. Теперь вернитесь к строкам, которые вы хотите выделить, и вставьте их так, как вы хотите.
У меня это сработало ...
источник
Недавно у меня возникла та же проблема, и я обнаружил, что мне просто нужно преобразовать кодировку .py файла в UTF-8. поскольку это набор, который использует Python 3.
Кстати, я все время использовал вкладки с 4 пробелами, поэтому проблема не была вызвана ими.
источник
Возвышенный текст 3
В возвышенном тексте ПОКА редактирование в Python файл:
Меню Sublime Text > Настройки > Настройки - Синтаксис :
Python.sublime-настройка
источник
Эту проблему можно решить
notepad++
, заменив Tabs на 4 Spaces:источник
У меня была эта проблема. Решение: ваша «вкладка» перед строкой проблемы - пробелы, 4, 6 или 8 пробелов. Вы должны стереть их и вставить вкладку. '\ Т'. Вот и все.
источник
Я использую Notepad ++ и получил эту ошибку.
В Notepad ++ вы увидите, что и табуляция, и четыре пробела одинаковы, но когда вы скопируете свой код в Python IDLE, вы увидите разницу, и строка с вкладкой будет иметь больше места перед ней, чем другие.
Чтобы решить проблему, я просто удалил вкладку перед строкой, а затем добавил четыре пробела.
источник
У меня была такая же ошибка. Мне пришлось добавить несколько строк кода в существующий файл * .py. В Notepad ++ это не сработало.
После добавления строк кода и сохранения я получил ту же ошибку. Когда я открыл тот же файл в PyCharm и добавил строки, ошибка исчезла.
источник
Я получил те же ошибки, но не мог понять, что я делаю неправильно.
Поэтому я исправил это, запустив авто-отступ для своего кода и позволив машине исправить мою ошибку.
Если кому интересно, как я это сделал. Просто. Зайди в vim. Введите G = GG.
Это автоматически исправит все. Удачи :)
источник
Ваша проблема из-за ограничений / конфигурации вашего редактора. Некоторые редакторы предоставляют вам инструменты для решения этой проблемы:
Преобразование вкладок в пробелы
Например, если вы используете редактор Python Стани, вы можете настроить его на сохранение.
Преобразование пробелов в закладки
Если вы используете ActiveState Komodo, у вас есть инструмент для «табификации» вашего кода. Как уже указывали другие, это не очень хорошая идея.
Pydev в Eclipse предоставляет функции «Преобразование вкладок в пробелы» и «Преобразование вкладок в табуляции».
источник
Если ваш редактор не распознает вкладки при выполнении поиска и замены (например, SciTE), вы можете вставить код в Word и выполнить поиск, используя Ctr-H и ^ t, который находит вкладки, которые затем можно заменить на 4 пробела.
источник
Отсюда был дубликат этого вопроса, но я подумал, что могу предложить представление о современных редакторах и огромном количестве функций, которые они предлагают. В коде python все, что нужно в
.py
файле, должно быть или все, используя клавишу табуляции, или пробелами. Соглашение состоит в том, чтобы использовать четыре пробела для отступа. Большинство редакторов имеют возможность визуально показывать в редакторе, имеет ли код отступы от пробелов или табуляции, что очень помогает при отладке. Например, с атомом, перейдя в настройки, а затем редактор, вы можете увидеть следующие две опции:Тогда, если ваш код использует пробелы, вы увидите маленькие точки, где ваш код имеет отступ:
И если он отступает с помощью вкладок, вы увидите что-то вроде этого:
Теперь, если вы заметили, вы можете видеть, что при использовании вкладок слева появляется больше ошибок / предупреждений, это происходит из-за того, что называется pep8, документация pep8 , которая в основном представляет собой единое руководство по стилю для python, так что все разработчики в основном пишут код тот же стандарт и внешний вид, который помогает при попытке понять код других людей, это в pep8, который способствует использованию пробелов для отступа, а не табуляции. И мы видим, что редактор показывает, что есть предупреждение, касающееся кода предупреждения pep8
W191
,Я надеюсь, что все вышеперечисленное поможет вам понять природу проблемы, с которой вы столкнулись, и как ее предотвратить в будущем.
источник
Иногда
tab
портится во время отступа. Один из способов - это, очевидно, использоватьtab
иbackspace
правильно делать отступы для кода.Другой способ - использовать
space
4 раза (в зависимости от того, сколько вы хотите сделать отступ).Странный способ, который работал для меня, когда больше ничего не работало, в зависимости от того, какую строку я получаю, я переводил
backspaced
эту строку на предыдущую строку и затем нажималenter
. Он автоматически сдвинул строку к правильному положению, и после этого я не получил никакой ошибки.Надеюсь, это должно помочь.
источник
У меня была такая же проблема, и я исправил ее, используя следующий скрипт на Python. надеюсь, это поможет другим.
это из-за использования табуляции и пробелов для отступа кода. в этом скрипте я заменяю каждую вкладку четырьмя пробелами.
Если вы используете Sublime или любой другой редактор, который дает вам инструмент для замены текста, вы можете заменить все вкладки на четыре пробела из редактора.
источник
Используйте, Idle для python или Idle3 для python3.
источник
Решить это с помощью редактора Vim
cd <path_to_your_directory>
). Пример:cd /home/vineeshvs/work
.vim <file_name>
). Пример:vim myfile.txt
.:set hlsearch
):<line_number>
). Пример::53
в редакторе Vim после ESCоднократного нажатия кнопки.:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc
). Пример: Tab будет заменен на четыре пробела следующей командой::.,$s/\t/ /gc
после ESC однократного нажатия кнопки). Этот процесс является интерактивным. Вы можете датьy
заменить вкладку пробелами иn
пропустить конкретную замену. Нажмите, ESCкогда закончите с необходимыми заменами.источник
Я странно столкнулся с подобной проблемой с одним из моих .py файлов. Я просто открыл файл в Pycharm и нажал
Option
+Command
+,L
который правильно форматирует содержимое файла за один раз.Я подозреваю, что у меня были проблемы, потому что я закодировал этот конкретный файл .py через jupyter labs, в отличие от моего обычного выбора возвышенного текста или Pycharm, и поэтому столкнулся с некоторыми скрытыми проблемами отступов, на которые многие ответы здесь ссылались
источник
Ну, у меня была та же проблема, и я понял, что проблема в том, что я скопировал код из другого редактора Python в возвышенное.
Я работал с ноутбуком Jupyter, а затем скопировал код в возвышенное. Очевидно, что когда вы вносите конкретные изменения (например, перемещаете код в функции), отступы становятся беспорядочными, и именно в этом и заключается проблема.
Так что просто придерживайтесь одного редактора. Если вы это сделаете, то у вас не будет проблем.
источник
С
pylint
его помощью вы получите подробный отчет о том, сколько мест вам нужно и где.источник
Если вы используете ATOM:
Зайдите в Меню: Пакеты -> WhiteSpace -> Преобразовать все вкладки в пробелы
источник
Попробуйте удалить отступы, а затем систематически нажимать клавишу табуляции или пробел 4 раза. Это обычно происходит со мной, когда у меня есть отступ с помощью клавиши табуляции, а затем с помощью клавиши пробела в следующей строке.
источник
Выделите отступы и нажмите вкладки. Тогда они станут последовательными :)
источник