python函数用来解决这个问题是什么

2024-04-29 08:13:16 发布

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

[H6-4](基因.py)编写一个从用户读取字符串的程序。这个字符串将一个DNA分子表示为字母a、C、G和T的序列,每个字母代表一个不同的碱基。然后确定它是否代表一个潜在基因,如果它满足以下4部分密码子标准:

•从起始密码子ATG开始。 •长度是3的倍数。 •以其中一个停止密码子标签、TAA或TGA结尾。 •在第一个密码子和最后一个密码子之间的密码子序列中,它没有中间的终止密码子。在

通过定义一个布尔函数is_gene(dna)来实现这一点,当dna是有效的dna并且它满足每个密码子条件时,返回True。在

同时定义一个布尔函数is_valid_DNA(seq),如果seq中的每个字符都是a、C、G或T之一,则返回True。否则返回False。在

然后完成您的程序:使用is_valid_DNA(seq)函数验证输入字符串seq的内容,如果它包含A、C、G和T中的任何字符,则打印无效的DNA。否则,通过is_gene()函数检查它,如果它满足前面的4部分密码子条件,则打印is potential gene基因不是。在

最后,如果输入的字符串不是有效的DNA或违反了4部分密码子标准,打印出一些诊断信息,详细说明为什么它无效。这些信息可能会描述为什么内容物是无效的DNA,比如哪些碱基是非法的,它们发生在什么序列位置。对于由4部分组成的密码子标准,它可能是一个描述,例如“不以ATG开头”或“长度不是3的倍数”,等等。我将奖励高达1点额外学分的诊断输出,如此详细和良好的格式。在


Tags: 函数字符串程序标准is字母基因代表
1条回答
网友
1楼 · 发布于 2024-04-29 08:13:16

看下面两个函数。字符串可以用作列表或集合。这两个概念对于检查需要填充的条件非常有用

def is_valid_DNA(dna):
    if len(set(dna) - {'A','C','G','T'}) == 0: return True
    return False

def is_gene(dna):
    if dna[0:3] != 'ATG': 
        print('Invalid start')
        return False
    if len(dna) % 3 != 0: 
        print('Invalid length')
        return False
    if dna[-3::] not in ['TAG', 'TAA', 'TGA']:
        print('Invalid end')
        return False
    for i in range(len(dna)-3):
        if dna[i:i+3] in ['TAG', 'TAA', 'TGA']: 
            print('Invalid inner sequence')
            return False
    return True

dna = input()

if not is_valid_DNA(dna): print('Not valid DNA')
else:
    if is_gene(dna): print('Vaid DNA sequence!')
    else: print('Invalid DNA sequence.')

相关问题 更多 >