擅长:python、mysql、java
<p>它的计算结果总是<code>I</code>,因为</p>
<pre><code>if DNA == 'ATT' or 'ATC' or 'ATA':
</code></pre>
<p>始终计算为<code>True</code></p>
<p>相当于:</p>
^{pr2}$
<p><code>'ATC'</code>的真值总是<em>真,因此得到了结果。在</p>
<p>你可以这样检查:</p>
<pre><code>if DNA in ['ATT', 'ATC', 'ATA']:
</code></pre>
<p>其他<code>if</code>子句也是如此。在</p>
<hr/>
<p>另外,请注意所有这些逻辑:</p>
<pre><code>infile = open('DNA.txt', 'r')
while True:
line = infile.readline()
if not line: break
</code></pre>
<p>可以替换为</p>
<pre><code>with open('DNA.txt', 'r') as infile:
for line in infile:
</code></pre>
<hr/>
<p>另外,另一种方法是使用字典映射和查找。这样,您就可以简化所有<code>if</code>逻辑。。示例:</p>
<pre><code>dna_dict = {
'ATT': 'I',
'ATC': 'I',
'ATA': 'I',
....
}
</code></pre>
<p>然后:</p>
<pre><code>a.append(dna_dict.get(DNA, 'X'))
</code></pre>