You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6中DNA转RNA转录代码无法通过‘ACGTXXXCTTAA’测试

DNA到RNA转录代码的问题分析与修复

你的问题出在检测到无效字符后,依然会输出部分转换结果。我们来拆解一下:

当测试用例是ACGTXXXCTTAA时,循环遇到第一个X时,会打印Invalid Input然后break跳出循环,但循环结束后,代码还是会执行最后的print(new)——这时候new已经存了前面ACGT转换后的UGCA,所以最终输出会是:

Invalid Input
UGCA

而题目要求的是只输出Invalid Input,不能有后面的部分结果。

修复方案

我们可以用一个标记变量来记录输入是否有效,只有在所有字符都验证通过的情况下,才输出转换后的RNA序列:

dna = input()
new = ""
is_valid = True  # 标记输入是否有效
for i in dna:
    if i not in 'ATGC':
        print("Invalid Input")
        is_valid = False
        break
    # 执行转录逻辑
    if i == 'A':
        new += 'U'
    elif i == 'C':
        new += 'G'
    elif i == 'T':
        new += 'A'
    else:
        new += 'C'
# 只有输入有效时才输出结果
if is_valid:
    print(new)

或者你也可以用sys.exit()直接终止程序(需要导入sys模块),这样遇到无效字符后就不会执行后面的print(new)了:

import sys

dna = input()
new = ""
for i in dna:
    if i not in 'ATGC':
        print("Invalid Input")
        sys.exit()  # 直接退出程序,后续代码不再执行
    if i == 'A':
        new += 'U'
    elif i == 'C':
        new += 'G'
    elif i == 'T':
        new += 'A'
    else:
        new += 'C'
print(new)

两种方案都能解决问题:第一种更灵活(比如后续如果需要做其他处理),第二种更直接。

内容的提问来源于stack exchange,提问作者Bikramjeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:29:47