有没有办法在Python中指定float变量的边界?例如,当我导入数据时,我想检查它是否在min <= variable <=max
的某个范围内。此外,如果可能的话,如果导入的值超出这些边界(甚至丢失),我想为这个变量分配一个特定的值。
如果变量是浮点数,我也许可以做第一部分。
def var_check(x,lower_bound=3,upper_bound=30):
rng = range(lower_bound,upper_bound+1)
if x not in rng:
return (upper_bound-lower_bound)/2
else:
return x
x = var_check(5)
返回5,而x = var_check(50)
返回13。
关于如何为float变量执行此操作的任何想法?
答案 0 :(得分:5)
您几乎可以完成您在问题中所写的内容:
def var_check(x, lower_bound=3, upper_bound=30):
if lower_bound <= x <= upper_bound:
return x
else:
return (upper_bound - lower_bound) / 2
顺便说一句,你应该对整数做同样的事情,至少在Python 2中。在Python 3中(或在Python 2中使用xrange
),它并不重要。
答案 1 :(得分:0)
解决方案可能如下所示:
def var_check(x, lower_bound=3, upper_bound=30):
if x >= lower_bound and x <= upper_bound:
return x
return (upper_bound-lower_bound)/2
print(var_check(2.5))
print(var_check(15.5))
print(var_check(33.5))
输出
13.5
15.5
13.5
答案 2 :(得分:0)
您可以定义一个类并覆盖其__float__
class MyFloat:
def __init__(self, num, upper=20, lower=10):
self.num = num
self.upper = upper
self.lower = lower
def __float__(self):
if self.lower <= self.num <= self.upper:
return float(self.num)
else:
return (self.upper - self.lower) / 2
然后在导入数据时可以执行
>>> data = [1,2,3,10,11,12,21,22,23]
>>> [float(MyFloat(d)) for d in data]
>>> [5.0, 5.0, 5.0, 10.0, 11.0, 12.0, 5.0, 5.0, 5.0]