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

当前回答

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

其他回答

如果你正在使用Sublime Text进行Python开发,你可以通过使用Anaconda包来避免这个错误。安装Anaconda后,在Sublime Text中打开你的文件,右键单击开放空间→选择Anaconda→单击自动格式化。完成了。或按“Ctrl + Alt + R”。

崇高文本的灵魂解决

我对这个问题的解决方案是在空闲编辑器中打开它,然后空闲编辑器会发现你的问题

e.g

崇高的文本

while run:

    clock.tick(27)
    
    milli = clock.tick()
    seconds = milli/1000
    timeForLevel += seconds
    print(timeForLevel)
    

闲置的编辑器

while run:

    clock.tick(27)
    
       milli = clock.tick()
    seconds = milli/1000
    timeForLevel += seconds
    print(timeForLevel)

我并不是说你应该只使用空闲编辑器。我的意思是,如果你得到错误你应该检查idle编辑器

一般来说,人们更喜欢用空格缩进。它在编辑器之间更加一致,从而减少了这种类型的不匹配。但是,您可以使用制表符缩进。这是你的选择;但是,您应该意识到每个制表符8个空格的标准有点宽。

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

例如,在Emacs上,您可以调用方法“untabify”。

在命令行中,您可以使用sed行(根据您的喜好调整空格的数量):

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

如果你使用ATOM:

转到菜单:Packages——> WhiteSpace——>将所有制表符转换为空格

我最近遇到了同样的问题,并发现我只需要将.py文件的字符集转换为UTF-8,因为这是Python 3使用的字符集。

顺便说一句,我一直使用4个空格制表符,所以问题不是由它们引起的。