我正在尝试修复下面的代码。
from pylab import *
protein = ''
amino_acids = ['P', 'G', 'L', 'A']
while ________:
protein += choice(amino_acids)
if len(protein) == 1000:
print(protein)
我想得到的结果是长度为1000的随机蛋白质,其包含四种给定的氨基酸(P,G,L和A)。有什么问题?
答案 0 :(得分:4)
一种可能的解决方案(其中包括更多的pythonic)将是
from pylab import *
protein = ''
amino_acids = ['P', 'G', 'L', 'A']
while len(protein) <= 1000:
protein = protein + choice(amino_acids)
print(protein)
在这里,您创建一个空字符串protein
。 while
循环开始并附加amino_acids
中的随机元素,直到达到字符串长度1000。
单行将是
proteins = ''.join([choice(amino_acids) for x in range(1000)])
此处,所谓的list comprehension用于从amino_acids
生成1000个选项。 1000个元素存储为列表。应用join
会将元素归结为单个字符串。
请注意,''
表示我们不希望在氨基酸之间使用分隔符。使用例如'-'
会导致类似
L-A-P-G-L-...
答案 1 :(得分:0)
另一种方法是生成一个随机数列表,然后使用for循环遍历随机数列表并附加到蛋白质字符串上。
import random
rand_num=[]
protein=''
amino=['P', 'G', 'L', 'A']
for i in range(1000):
x=ranom.randint(0,(len(amino)-1))
rand_num.append(x)
for index in rand_num:
protein+=amino[index]
答案 2 :(得分:0)
为什么不呢?
import random
amino_acids = ['P', 'G', 'L', 'A']
N = 10 # should be 1000 in your case
protein = ''.join( aa for aa in random.choices(amino_acids, k=N) )
如上定义,蛋白质可以是“ PLLGAPAPGA”。