Python 如何找到数字所属的范围

Python 如何找到数字所属的范围,python,Python,对不起,标题不好,我真的不知道怎么形容它 所以我有一个范围,比如说122-983。 我有一个像443这样的数字x 我可以把范围分成七分之一,这样 983-122=861 861/7=123 所以我有 122-245 245-368 368-491 491-614 614-737 737-860 860-983 现在我想找出我的数字x在被除数范围内的位置,并返回该范围的索引 在本例中,443介于368-491之间,因此它将返回3,因为它在范围的3/7之内 现在我可以使用很多if语句来实现这一点,但

对不起,标题不好,我真的不知道怎么形容它

所以我有一个范围,比如说122-983。 我有一个像443这样的数字x

我可以把范围分成七分之一,这样

983-122=861

861/7=123

所以我有

122-245

245-368

368-491

491-614

614-737

737-860

860-983

现在我想找出我的数字x在被除数范围内的位置,并返回该范围的索引

在本例中,443介于368-491之间,因此它将返回3,因为它在范围的3/7之内

现在我可以使用很多if语句来实现这一点,但是有更好的方法吗


如果x<2*(顶部-底部)/7
返回1
elif x<3*(顶部-底部)/7:
返回2
elif x<4*(顶部-底部)/7:
返回3
...

我认为最好使用
range()

def sol(左、右、间隙、数量):
如果numr:
返回“超出范围”
步骤=(r-l)//间隙
rl=无
rr=无
对于范围内的i(l,r+1,步长):
如果i num和rl!=无:
rr=i
打破
返回(右后、右后)
l=122
r=983
差距=7
num=443
打印(sol(左、右、间隙、数量))

说明:每个范围的长度=123,范围数组=数字列表,其中包含您希望的范围容器的下限,如[122245368….]。enumerate()帮助访问带有索引值的列表元素。如果值(下限)大于该数字,则返回该箱子的索引。取值范围(8)是为了将983也包含在内

您可以使用循环,我认为可以使用元组列表来定义您的范围

ranges = [(122, 245), (245, 638), ...]
number = 500  #or whatever your number is
range_index = 0

while range_index < len(ranges):

    # If it's the first iteration and the number is below the range
    if range_index == 0 and number < ranges[range_index][0]:
        range_index = None
        break

    # If it's the last iteration and the number is above the range
    elif range_index == len(ranges) - 1 and number > ranges[range_index][1]:
        range_index = None
        break

    elif number < ranges[range_index][1]:
        break

    range_index += 1

print(range_index)  # if it's None it's because the number is not in any of the ranges

ranges=[(122245),(245638),…]
数字=500#或任何你的数字
范围指数=0
当范围指数ranges[range_index][1]:
范围指数=无
打破
elif编号<范围[范围索引][1]:
打破
范围指数+=1
打印(范围索引)#如果没有,那是因为数字不在任何范围内

也许我误解了这个问题,但这不是你所需要的全部吗

def get_range(x, lower_bound, upper_bound, n):
    return 1 + (x - lower_bound) // ((upper_bound - lower_bound) // n) \
        if upper_bound >= x >= lower_bound else 0


print(get_range(443, 122, 983, 7))
输出:

3

您可以改变其中的所有内容,您正在测试的编号
x
,范围
下限
上限
,以及范围
n

443//123
-
3
中的箱子数量,指示其第三个索引(索引从1开始)也就是说,
368-491
保证x将在范围内尝试此
((数字-底部-1)*7//(顶部-底部))+1
。我以为245美元你想要的是1美元而不是2美元。如果我假设错了,告诉我。@EmilMGeorge谢谢你,我知道有一个简单的计算,我只是因为某种原因想不起来。是的,对于245,我想要1而不是2(以及其他边界编号)。
def get_range(x, lower_bound, upper_bound, n):
    return 1 + (x - lower_bound) // ((upper_bound - lower_bound) // n) \
        if upper_bound >= x >= lower_bound else 0


print(get_range(443, 122, 983, 7))
3