我希望函数在数字落入设置范围内时返回true,例如[2,9) 我首先想到的是使用这样的for循环
def in_an_interval(number):
for i in range(2, 8):
return print(bool(i==number))
,但它仅对第一个值2返回true。 有什么想法吗?谢谢。
答案 0 :(得分:1)
如果您正在运行Python 3并处理整数,则可以直接在in
对象上使用range
运算符:
def in_an_interval(number):
return number in range(2, 9)
这非常快(简单的数学计算),因为range
对象具有.__contains__
方法。另请注意,range
不包括结尾,即range(2, 8)
在这里实际上是“ 2、3、4、5、6、7”,因此我为您将其更改为range(2, 9)
。
如果您实际上是指“数字”,包括浮点数,那么最好使用比较运算符:
def in_an_interval_float(number):
return 2 <= number < 9
您不可能用range
测试任意浮点数,因为这是这项工作的错误工具。
您当前的代码是错误的,因为它在for
循环的第一次迭代中返回了整个函数:
def in_an_interval(number):
for i in range(2, 8):
return print(bool(i==number))
您可能只想在找到时返回 ,而在找不到时返回False
:
def in_an_interval(number):
for i in range(2, 8):
if i == number:
return True
return False
答案 1 :(得分:0)
您的数字不一定是整数的解决方案:
def in_an_interval(number):
return number >= 2 and number < 9
答案 2 :(得分:0)
对于整数,您几乎不需要自定义函数,内置的range
就足够了:
result = number in range(2, 8)
尽管对于大多数用例来说,这可能是过高的,但是您可以定义一个适用于浮点数的小类:
import math
class Interval:
def __init__(self, start, end):
assert start <= end
self.start = start
self.end = end
def __contains__(self, number): # this dunder method lets you use 'in'
return self.start <= number < self.end
interval = Interval(math.e, 2 * math.pi)
print((2 * math.e) in interval)
print((4 * math.e) in interval)
True
False
答案 3 :(得分:0)
或者这个:
def in_an_interval(number):
return 2<number<9
答案 4 :(得分:-1)
如果您由于某种原因不能使用“ if”,我想您可能会滥用其他条件。
def in_an_interval(number):
while number >=2 and number < 9:
return True
return False