14
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:”行给我一个错误“缩进中制表符和空格的使用不一致”。有人可以帮我找出缩进是不正确的吗?

4

6 回答 6

21

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

于 2012-10-20T14:11:14.957 回答
5

如果你仔细看线条

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

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

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

要解决此问题,请删除每行开头的制表符和空格,然后在每行中使用相同的字符重新插入它们。

为避免将来发生,请训练自己仅使用制表键或空格键进行缩进,并考虑将编辑器设置为自动将制表符转换为空格。

于 2012-10-20T15:17:31.520 回答
1

假设您有一个“好”的 IDE,最好将制表键设置为 4 个空格而不是“制表符”,这样您的问题就会减少,而且这是一个很好的做法,因为您将与其他人一起工作。

于 2012-10-20T15:06:07.003 回答
1

一段时间以来,我几乎对这个问题感到厌烦。我正在使用 CentOS Ec2 并发现您可以:

vim <文件名>
如果您处于写入/插入模式,请按 Escape 键
:设置列表

空格将显示为行尾,例如$符号。这很有帮助。

于 2020-03-27T22:29:41.700 回答
1

就我而言,Visual Studio 代码..

Ctrl+Shift+P 或查看-> 命令面板。

类型

将缩进转换为空格

按 Enter。

于 2020-09-28T12:17:29.150 回答
0

根据您的文档字符串

你的代码:

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中练习

于 2012-10-20T15:27:05.637 回答