如何解决Python中的缩进错误?

时间:2016-01-05 13:52:54

标签: python indentation

当我运行以下代码时,我在许多行中出现缩进错误,例如第6行和我放exit(0)的行:

from sys import exit

def gold_room():
    print "This room is full of gold, How much do you take?"

    next = raw_input("> ")
    if "0" in next or "1" in next:
        how_much = int(next)
    else:
        dead("Man learn to type a number!")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)
    else:
        dead("You greedy bastard!")


def bear_room():
    print "There is a bear here."
    print "The bear has a bunch of honey."
    print "The fat bear is in front of another door."
    print "How are you going to move a bear?"
    bear_moved = False

    while True:
        next = raw_input("> ")

        if next == "take honey":
            dead("The bear looks at you and slaps your face off.")
        elif next == "taunt bear" and not bear_moved:   
            print "The bear has moved from the door and you can go now."
            bear_moved = True
        elif next == "taunt bear" and bear_moved:
            dead("The bear gets pissed off and chews your leg off.")
        elif next == "open door" and bear_moved:    
            gold_room()
        else:
            print "I got no idea waht that means."


def cthulhu_room():
    print "Here you see the great evil Cthulhu."
    print " He, it, whatever stares at you and you go insane."
    print "Do you flee for your life or eat your head?"

    next = raw_input("> ")

    if  "flee" in next:
        start()
    elif "head" in next:
        dead("Well that was tasty!")
    else:
        cthulhu_room()


def dead(why):
    print why, "Good job!"
    exit(0)

def start():
    print "You are in dark room."
    print "There is a door on your right and left."
    print "Which one do you take?"

    next = raw_input("> ")

    if next == "left":
        bear_room()
    elif next == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starved.")


start()

2 个答案:

答案 0 :(得分:2)

  1. 不要混合标签和空格。
  2. 使用将用空格替换制表符的工具(例如PyCharm)。
  3. 顺便说一句,你可以使用PyCharm来修复破损的缩进。

答案 1 :(得分:0)

您正在混合制表符和空格。

要在Linux上修复您的文件:

tr \\t '    ' < file_in.py > file_out.py

在Windows(7+)上:

powershell -Command "(gc file_in.py) -replace '\t', '    ' | Out-File file_out.py"