我试图在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

当前回答

当同样的错误弹出时,我所做的是:选择所有内容(Str + A)并按Shift + Tab。所以不再有缩进了。现在回到你想要缩进的行,把它放回你想要的位置。

这对我很管用……

其他回答

在IDLE编辑器中,你可以这样使用:

菜单编辑→全选 菜单格式→取消区域分类 假设编辑器用制表符替换了8个空格,在输入框中输入8。 点击选择,它会修复整个文档。

我使用notepad++得到了这个错误。

在notepad++中,你会看到制表符和四个空格都是相同的,但当你将代码复制到Python IDLE时,你会看到区别,带制表符的行比其他行前面有更多的空格。

为了解决这个问题,我只是删除了行前的制表符,然后添加了四个空格。

There was a duplicate of this question from here but I thought I would offer a view to do with modern editors and the vast array of features they offer. With python code, anything that needs to be intented in a .py file, needs to either all be intented using the tab key, or by spaces. Convention is to use four spaces for an indentation. Most editors have the ability to visually show on the editor whether the code is being indented with spaces or tabs, which helps greatly for debugging. For example, with atom, going to preferences and then editor you can see the following two options:

然后,如果你的代码使用空格,你会在你的代码缩进的地方看到小点:

如果它使用制表符缩进,你会看到类似这样的东西:

Now if you noticed, you can see that when using tabs, there are more errors/warnings on the left, this is because of something called pep8 pep8 documentation, which is basically a uniform style guide for python, so that all developers mostly code to the same standard and appearance, which helps when trying to understand other peoples code, it is in pep8 which favors the use of spaces to indent rather than tabs. And we can see the editor showing that there is a warning relating to pep8 warning code W191,

我希望以上所有内容都能帮助您了解您所遇到的问题的性质,以及如何在将来预防它。

对于Anaconda, Spyder用户,您可以访问源代码>修复缩进

有时,制表符在缩进时确实会出错。一种方法显然是使用制表符和退格键来正确地缩进代码。

另一种方法是使用4次空格(取决于你想缩进多少)。

一个奇怪的方法,当我没有其他工作时,我得到的任何一行错误,我后退一行到前一行,然后按enter。它自动缩进行到正确的位置,我没有得到任何错误之后。

希望这能有所帮助。