Python 3.4 从字符串生成子串集的程序没有给出正确的输出

Python 3.4 program generating substrings set from string does not gives correct output

我的代码给出一个字符串的所有 k 个长子字符串(即字符串 [0:k]、字符串[1:k+1] 等)在小测试字符串上工作正常,但在长(100 和更多) ) 输出中缺少一个字符串。可能是什么问题以及如何解决?这是一个代码(当然,Python):

def possible_kmers (a, b):
    kmers = []
    i=0
    while i<len(a)-b+1:
        kmer = a[i:i+b]
        kmers.append(kmer)
        i=i+1
    file = open("result.txt", "w")
    kmers.sort()
    for item in kmers:
        file.write(item+'\n')
    file.close()

我不确定为什么您的代码会在大输入上丢失一个字符串,但这段代码更简洁、更封装,并且可以工作:

def possible_kmers(s, sublen):
    for i in range(len(s) - sublen + 1):
        yield s[i:i+sublen]


kmers = sorted(possible_kmers(SOME_S, SOME_SUBLEN))

with open('result.txt', 'w') as outfile:
    for kmer in kmers:
        file.write('{}\n'.format(kmer)