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