配置变量range
可能如下所示:
range="5"
或:
range="1-5"
现在给出一个给定的参数:
level=3
如何检查level
是否在range
内或不在?
我知道我可以拆分range
然后逐一比较它们,我只是想知道是否有更高效的pythonic方式。
目前的方法:
def check_range(rng,level):
if not rng:
return true;
levels=rng.split('-')
if len(levels) > 1:
return level >= int(levels[0]) and level <=int(levels[1])
else:
return level==int(levels[0])
print check_range("0-10",4)
print check_range("5-10",4)
print check_range("5",4)
print check_range("4",4)
顺便说一下,每个请求都会调用一次此方法。
答案 0 :(得分:2)
这是一种万无一失的做法,尽管效率不高:
from re import findall as f
r="5"
level=3
a = f(r'(\d+)?-?(\d+)', r)[0]
try:
print int(a[0]) <= level <= int(a[1])
except (IndexError, ValueError):
print 0 <= level <= int(a[1])
答案 1 :(得分:2)
如果是python,就像你说的那样,那个范围值需要拆分:
功能定义:
def check(range, level):
points = range.split('-');
if len( points ) == 1 :
//only 1 item in your range
if level == int( points[0] ) :
return true;
if len( points ) == 2 :
if level >= int( points[0]) && level <=int(points[1]):
return true;
return false;
调用您的函数:
level = 3;
range="5-1"
check( range, level );