得到ch的补码

2024-04-27 07:54:35 发布

您现在位置:Python中文网/ 问答频道 /正文

为了得到输入字符的补码,下面的代码怎么能工作?这个循环似乎永远不会结束,但是假设,如果我输入‘Z’作为dna,为什么它不会断裂并退出呢?我是不是用错了?伊莱夫呢?在

def get_补体(dna):

''' (ch) -> ch

Reverse the 'A' to 'T' or vice versa and 'C' to 'G' and vice versa too.
>>> get_complement('A')
'C'
>>> get_complement('G')
'T'

'''
if dna == 'A':
    print ('C')
    if dna == 'C':
        print ('A')
        if dna == 'T':
            print ('G')
            if dna == 'G' :
                print ('T')
                while  {'A', 'C', 'G', 'T'}.isnotsubset(set(dna)) :
                    break
                return ('')

Tags: andto代码getifdefvicech
2条回答

您应该使用dictionary设置一个映射

complement = {'A': 'C', 'C': 'A', 'T': 'G', 'G': 'T'}

那你可以做些什么

^{pr2}$

输出

'CGATGAC'

对于一个角色:

complement['A']

输出

'C'

正如你写的例子一样(赛博也根据你的例子写了他的答案),你得不到补充。你得到的是A->;C(不是补码T),T->;G而不是A,等等

像赛博一样使用字典,它应该是这样的:

complement = {'A':'T', 'T':'A', 'C':'G', 'G':'C'}

在代码中,包括对非DNA字符的检查:

^{pr2}$

其中“original”生成“TAGCAGT”和“bad\u original”生成“包含非DNA字符”。在

注意,这是补语,而不是相反的补语,这通常更有趣。在

更一般地说,如果你打算用它来做DNA序列,你应该看看BioPython模块(http://biopython.org/wiki/Seq#Complement_and_reverse_complement),这将使你的补体(和反向补体)具有更多的通用性、错误检查等

相关问题 更多 >