所以我正在创建一个函数,它需要一个字符串和我需要在其中插入的间隙数量,我希望它输出插入这些间隙的所有可能组合的字符串列表。
我为此编写了一个递归函数,但无论我做什么,停止if条件都没有被激活。即使打印表达式本身也会给出正确答案,但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
答案 0 :(得分:1)
在循环for seq in outSeq
时,您要将项目附加到outSeq
。您每次都返回至少一个项目的列表(基本案例返回[string]
因此您将为您访问的每个项目添加至少1个项目,因此您有一个无限循环。请考虑将您的输出添加到新项目列表(或使用列表推导,如[insertBlanks(numGap - 1, seq) for seq in outSeq]