在一系列数字之间找到一个数字

2024-04-18 07:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件1的范围是这样的

10 20

50 60

70 100

150 170

....

....

文件2

15

55

80

160

....

....

我想读取文件1中的范围,然后在文件2中查找,得到它们之间的值

最终输出:

15 is the value between 10 and 20

55 is the value between 50 and 60

....

....


Tags: and文件theisvaluebetween
3条回答

如果您想对结果执行其他操作而不是打印出来,可以创建一个字典,将范围(从文件1)映射到这些范围内的数字(从文件2)

ranges = []
with open('file1') as f:
    for line in f:
        ranges.append(line.strip().split(' '))
ranges = [tuple(int(_) for _ in r) for r in ranges]
in_range = {range_: set() for range_ in ranges}
with open('file2') as f:
    for line in f:
        num = int(line.strip())
        for range_ in ranges:
            if range_[0] < num < range_[1] # Between low and high
                in_range.add(num)
# print in_range

在Python中,下面是如何

打开文件:

with open('thefile.txt') as f:

迭代文件的行:

^{pr2}$

在行尾去掉多余的空格:

line = line.rstrip()

围绕第一块空白将每行拆分为两行:

left, right = line.split(None, 1)

将字符串转换为数字:

low = int(low)

在另外两个号码中间取一个号码:

mid = (low + high) // 2

或者,要检查一个数字是否在另外两个数字之间:

if low <= mid <= high:

打印格式化结果:

print('{} is the value between {} and {}'.format(mid, low, high))

当然,你也需要一些错误处理,你必须把所有的事情放在一起,但这应该足够你自己完成它。在

这应该可以做到:

with open('file1.txt') as file1, open('file2.txt') as file2:
    ranges = [line.split(' ') for line in file1 if line.rstrip()]
    values = filter(lambda line: bool(line.rstrip()), file2.readlines())
for value, _range in zip(values, ranges):
    print("{} is {}the value between {} and {}".format(value, "not " if int(_range[0]) <= float(value) <= float(_range[1]) else "", _range[0], _range[1])

相关问题 更多 >