缩进中制表符和空格的使用不一致 [重复]

Inconsistent use of tabs and spaces in indentation [duplicate]

提问人:knightcool 提问时间:10/20/2012 最后编辑:pokeknightcool 更新时间:4/2/2022 访问量:85749

问:

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

Python 缩进

评论

4赞 Rohan 10/21/2012
在上面的代码中,我们看不到空格,制表符不同。您可能希望发布其输出将分别显示空格和选项卡。cat -evt <yourfile.py>

答:

22赞 poke 10/20/2012 #1

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

评论

1赞 Code True 7/2/2017
有人知道如何使用 vim 快速修复吗?
1赞 poke 7/2/2017
@jb1 搜索“vim convert tabs spaces”会给你这个问题
0赞 Code True 7/2/2017
我们可能同时找到了它,谢谢:^)
0赞 Naresh Teli 12/24/2020
谢谢,我在复制粘贴过程中在评论中添加了空格
2赞 razi 10/20/2012 #2

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

6赞 Larry Lustig 10/20/2012 #3

如果你仔细看线条

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

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

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

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

为了避免将来出现这种情况,请训练自己仅使用 Tab 键或空格键进行缩进,并考虑将编辑器设置为自动将制表符转换为空格。

0赞 D3vil_Mind 10/20/2012 #4

根据 your 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 中练习

2赞 Vritansh Kamal 3/28/2020 #5

有一段时间,我几乎对这个问题感到困惑。我当时使用 CentOS Ec2,发现你可以:

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

空格将作为行尾(如符号)可见。 这很有帮助。$

3赞 Ganesan J 9/28/2020 #6

就我而言,Visual Studio 代码.

Ctrl+Shift+P 或视图->命令面板。

类型

将缩进转换为空格

按 Enter 键。

0赞 Akash Darji 4/2/2022 #7

如果要从其他源复制和粘贴代码,请始终先将其复制并粘贴到普通文本编辑器上,然后在代码编辑器中复制和粘贴后修复缩进。这是解决此问题的简单方法。