2016-02-26 1 views
0

поэтому я создаю функцию, которая принимает строку и количество пробелов, которые мне нужно вставить в нее, и я хочу, чтобы она выводила список строк из всех возможных комбинации, в которые вставлены эти пробелы.Оператор Python if else в рекурсивной функции застревает:

Я написал для этого рекурсивную функцию, но условие остановки, если условие не активируется независимо от того, что я делаю. Даже распечатка выражения сама по себе дает правильный ответ, но условие if не соответствует этому выражению.

Надеюсь, вы, ребята, можете помочь с этим, хотя это, вероятно, очень простая ошибка с моей стороны, я просто не могу найти ее.

Заранее спасибо.

f = open("bonusoutput.txt",'w') 

sequence1 = raw_input("Sequence 1:") 
sequence2 = raw_input("Sequence 2:") 

l1 = int(len(sequence1)) 
l2 = int(len(sequence2)) 

#---------------Function that has problem----------------------------- 

def insertBlanks(numGap,string): 
    if (numGap <= 0): 
     return [string] 
    else: 
     outSeq = [] 

     for cp in range(0,len(string)+1): 
      outSeq.append(string[:cp] + "_" + string[cp:]) 
     for seq in outSeq: 
      outSeq += (insertBlanks(numGap-1,seq)) 

     return outSeq 
#------------------------------------------------------------- 

nGap1 = l2 
nGap2 = l1 

outSeq2 = insertBlanks(nGap1,sequence2) 
f.write(str(outSeq2)) 
print outSeq2 

ответ

1

В то время как перекручивание for seq in outSeq, вы добавления элементов в outSeq. Вы возвращаете список по крайней мере одного элемента каждый раз (базовый регистр возвращает [string], поэтому вы добавите по крайней мере 1 элемент для каждого элемента, который вы посещаете, поэтому у вас есть бесконечный цикл. Подумайте о добавлении вывода в новый список (или используя понимание списка, например [insertBlanks(numGap - 1, seq) for seq in outSeq]

+0

Спасибо, решила проблему. – KaziJehangir

Смежные вопросы