Python 如何测试值是否可以是函数的输出?
我制作了一个需要2个参数的函数Python 如何测试值是否可以是函数的输出?,python,function,range,output,Python,Function,Range,Output,我制作了一个需要2个参数的函数 def R(a,b) 它打印a、b范围内函数的和 我试图确定某个数字是否可能是任何输入范围的总和。我该怎么做呢 换句话说,x是否会成为我创建的函数的输出?我该如何测试它呢?我正在尝试确定某个数字是否可能是任何输入范围的总和 根据我对你问题的理解 if certain_number == R(your_start_range, your_end_range): #do something 如果我对R的假设不正确,请告诉我 def R(a,b): re
def R(a,b)
它打印a、b范围内函数的和
我试图确定某个数字是否可能是任何输入范围的总和。我该怎么做呢
换句话说,x是否会成为我创建的函数的输出?我该如何测试它呢?我正在尝试确定某个数字是否可能是任何输入范围的总和
根据我对你问题的理解
if certain_number == R(your_start_range, your_end_range):
#do something
如果我对R的假设不正确,请告诉我
def R(a,b):
return sum(range(a,b))
假设你想知道x是否可以从R返回,并且在所有情况下a都小于b
像这样的事情应该可以做到:
a=0
b=0
result=0
while result < x:
if a-1==b or a==b:
a += 1
b = 0
else:
b+=1
result = R(a,b)
if result == x:
print('we have a winner')
break
其工作原理如下:
如果结果大于x,则循环存在,因为无穷大是一个不好的位置
我们需要通过所有组合a,b,a>b。这就是1,0,2,0,2,1,3,0,3,1,3,2,等等。因此,if…elif。。。东西
我希望剩下的都是直截了当的
我制作了一个需要2个参数的函数
def R(a,b)
def Ra,b
它打印a、b范围内函数的和
我不确定你说的是什么函数。你是说你只是把这个范围内的数字加起来?像这样
def R(a, b):
print sum(range(a, b))
我试图确定某个数字是否可能是任何输入范围的总和。我该怎么做呢
所以你要确定,对于给定的整数n,是否有a和b使得Ra,b==n,对吗
好的,是的,答案总是否定的。如前所述,R只打印总和,这意味着返回值为无。但我们假设您已修复:
def R(a, b):
return sum(range(a, b))
那么现在,你如何解决这个问题呢
既然你在问一个编程问题,我想你在寻找一种方法来彻底搜索给定的范围。您知道不需要搜索a>=b或b>=n的范围,因此答案是:
any(R(a, b) == n for b in range(n) for a in range(b))
当然,这需要*2的时间,但是如果不投入一些数学知识来提出更好的算法,就无法加快速度。完成后,如果您不知道如何在Python中实现该算法,请再次询问。函数的总和->??为什么?函数是a、a和b离散值范围内回文的总和?进行详尽的搜索是否合理?若是这样的话,它只是anyRa,b=输入范围中a的certainNumber,输入范围中b的certainNumber,这是的一个变体吗?你们能包括R的代码吗?这样人们就可以知道你在问什么,而不必猜测b@abarnert:我在R函数中输入了一个错误。。。现在有意义了吗?我意识到我对提问者所说的话的假设可能是错误的。如果Ra,b==Rb,a,那么两种组合的测试都没有意义,是吗?因此,使一侧显式始终变小会使算法运行得更快。第一次出错的事实,我们都没有注意到,完美地说明了我的观点:编写显式循环而不是理解会使代码更难编写、更难阅读,更容易出错。