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

406 投票
29 回答
1641292 浏览
提问于 2025-04-16 15:52

我正在用Python 3.2创建一个应用程序,我一直使用制表符(Tab键)来缩进代码,但我的编辑器有时候会把一些制表符变成空格。当我尝试运行程序时,它就会提示“缩进中制表符和空格使用不一致”,这让我很头疼。

我该怎么把空格换成制表符呢?这真让我抓狂。

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

29 个回答

151

我用下面的 autopep8 命令解决了这个问题:

 autopep8 -i my_file.py

autopep8 的文档可以在这里找到:链接.

233

对于 Visual Studio Code 用户

按下 Ctrl + Shift + P,或者在菜单中选择 视图命令面板

然后输入:

>将缩进转换为空格

最后按下 Enter 键。

413

别用制表符(Tab)。

  1. 把你的编辑器设置成用4个空格来缩进。
  2. 进行一次搜索和替换,把所有的制表符替换成4个空格。
  3. 确保你的编辑器设置成把制表符显示为8个空格。

注意:把制表符设置为8个空格的原因是,这样你可以立刻发现不小心插入的制表符,比如从使用制表符而不是空格的示例代码中复制粘贴时。

撰写回答