我目前正在尝试编写一个基本的Python字典,在其中输入一个RNA代码,它会给出相应的氨基酸。一切似乎都很好,直到我输入“UCU”、“UCC”、“UCA”、“UCG”。为什么它不起作用?有人能找出问题吗
以下是实际代码:
while True:
n = 3
xdict = {
"Phenylalanine": ["UUU", "UUC"],
"Leucine": ["UUA", "CUU", "CUC", "CUA", "CUG", "UUG"],
"Isoleucine": ["AUU", "AUC", "AUA"],
"Methionine": ["AUG"],
"Valine": ["GUU", "GUC", "GUA", "GUG"],
"Serine": ["UCU", "UCC", "UCA", "UCG"],
"Proline": ["CCU", "CCC", "CCA", "CCG"],
"Threonine": ["ACU", "ACC", "ACA", "ACG"],
"Alanine": ["GCU", "GCC", "GCA", "GCG"],
"Tyrosine": ["UAU", "UAC"],
"Histidine": ["CAU", "CAC"],
"Glutamine": ["CAA", "CAG"],
"Asparagine": ["AAU", "AAC"],
"Lysine": ["AAA", "AAG"],
"Asparatic Acid": ["GAU", "GAC"],
"Glutamic Acid": ["GAA", "GAG"],
"Cysteine": ["UGU", "UGC"],
"Trytophan": ["UGG"],
"Arginine": ["CGU", "CGC", "CGA", "CGG", "AGG", "AGA"],
"Serine": ["AGU", "AGC"],
"Glycine": ["GGU", "GGC", "GGA", "GGG"]}
lookup_dict = {k: key for key, values in xdict.items() for k in values}
a = input("Please enter your RNA sequence: ")
a = a.upper()
print("The messenger RNA strand is:", a)
b = len(a)
val = ''
if b % 3 == 0:
for k in (a[i:i + n] for i in range(0, len(a), n)):
val += lookup_dict[k] + ' '
val += " "
elif b % 3 != 0:
print("Try again.", end = "")
val = val.replace(" ", "")
print("Your amino acids chain is:", val)
以下是我输入CCCCGGUCA后的输出
Please enter your RNA sequence: cccccgggguca
The messenger RNA strand is: CCCCCGGGGUCA
Traceback (most recent call last):
File "program.py", line 33, in <module>
val += lookup_dict[k] + ' '
KeyError: 'UCA'
谢谢大家,我希望其他人也能从我的错误中吸取教训
您可以将代码简化为以下内容
然后它将处理没有氨基酸包含rna的情况
正如@Carcigenicate所指出的,您还有一个可以删除的
"Serine"
键相关问题 更多 >
编程相关推荐