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

时间:2012-10-20 14:04:03

标签: python indentation

def contains_sequence(dna1, dna2):
    ''' (str, str) -> bool

    Return True if and only if DNA sequence dna2 occurs in the DNA sequence
    dna1.

    >>> contains_sequence('ATCGGC', 'GG')
    True
    >>> contains_sequence('ATCGGC', 'GT')
    False

    '''
    b=False
    len2=len(dna2)
    i=0
    for j in dna1:
        temp=dna1[i:i+len2]
        if temp == dna2:
            b=True
        i=i+1
    return b

我是Python新手。上面粘贴的程序在“if temp == dna2:”行中给出了一个错误“在缩进中使用制表符和空格的不一致”。有人可以帮我找出缩进的错误吗?

6 个答案:

答案 0 :(得分:20)

这意味着您在缩进中混合了空格和制表符。您必须修复它以与标签或空格保持一致。

答案 1 :(得分:4)

如果你仔细看看这些线

    temp=dna1[i:i+len2]
    if temp == dna2:

在你的代码中,你会看到每行开头的“空格”是“构造”不同的。在一种情况下,它使用制表符和其他空格,或者,如果两者都有制表符和空格,则它们以不同的组合使用。

您可以通过将光标放在每一行的开头并使用右箭头键来“走”通过字符来检查这一点。您将看到光标在每一行上的移动方式不同。

要修复,请删除每行开头的标签和空格,然后在每一行重新插入相同的字符。

为避免将来使用标签键或空格键缩进,请考虑将编辑器设置为自动将标签转换为空格。

答案 2 :(得分:1)

假设你有一个“好”的IDE,最好将tab键设置为4个空格而不是“tab”,这样你就可以减少问题,这是一个很好的练习,因为当你和其他人一起工作时。

答案 3 :(得分:1)

一段时间以来,我几乎对这个问题感到很沮丧。我在使用CentOS Ec2时发现可以:

vim <filename>
Press Escape Key If you're in write/insert mode
:set list

空格将显示为行尾,例如""" https://stackoverflow.com/a/60894948/3872976 """ from django.db.backends.mysql import base def check_mysql_gone_away(db_wrapper): def decorate(f): def wrapper(self, query, args=None): try: return f(self, query, args) except (base.Database.OperationalError, base.Database.InterfaceError) as e: if 'MySQL server has gone away' in str(e): db_wrapper.connection.close() db_wrapper.connect() self.cursor = db_wrapper.connection.cursor() return f(self, query, args) # Map some error codes to IntegrityError, since they seem to be # misclassified and Django would prefer the more logical place. if e.args[0] in self.codes_for_integrityerror: raise base.utils.IntegrityError(*tuple(e.args)) raise return wrapper return decorate class DatabaseWrapper(base.DatabaseWrapper): def create_cursor(self, name=None): class CursorWrapper(base.CursorWrapper): @check_mysql_gone_away(self) def execute(self, query, args=None): return self.cursor.execute(query, args) @check_mysql_gone_away(self) def executemany(self, query, args): return self.cursor.executemany(query, args) cursor = self.connection.cursor() return CursorWrapper(cursor) 符号。 很有帮助。

答案 4 :(得分:0)

根据你的Doc字符串

您的代码:

b=False
len2=len(dna2)
i=0
for j in dna1:
    temp=dna1[i:i+len2]
    if temp == dna2:
        b=True
    i=i+1
return b

这么大的代码可以简化为一行

return dna1.find(dna2)>=0

另外,如果你对“vim”编辑器中的缩进不好,那么在IDLE3

中练习是很好的

答案 5 :(得分:0)

在我的情况下,Visual Studio代码..

Ctrl + Shift + P或View-> Command Palette。

类型

将缩进转换为空格

按Enter。