<p>以下是引发错误的程序:</p>
<pre><code>motif = "abcd"
cMotif = list(motif)
motifLength = len(cMotif)
dna = "I am a dna which has abcd in it.a"
dnArray = list(dna)
locations = ""
position = 0
for nt in dnArray:
if (nt == cMotif[0]):
for x in range(0, (motifLength)):
if ((x + position) > len(dnArray)):
break
if (dnArray[position + x] == cMotif[x]):
if (x >= (motifLength - 1)):
locations += (str(position + 1) + " ")
break
else:
break
position += 1
print(locations)
</code></pre>
<p>我将<code>if ((x + position) > len(dnArray)):</code>更改为<code>if ((x + position) >= len(dnArray)):</code>,错误消失了,因为您的程序永远不会转到<code>break</code>语句,因为您没有检查<code>"="</code>条件。记住,在编程语言中,事情从0开始。在</p>
<p>把这一行放在你的条件上方<code>if ((x + position) > len(dnArray)):</code>,你就会知道原因了:</p>
^{pr2}$
<p>此print语句的最后一行将指示<code>My position is: 33 and the length is: 33</code></p>
<p>请注意,您已经到达了行的末尾,并且它与break语句中的现有条件不匹配。在</p>