擅长:python、mysql、java
<p>第一件事:是<code>True</code>而不是<code>true</code>。</p>
<p>第二件事:不要说<code>endswith == True</code>,只要说<code>endswith</code>。</p>
<p>第三件事:<code>and</code>比<code>or</code>具有更高的优先级,因此您编写的内容相当于:</p>
<pre><code>(length%3==0 and startswith==true and endswith==true) or ...
</code></pre>
<p>你不是这个意思。</p>
<p>第四件事:最好说:</p>
<pre><code>if len(DNA) % 3 == 0 and DNA.startswith('ATG') and DNA[-3:] in ('TAA', 'TAG', 'TGA'):
</code></pre>
<p>正如蒂姆指出的,<code>DNA.endswith(('TAA', 'TAG', 'TGA'))</code>比<code>DNA[-3:] in ...</code>强。它更简单,不用费心测试,我希望它也更快。如果有很多允许长度相等的端点,并且正在执行许多测试,那么构造一次<code>set</code>并对结束切片执行<code>in</code>测试会更快。但有三种可能性并不是“很多”。</p>