import sys
def main():
global dna
dna = {}
chromo = []
position = []
parseFile(sys.argv[1], dna, chromo, position)
def parseFile(raw_file, dna, chromo, position):
raw_filename = raw_file
raw_file = open(raw_filename, 'r')
raw_lines = raw_file.readlines()
raw_file.close()
for line in raw_lines:
dna_info = line.split('\t') # splitting by tab
dna_info[-1] = dna_info[-1][:-1] # getting rid of new line
rsid = dna_info[0]
genotype = dna_info[3]
dna[rsid] = dna_info[3]
checkType2Diabetes(dna_info, rsid, genotype)
**def checkType2Diabetes(dna_info, rsid, genotype):
for item in rsid:
if "rs7754840" in rsid:
print ("Key Found")
break
else:
print("No Key Found")**
包括整个代码,def checkType2Diabetes中的问题(等等…) 我希望代码只打印一次,但是对于它检查的每个键,如果找不到键,它就会打印。当我运行一个充满rsid的文件时,输出是:
No Key Found
No Key Found
No Key Found
No Key Found
(对txt中的所有行继续)
但如果找不到,我只想
No Key Found
我们需要一个数据和功能的清晰描述。我认为你的问题是对迭代的滥用,但我不能确定。你知道吗
看起来rsid是每个记录的一个字段,包含一个ID字符串。但是,您的最后一个for循环假定它是要分解的。例如,如果rsid在输入行中具有值“rs7754840”,则For循环将遍历单个字符:“r”、“s”、“7”、“7”等
在这种情况下,循环底部需要的是这样的模式:
请注意一点:这里的else位于for循环上,而不是if上。你的逻辑问题是,如果这个ID在某个地方的记录里,你一找到它就知道了。如果不是,你不知道,直到你退出循环。你试着一次完成这一切,这就是为什么你得到“找不到钥匙”反复打印。你知道吗
这能让你动起来吗?你知道吗
相关问题 更多 >
编程相关推荐