【发布时间】:2018-10-23 19:17:09
【问题描述】:
我有多个范围,比如说 1-1000、1000-2000、2000-3000、3000-4000、4000-5000。我从用户那里得到一个号码,现在我需要找到它在哪个范围内。一种方法是创建多个 if 语句并从那里进行检查,如下所示:
if num>=1 and num < 1000:
print "1"
elif num >=1000 and num < 2000:
print "2"
....
这种方法会创建很多分支。
有没有一种优化的方法可以在没有这么多分支的情况下以最低的复杂度做到这一点?
PS:我只是在 python 中编写了代码,因为它编写起来更短,但这可以是任何语言的情况。范围和输出也可能非常不同。 范围和输出是示例,可以是 1-100、100-1000、1000-1500 等任何值,输出类似于“非常低、低、中”之类的东西。
【问题讨论】:
-
除以 1000 并向上取整?
-
这是这个特定示例的情况。如果我必须提供的输出不是数字而是完全别的东西怎么办?另外,如果范围不等间距怎么办?
-
如果它不是数字或数字的东西,你会如何排列它?
-
@PrateekGupta 如果范围内没有模式,您将需要评估所有可能性。充其量,您可能希望优化开始搜索的方式。
标签: python