【问题标题】:Inconsistent use of tabs and spaces in indentation缩进中制表符和空格的使用不一致
【发布时间】:2012-10-10 22:46:20
【问题描述】:
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:”行给我一个错误“缩进中制表符和空格的使用不一致”。有人可以帮我找出缩进不正确的地方吗?

【问题讨论】:

  • 在上面的代码中,我们看不到空格,制表符不同。您可能想发布cat -evt <yourfile.py> 的输出,它将分别显示空格、标签。

标签: python indentation


【解决方案1】:

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

【讨论】:

  • 有人知道如何用 vim 快速修复吗?
  • @jb1 搜索“vim convert tabs spaces”会得到this question
  • 我们可能同时找到了,谢谢:^)
  • 谢谢,我在复制粘贴时在评论中添加了空格
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果你仔细看线条

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

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

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

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

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

    【讨论】:

      【解决方案4】:

      根据您的文档字符串

      你的代码:

      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】:

        有一段时间我几乎对这个问题感到厌烦。我使用的是 CentOS Ec2,发现你可以:

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

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

        【讨论】:

          【解决方案6】:

          在我的例子中是 Visual Studio 代码..

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

          类型

          将缩进转换为空格

          按 Enter。

          【讨论】:

            猜你喜欢
            • 2011-08-06
            • 2015-08-28
            • 2019-04-15
            • 2020-01-23
            • 2019-07-24
            • 1970-01-01
            • 2020-08-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多