微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找到两个连续出现的数字之间的最小值并重复该过程到文件末尾

如何解决找到两个连续出现的数字之间的最小值并重复该过程到文件末尾

下面有一个 0.txt 文件

Report "Curve ABC" for bread and milk on New Mexico City:

Bread and mil price by markets:

milk on market "Onlyfoods"
10
bread on market "Onlyfoods"
23
milk on market "spassus"
30
bread on market "spassus"
4
bread on market "chaim"
56
milk on market "chaim"
96
bread on market "house green"
7
milk on market "house green"
0.8

我想将有数字的第一行与也有数字的连续第二行进行比较,然后确定它们之间的最小值并打印最小值所在的行的编号。我想对某个数字的第三次和第四次出现重复相同的过程,即比较它们并得到它们之间的最小值,依此类推。

例如:需要比较 10 和 23,其最小值为 10,行号为 6;继续,在 20 到 4 之间,最小值为 4,行号为 12。

输出文件应该是这样的:

minimun is between 10 and 23 is 10 in line 6

minimun is between 30 and 4 is 4 in line 12
.
.
...

我提出了一个类似的问题,但得到了很多反对,我不明白为什么这个问题没有用,因为没有人向我展示已经在 stackoverflow 中发布的其他问题。

我可以将这个问题“calculate the difference between number lines file”与这个问题 Find the line with the min and max value and your line number from text file (Get Value Error Float Type) 结合起来,但我一直无法理解如何做到这一点。

编辑更新 1:

替代部分伪代码

使用 UNIX/REGEX/AWK 的起点:基本上我应该: 1 - 提取每个数值实例的行号并垂直保存到列表中的 1.txt 文件; 2 - 提取每个实例的数值并保存在垂直列表中的 2.txt 中,然后应用给定的解决方here 找到每对连续行之间的最小值并保存最小值(按提取的顺序) ) 在文件 3.txt 中; 3 - 所以我应该使用分隔符(例如逗号或 : 3.txt 的每行​​)在每个 1.txt 行的左侧或右侧附加或粘贴,并保存在 4.txt 文件中。>

解决方法

读取文件,创建一个空变量,检查字符串是否为数字,比较并找到最小值。

file = open("0.txt")
m = None
results = []
indexes = []

for i,d in enumerate(file):
    try:
        results.append(float(d))
        indexes.append(i+1)
    except ValueError:
        pass

for r in range(1,len(results),2):
    
    if results[r - 1] < results[r]:
         print("minimum between",results[r-1],"and",results[r],"is","line",indexes[r])

    else:
        print("minimum between",indexes[r])


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。