【发布时间】:2022-10-15 02:45:10
【问题描述】:
给定代表连续间隔的两个范围的最小值和最大值,我想知道第二个范围是否在第一个范围内。另请注意,此问题与 Python 的 range 函数无关。
请注意,我没有每个范围的开始和结束。我已经从上游收到了最小值和最大值。存在一些类似的问题,但它们不使用 min 和 max,并且不区分非严格与严格。我想要最简单的逻辑。尽管任何使用开始和结束的先前答案也可以工作,但它们会使用更复杂的逻辑,因此是不可取的。
举一个自然的例子,当一个人站立时,腰到膝盖的范围包含在从头到脚的较大范围内。但是,头到腰的范围不包含在脖子到膝盖的范围内。
更正式地说,这可以根据以下测试进行非严格或严格检查:
非严格:
def is_subrange(min1, max1, min2, max2):
... # To be implemented.
assert is_subrange(2, 9, 5, 7) == True
assert is_subrange(2, 9, 1, 3) == False
assert is_subrange(2, 9, 7, 11) == False
assert is_subrange(2, 9, 1, 11) == False
assert is_subrange(2, 9, 6, 9) == True # is not strict
assert is_subrange(2, 9, 2, 4) == True # is not strict
assert is_subrange(2, 9, 2, 9) == True # is not strict
严格的:
def is_strict_subrange(min1, max1, min2, max2):
... # To be implemented.
assert is_strict_subrange(2, 9, 5, 7) == True # is as is_subrange
assert is_strict_subrange(2, 9, 1, 3) == False # is as is_subrange
assert is_strict_subrange(2, 9, 7, 11) == False # is as is_subrange
assert is_strict_subrange(2, 9, 1, 11) == False # is as is_subrange
assert is_strict_subrange(2, 9, 6, 9) == False # is not as is_subrange
assert is_strict_subrange(2, 9, 2, 4) == False # is not as is_subrange
assert is_strict_subrange(2, 9, 2, 9) == False # is not as is_subrange
这些不起作用:
def is_subrange(min1, max1, min2, max2):
return min1 <= min2 and max1 <= max2
def is_strict_subrange(min1, max1, min2, max2):
return min1 < min2 and max1 < max2
【问题讨论】:
-
开始/结束和最小/最大有什么区别?
-
我不明白。
min和start是同一事物的两个不同词,不是吗? -
我认为我们只是有语言问题。你能举一个他们不同的例子吗?
-
开始/结束和最小/最大值之间存在差异的唯一情况是,如果您的范围内的步数不是 1。但是您的问题中没有包含这些步骤,所以我假设您的意思是 step=1。
-
此外,python
range()对象不包括最终值。但这只是减1,不会影响子范围算法。而且您似乎不是在询问范围对象,您只是在提供端点。
标签: python range intervals ohlc