Python 如何拆分字符串(输入)和用作字典值的每个部分?
所以我想写一个程序来检查DNA是否发生了变异,我不知道如何解释,所以它是这样说的:Python 如何拆分字符串(输入)和用作字典值的每个部分?,python,python-3.x,Python,Python 3.x,所以我想写一个程序来检查DNA是否发生了变异,我不知道如何解释,所以它是这样说的: 编写一个程序,以确定患者的DNA序列是否发生突变,从而导致氨基酸序列的改变。您的程序应该是这样工作的: 这是我使用的文本文件的一部分: The mappings from codon to amino acid are available in a file, called codon_amino.txt, an excerpt of which is shown here: AAC N AAG K AAT
编写一个程序,以确定患者的DNA序列是否发生突变,从而导致氨基酸序列的改变。您的程序应该是这样工作的: 这是我使用的文本文件的一部分:
The mappings from codon to amino acid are available in a file, called codon_amino.txt, an excerpt of which is shown here:
AAC N
AAG K
AAT N
GCG A
GCT A
GGA G
GGC G
GGG G
GGT G
这是我到目前为止的代码:
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个以上,我想知道如何操作我的代码来处理这些字母?我希望有人能理解这个问题。提前谢谢你 您需要逐个迭代密码子(这里字符串是您的朋友),并检查所有密码子的条件
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
和pat
长度相同,可以被三整除。您可能需要事先插入检查以确保情况属实。类似以下内容:
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."
较短版本:
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.")
这和这个作业一样吗看起来你有你的答案了…你必须把输入字符串分成三位,然后检查所有的位。基本上你需要的是这样工作!除了我尝试最长的例子外,它告诉我患者的氨基酸序列发生了突变。病人的氨基酸序列发生了变异。患者的氨基酸序列没有发生突变。而不仅仅是第一行,我如何改变它?如果使用
print
而不是return
(需要将上述代码包装在函数中),就会发生这种情况。
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.")