Python2缩进错误

Python2缩进错误,python,python-2.7,Python,Python 2.7,出于某种原因,我定义了这个python函数,它给了我一个缩进错误: print '-------------------------------------------------------------' 我不明白为什么 def seq_type(file_handle): is_DNA = True is_RNA = True is_protein = True proteins = 'arndcqeghilkmfpstwyv' for line i

出于某种原因,我定义了这个python函数,它给了我一个缩进错误:

print '-------------------------------------------------------------'
我不明白为什么

def seq_type(file_handle):
    is_DNA = True
    is_RNA = True
    is_protein = True
    proteins = 'arndcqeghilkmfpstwyv'
    for line in file_handle:
        line.strip()
        if line[0] == '>': #skip this line since its fasta headear and therefore
            continue       #no sequence at this line

        print line
        if is_RNA == True:
            for char in line:
                print 'Character is: ', char
                if char.lower() == 'a' or char.lower() == 'u' or char.lower() == 'c' or char.lower() == 'g'or char == '\n':
                   is_RNA = True               
                   print is_RNA
                else:
                    is_RNA = False
                    print 'is RNA? ', is_RNA
                    break
    print is_RNA        

    print '-------------------------------------------------------------------'

        print line
        if is_DNA == True:
            for char in line:
                print 'Character is: ', char
                if char.lower() == 'a' or char.lower() == 't' or char.lower() == 'c' or char.lower() == 'g'or char == '\n':
                   is_DNA = True               
                   print is_DNA
                else:
                    is_DNA = False
                    print 'is DNA? ', is_DNA
                    break
    print is_DNA        

那是因为你把它缩进错了<代码>打印行在未缩进的行之后缩进,但块的开头没有任何内容。

可能是这样的:

(...)    
    print '-------------------------------------------------------------------'

    print line
    if is_DNA == True:
        for char in line:
            print 'Character is: ', char
            if char.lower() == 'a' or char.lower() == 't' or char.lower() == 'c' or char.lower() == 'g'or char == '\n':
                is_DNA = True               
                print is_DNA
            else:
                is_DNA = False
                print 'is DNA? ', is_DNA
                break
    print is_DNA  

你已经编辑了你的帖子。。。我修改了我的答案。

这两行之间出现了意外的缩进:

    print '-------------------------------------------------------------------'

        print line

打印行
是缩进的,不应该缩进。但是
def seq\u type(文件句柄)
是的,很抱歉我在复制和粘贴代码时丢失了缩进。。。。请查看编辑后的帖子@tmoreauYou,因为您忘记包含确切的错误消息。值得注意的是,错误消息通常包括它们出现的行。您希望所有打印都在for块中,对吗?你需要将它们全部缩进2级。我在复制粘贴代码时丢失了所有缩进。请查看编辑后的帖子@Charlie Martinohh是的当然。。。我就是看不见。谢谢@Charlie MartinPython通常会忽略空白行,不是吗?所以我认为只有空格的行不应该影响缩进。刚刚在Spyder 2.7上试用过,只要下一行代码缩进正确,在
for:
后面有一个空行就可以了。确实如此,但这不是问题所在。问题是,
print'-'
没有缩进,
打印行
没有缩进。因此Python希望看到
print line
属于缩进块,但是没有任何东西指示块的开始。我在这里进一步讨论了这个问题。