2024-04-27 04:11:10 发布
网友
对于一个简单的任务来说,您的代码似乎过于复杂。您不需要使用四个变量-tmp\u l、tmp\u h、previous\u low和previous\u high。您也不需要维护重叠间隔的当前列表。你所需要做的就是保持重叠间隔的高低。你知道吗
但是,代码的问题是每次迭代都调用write_line。相反,您要做的是,仅当当前低值大于上一个高值时才调用write_line,这意味着上一组重叠间隔已经结束,并且在循环结束时也是如此。你知道吗
write_line
以下代码将起作用:
for line in inf.splitlines(): cnt += 1 line = line.split(' ') current_low = int(line[1]) current_high = int(line[2]) if current_low <= previous_high: previous_high = current_high else: if previous_high > 0: write_line(line[0], previous_low, previous_high, cnt, outf) previous_low = current_low previous_high = current_high if previous_high > 0: write_line(line[0], previous_low, previous_high, cnt, outf)
需要检查if previous_high > 0以不输出previous\u low和previous\u high的默认值-0,0。for循环末尾的额外write行需要输出最后一组重叠间隔。你知道吗
if previous_high > 0
当有两个以上的重叠间隔时,这个代码也可以工作。你知道吗
对于一个简单的任务来说,您的代码似乎过于复杂。您不需要使用四个变量-tmp\u l、tmp\u h、previous\u low和previous\u high。您也不需要维护重叠间隔的当前列表。你所需要做的就是保持重叠间隔的高低。你知道吗
但是,代码的问题是每次迭代都调用
write_line
。相反,您要做的是,仅当当前低值大于上一个高值时才调用write_line
,这意味着上一组重叠间隔已经结束,并且在循环结束时也是如此。你知道吗以下代码将起作用:
需要检查
if previous_high > 0
以不输出previous\u low和previous\u high的默认值-0,0。for循环末尾的额外write行需要输出最后一组重叠间隔。你知道吗当有两个以上的重叠间隔时,这个代码也可以工作。你知道吗
相关问题 更多 >
编程相关推荐