调用同一函数且参数相同,为何两次返回不同结果?
DNA序列STR匹配结果差异的原因分析
这是Python文件对象的读取指针特性导致的:
- 首次调用
dna.read()时,会读取文件全部内容,同时文件内部的读取指针会移动到文件末尾。 - 第二次调用
dna.read()时,指针已处于末尾位置,无法读取到任何内容,返回空字符串""。 - 你的
longest_match函数处理空字符串时,找不到任何STR匹配,因此返回0;而第一次处理完整DNA序列时能正常匹配,返回35。
解决方法
- 提前将文件内容读取到变量中复用:
dna_content = dna.read() longest_match(dna_content, sequences[2]) longest_match(dna_content, sequences[2]) - 每次读取前重置文件指针到开头:
longest_match(dna.read(), sequences[2]) dna.seek(0) # 重置指针到文件起始位置 longest_match(dna.read(), sequences[2])
内容的提问来源于stack exchange,提问作者Mikołaj
相关产品推荐
相关产品推荐

