如何分割字符串(输入)和用作字典值的每个部分?

2024-09-27 07:26:07 发布

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

所以我想写一个程序来检查DNA是否发生了突变,我不太清楚如何解释这一点,所以它是这样写的:
编写一个程序来确定患者的DNA序列是否发生突变,从而导致氨基酸序列的改变。你的程序应该这样工作:

Enter original DNA: AAT
Enter patient DNA: AAC
The patient's amino acid sequence is not mutated.

Enter original DNA: AATTGTTCTTCT
Enter patient DNA: AACTGCAGCTCA
The patient's amino acid sequence is not mutated.

Enter original DNA: TGTCATGCCTTATTAGAAAACGGTGAG
Enter patient DNA: TGTCATGTCTTATTAGAAAAAGGTGAG
The patient's amino acid sequence is mutated.

这是我使用的文本文件的一部分:

^{pr2}$

到目前为止我的代码是:

n = {}
for line in open('codons.txt'):
    codon, codons = line.split()
    n[codon] = codons


org = input('Enter original DNA: ')
pat = input('Enter patient DNA: ')

if n[org] == n[pat]:
    print("The patient's amino acid sequence is not mutated.")
else:
    print("The patient's amino acid sequence is mutated.")

所以我的代码在第一个例子中可以正常工作,其中只有3个字母被使用,但是接下来的两个字母超过了3个,我想知道如何操作我的代码来处理这个问题?我希望有人能理解这个问题。提前谢谢你!在


Tags: the代码程序isnot序列dnasequence
3条回答

像这样:

for i in range(0, len(org), 3):
    if n[org[i:i + 3]] != n[pat[i:i + 3]]:
        return "The patient's amino acid sequence is mutated."

return "The patient's amino acid sequence is not mutated."

您需要逐个迭代密码子(字符串片段在这里是您的朋友),并检查所有密码子的条件。在

mutated = False           # First, assume no mutation is present
for index in range(0, len(org), 3):
    if n[org[index:index+3]] != n[pat[index:index+3]]:
        mutated = True    # Set mutation flag to True
        break             # Abort the loop - no point in checking any further
if mutated:
    print("The patient's amino acid sequence is mutated.")
else:
    print("The patient's amino acid sequence is not mutated.")

这假设org和{}的长度相同,可以被3整除。您可能需要事先插入一个检查,以确保情况确实如此。在

较短版本:

n = {}
for line in open('codons.txt'):
    codon, codons = line.split()
    n[codon] = codons


org = input('Enter original DNA: ')
pat = input('Enter patient DNA: ')

if len(org) + len(pat) % 3 or len(org) != len(pat):
    raise ValueError

if any((n[org[i: i+3]] != n[pat[i: i+3]] for i in xrange(len(org)))):
    print("The patient's amino acid sequence is mutated.")
else:
    print("The patient's amino acid sequence is not mutated.")

相关问题 更多 >

    热门问题