“缩进中的制表符和空格使用不一致”

我试图在Python 3.2中创build一个应用程序,我一直使用制表符缩进,但是即使编辑器将其中的一些改为空格,然后打印出“缩进时制表符和空格的不一致使用”当我尝试运行该程序。

我怎样才能把空格变成标签? 这让我疯狂。 (我是编程初学者)。 我会很高兴,如果我能得到一些关于我的代码的总体技巧,如果我做了很多misstakes我会很高兴听到。

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 

不要使用标签。

  1. 将您的编辑器设置为使用4个空格进行缩进。
  2. 进行search并replace以用4个空格replace所有的选项卡。
  3. 确保您的编辑器设置为标签显示为8个空格。

注意:制表符的8个空格的原因是,您可以立即注意到制表符已被意外插入 – 例如从使用制表符而不是空格的示例代码复制和粘贴时。

用IDLE编辑器,你可以使用这个

编辑 – >全选
格式 – >解除区域
假设你的编辑器用一个标签replace了8个空格,在input框中input8。
点击select,它修复整个文件。

最近有同样的问题。 发现我只需要将.py文件的字符集转换为UTF-8,就像Python 3使用的那样。 顺便说一句,我一直使用4空间选项卡,所以问题不是由他们造成的。

如果你使用的是用于python开发的Sublime文本,你可以通过使用Anaconda包来避免这个错误。安装Anaconda之后,打开你的文件在sublime中,右键点击打开的空格 – >selectanaconda->点击autoformat.DONE.Or按下CTRL + ALT + R。

一般人们喜欢用空格缩进。 在编辑器中更加一致,从而减less了这种错配。 但是,您可以使用制表符缩进。 这是你的select; 但是,你应该知道每个标签8个空格的标准有点宽。

关于你的问题,最可能的是,你的编辑器搞砸了。 将tab转换为空格实际上是依赖于编辑器的。

例如,在emacs上,你可以调用方法'unabify'。

在命令行上,你可以使用一个sed行(根据你的喜好来调整空格的数目):

  sed -e 's;\t; ;' < yourFile.py > yourNedFile.py 

我有这个问题,解决scheme:你的“标签”之前问题行是空格,4,6或8个空格。 你应该把它们涂上去然后插入TAB。 '\ T'。 就是这样

您的问题是由于您的编辑器限制/configuration。 有些编辑通过以下方式为您提供帮助解决问题的工具:

a)将制表符转换为空格

例如,在你使用stani的python编辑器,你可以configuration它来保存。

b)将空格转换成标签

如果您使用的是ActiveState Komodo,则可以使用“Tabify”您的代码的工具。 正如其他人已经指出,这不是一个好主意

Eclipse的Pydev提供了“将制表符转换为空格制表符”和“将空格制表符转换为制表符”

我使用记事本+ +得到这个错误。

在Notepad ++中,你会看到tab和四个空格是相同的,但是当你将代码复制到python IDLE时,你会看到不同之处,并且带有一个tab的行会比其他空间有更多的空间。

为了解决这个问题,我刚刚删除了该行之前的标签,然后添加了四个空格。

有同样的错误。 我不得不添加几个代码行到现有的* .py文件。 在Notepad ++中没有工作。 添加代码行后保存同样的错误。 当我在PyCharm中打开同一个文件并添加行时,错误消失了。

高亮显示缩进的位,然后单击选项卡。 他们将会变得一致:)