Python缩进(制表符/间距错误)

Python缩进(制表符/间距错误),python,indentation,Python,Indentation,我已经通过Python编写了一个“战舰”程序,并决定构建我的代码(就像以前一样,它很凌乱,但运行良好)。但是,每当我运行代码时,就会弹出缩进错误: "File "python", line 29 guess_col = int(raw_input("Guess Col:")) IndentationError: unindent does not match any outer indentation level" 我四处搜索,发现我使用了一些空格和制表符,所以我将其完全切换为制表符(缩进4个

我已经通过Python编写了一个“战舰”程序,并决定构建我的代码(就像以前一样,它很凌乱,但运行良好)。但是,每当我运行代码时,就会弹出缩进错误:

"File "python", line 29
guess_col = int(raw_input("Guess Col:"))
IndentationError: unindent does not match any outer indentation level"
我四处搜索,发现我使用了一些空格和制表符,所以我将其完全切换为制表符(缩进4个空格)。然而,问题仍然存在,我不明白为什么。有人能分享为什么会这样吗

from random import randint
board = []
turn = 0
def print_board(board):
   for row in board:
       print " ".join(row)
def random_row(board):
    return randint(0, len(board) - 1)
def random_col(board):
    return randint(0, len(board) - 1)

#Start Battleship Functionality Here
print "Let's play Battleship!"
for x in range(5):
    board.append(["O"] * 5)
    print_board(board)

ship_row = random_row(board)
ship_col = random_col(board)
print ship_row
print ship_col


for turn in range(4):
    guess_row = int(raw_input("Guess Row:"))
    guess_col = int(raw_input("Guess Col:"))
if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
    print "Oops, that's not even in the ocean."
    print "Turn", turn + 1
elif (board[guess_row][guess_col] == "X"):
    print "You guessed that one already."
    print "Turn", turn + 1
elif guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sunk my battleship!"
    print_board(board)
    break
elif turn == 3:
    print "Game Over"
else:
    print "You missed my battleship!"
    board[guess_row][guess_col] = "X"
    print "Turn", turn + 1
    print_board(board)
来自随机导入randint
董事会=[]
转动=0
def打印板(板):
对于板中的行:
打印“”连接(行)
def随机_行(板):
返回randint(0,len(板)-1)
def随机_柱(板):
返回randint(0,len(板)-1)
#在这里启动战舰功能
打印“让我们玩战舰吧!”
对于范围(5)内的x:
董事会追加([“O”]*5)
印刷电路板
船行=随机船行(板)
船列=随机列(船列)
打印发货行
打印船型
对于交车范围(4):
猜测行=int(原始输入(“猜测行:”)
guess\u col=int(原始输入(“guess col:”)
如果(猜测行<0或猜测行>4)或(猜测列<0或猜测列>4):
打印“哦,那甚至不在海里。”
打印“回合”,回合+1
elif(董事会[猜测行][猜测列]=“X”):
打印“你已经猜到了。”
打印“回合”,回合+1
elif guess_row==ship_row和guess_col==ship_col:
打印“祝贺你!你击沉了我的战舰!”
印刷电路板
打破
elif回合==3:
打印“游戏结束”
其他:
打印“你错过了我的战舰!”
棋盘[猜一排][猜一列]=“X”
打印“回合”,回合+1
印刷电路板

问题出在For语句中-因为我的IF没有在For循环下正确缩进,缩进级别不匹配。将其更正为该值可使程序平稳运行

    for turn in range(4):
        guess_row = int(raw_input("Guess Row:"))
        guess_col = int(raw_input("Guess Col:"))

        if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
            print "Oops, that's not even in the ocean."
            print "Turn", turn + 1
            etc....
交车范围(4)的
:
猜测行=int(原始输入(“猜测行:”)
guess\u col=int(原始输入(“guess col:”)
如果(猜测行<0或猜测行>4)或(猜测列<0或猜测列>4):
打印“哦,那甚至不在海里。”
打印“回合”,回合+1
等

谢谢大家的投入

旁白:Python的通用标准是专门使用空格。另请参见,您上面粘贴的代码似乎是空格和制表符的混合体。哦,感谢您的支持!你知道为什么会发生这个错误吗?可能是因为你仍然混合了制表符和空格。我运行了你的代码,重新缩进了问题行,它运行得很好。另外,在重新缩进内容时要小心,因为我认为所有的if语句都需要向前一级