擅长:python、mysql、java
<p>问题是,您在同一个列表上循环了四次,并且还修改了以前循环中所做的更改。因此,使用带有多个if-else条件的单个循环:</p>
<pre><code>RNA = []
for char in DNA:
if char == "G":
RNA.append("C")
elif char == "C":
RNA.append("G")
elif char == "A":
RNA.append("U")
elif char == "T":
RNA.append("A")
print("".join(RNA))
</code></pre>
<p>最好的解决方案是使用<a href="https://docs.python.org/2/library/stdtypes.html#str.translate" rel="nofollow">^{<cd1>}</a>:</p>
<pre><code>>>> from string import maketrans
>>> s = "ATGTACATGGGCATAGCCATATA"
>>> tab = maketrans('GCAT', 'CGUA')
>>> s.translate(tab)
'UACAUGUACCCGUAUCGGUAUAU'
</code></pre>
<p>在Python3中,我们可以不使用任何导入:</p>
<pre><code>>>> s = "ATGTACATGGGCATAGCCATATA"
>>> s.translate({ord(k): v for k, v in zip('GCAT', 'CGUA')})
'UACAUGUACCCGUAUCGGUAUAU'
</code></pre>