提问人:knightcool 提问时间:10/20/2012 最后编辑:pokeknightcool 更新时间:4/2/2022 访问量:85749
缩进中制表符和空格的使用不一致 [重复]
Inconsistent use of tabs and spaces in indentation [duplicate]
问:
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:”行给我一个错误“在缩进中不一致地使用制表符和空格”。有人可以帮我找出缩进是如何不正确的吗?
答:
这意味着您在缩进中混淆了空格和制表符。您必须修复它以与制表符或空格保持一致。
评论
假设你有一个“好的”IDE,最好将 Tab 键设置为 4 个空格而不是“制表符”,这样你就不会遇到问题,而且这是很好的做法,当你与其他人一起工作时。
如果你仔细看线条
temp=dna1[i:i+len2]
if temp == dna2:
在您的代码中,您将看到每行开头的“空格”以不同的方式“构造”。在一种情况下,它使用制表符,在其他空格中使用制表符,或者,如果两者都有制表符和空格,则它们以不同的组合使用。
您可以通过将光标放在每行的开头并使用右箭头键“浏览”字符来检查这一点。您将看到光标在每行上的移动方式不同。
若要解决此问题,请删除每行开头的制表符和空格,并在每行上使用相同的字符重新插入它们。
为了避免将来出现这种情况,请训练自己仅使用 Tab 键或空格键进行缩进,并考虑将编辑器设置为自动将制表符转换为空格。
根据 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 中练习
有一段时间,我几乎对这个问题感到困惑。我当时使用 CentOS Ec2,发现你可以:
vim <filename> Press Escape Key If you're in write/insert mode :set list
空格将作为行尾(如符号)可见。
这很有帮助。$
就我而言,Visual Studio 代码.
Ctrl+Shift+P 或视图->命令面板。
类型
将缩进转换为空格
按 Enter 键。
如果要从其他源复制和粘贴代码,请始终先将其复制并粘贴到普通文本编辑器上,然后在代码编辑器中复制和粘贴后修复缩进。这是解决此问题的简单方法。
评论
cat -evt <yourfile.py>