Python给我一个缩进错误:期望for循环的缩进块

时间:2015-04-11 17:23:59

标签: python indentation

这是我的代码:

if (choice == 1) :
        i = 0
        username = raw_input("Enter your User Name : ")
        with open("users.txt", "r") as ins :
            for line in ins :
                i += 1
                if (username == line.rstrip()) :
                    j = 0
                    password = raw_input("Enter your Password : ")
                    with open("passwords.txt", "r" as sth) :
                        for line1 in sth :
                            j += 1
                            if (i == j) :
                                if (password == line1.rstrip()) :
                                    usrName = username
                                    break
                    break
            break

我正在尝试创建一个接受用户名和密码的程序,并将它们与.txt文件中的等效项进行比较。但是,python给了我以下错误:

test@test-PC:~/Desktop/test$ python main.py
File "main.py", line 31
for line in ins :
  ^
IndentationError: expected an indented block

我无法弄清楚我没有正确缩进的位置。任何人都可以告诉我是什么原因导致这个问题并建议解决方案?

2 个答案:

答案 0 :(得分:2)

您似乎使用了空格和制表符的混合,每个空格和制表符都被计为单个缩进,并且可能被视为错误的缩进,即使它在视觉上看起来很好,所以只需使用而是空格(4个空格,即PEP-008 recommendation

您的上一个break缩进不合适,它根本不对应任何for循环。如果上面的代码片段是所有代码,我会删除它。

更准确地说,就是这个:

for line in ins :
|   i += 1
|   if (username == line.rstrip()) :
|       j = 0
|       password = raw_input("Enter your Password : ")
|       with open("passwords.txt", "r" as sth) :
|           for line1 in sth :
|               j += 1
|               if (i == j) :
|                   if (password == line1.rstrip()) :
|                       usrName = username
|                       break
|       break
break # What does it break out of here?

答案 1 :(得分:1)

缩进错误通常在空格标签混合在一起时发生。 另外,正如@mu所提到的那样,休息应该到位。