#python
#python
Вопрос:
У меня есть задание, в котором я должен генерировать случайные последовательности ДНК в файле, я получил его для генерации одной случайной, но у меня возникли проблемы с генерацией более одной. Мне также нужно добавить фрагмент кода, который запрещает случайной генерации иметь более 3 повторяющихся букв подряд, я не уверен, как это сделать. Это то, что у меня есть до сих пор:
import random
def dna(length, sequences):
f = open("dna.txt", 'w')
dna = ["A", "T", "C", "G"]
random_sequence = " "
for i in range(length):
random_sequence =random.choice(dna)
list = []
i = 0
while i < sequences:
x = random_sequence
list.append(x)
i = i i
f.write(random_sequence)
f.close()
print(dna(15, 20))
Комментарии:
1. Как бы вы хотели различать разные последовательности ДНК в файле? Вам нужен только один файл, верно? Кроме того, как бы вы гарантировали, что не более 3 повторяющихся символов, если бы вы делали это на бумаге? Не могли бы вы взять эту логику и перевести ее в код?
2. Решайте эту проблему по частям. Разбейте большие проблемы на более мелкие подзадачи и начните писать небольшие функции, которые обрабатывают меньшие подзадачи. Если подзадача кажется непреодолимой, сократите и эту подзадачу. Таким образом, вы можете собрать решение воедино, не перегружая себя. Разделяй и властвуй!
Ответ №1:
Вот простая реализация:
import random
# Create a single sequence
def dna_seq(length, max_repeat=3):
dna = ["A", "T", "C", "G"]
seq = []
while len(seq) < length:
d = random.choice(dna)
# Make sure no repeats > max_repeat
if seq[-max_repeat:] != [d] * max_repeat:
seq.append(d)
return ''.join(seq)
# Create all the sequences and save
def dna(length, sequences):
with open("dna.txt", 'w') as f:
for _ in range(sequences):
f.write(dna_seq(length) 'n')
dna(15, 20)