Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 给定一个整数,在数字之间加上运算符,得到n,并返回正确答案的列表_Python - Fatal编程技术网

Python 给定一个整数,在数字之间加上运算符,得到n,并返回正确答案的列表

Python 给定一个整数,在数字之间加上运算符,得到n,并返回正确答案的列表,python,Python,以下是我试图解决的问题: 给定一个int,ops,n,创建一个函数int,ops,n和int位数之间的槽运算符,以创建计算结果为n的方程。返回所有可能答案的列表。不允许导入函数 比如说, function(111111, '+-%*', 11) => [1*1+11/1-1 = 11, 1*1/1-1+11 =11, ...] 该问题建议使用交织STR1、str2,其中交织'abcdef'、'ab'='aabbcdef'和产品STR1,n其中产品'ab',3=['aaa'、'aab'、'

以下是我试图解决的问题:

给定一个int,ops,n,创建一个函数int,ops,n和int位数之间的槽运算符,以创建计算结果为n的方程。返回所有可能答案的列表。不允许导入函数

比如说,

function(111111, '+-%*', 11) => [1*1+11/1-1 = 11, 1*1/1-1+11 =11, ...]
该问题建议使用交织STR1、str2,其中交织'abcdef'、'ab'='aabbcdef'和产品STR1,n其中产品'ab',3=['aaa'、'aab'、'abb'、'bbb'、'aba'、'baa'、'bba']

我已经写了交错的str1,str2,它是

def交织STR1、str2: lsta,lstb,result=liststr1,liststr2, 而lsta和lstb: 结果+=lsta.pop0 结果+=lstb.pop0 如果lsta: 对于lsta中的i: 结果+=i 其他: 对于lstb中的i: 结果+=i 返回结果 但是,我不知道如何对产品功能进行编码。我假设它与递归有关,所以我尝试为每个产品添加'a'和'b'

def产品STR1,n: 如果n==1: 返回[] 其他: 返回[productstr1,n-1]+[str1[0]] 请帮助我理解如何解决这个问题。不仅是产品本身

通用解决方案 假设您的交错实现是正确的,您可以将其与产品一起使用。请参见下面我建议的实现,以解决以下问题:

def fi,ops,n: int_str=stri retval=[] 对于范围1中的序列,列宁街: 对于r_产品操作中的操作顺序,顺序: eq=交错输入,操作顺序 如果evaleq==n: 返回附录 返回返回 其思想是以不同的顺序将字符串的数字与运算符交错。基本上,我是用所有可能的长度序列seq_len(从1到max)来实现的,这将是数字的数量-1参见下面的假设!。然后使用eval对inteleave返回的表达式求值特定的运算符序列,并将结果与所需的数字n进行比较。如果表达式的计算结果为n,则将其附加到返回数组retval初始为空。计算所有可能运算符序列的所有表达式后,请参见假设!返回数组

假设 不清楚是否可以多次使用同一个运算符,或者是否允许省略某些运算符。我假设您可以多次使用同一个运算符,并且允许您省略使用运算符。因此,按照您的问题建议使用了r_prod。在这种限制的情况下,您将希望使用可能不同长度的操作符组的置换

其次,我假设您对交织函数的实现是正确的。例如,不清楚interleave112、*是应该同时返回1*12和11*2,还是像您的实现那样只返回1*12。如果两者都应该返回,那么您还应该迭代使用提供的数字交错相同顺序的运算符序列的可能方式。我忽略了这一点,因为我看到您的函数总是返回单个字符串

产品实施 如果查看,可以看到函数itertools.product的等效代码。使用它,您可以:

def product*参数,重复=1: pools=[参数中池的tuplepool]*重复 结果=[]] 对于池中的池: 结果=[x+[y]表示池中的x,结果为池中的y] 对于产品导入结果: 屈服圆棒 a=[.joinx表示产品'ab'中的x,重复=3] 版画 它打印出['aaa','aab','aba','abb','baa','bab','bba','bbb']-我猜你想要的是什么

更具体的假设iterable是字符串,效率较低,但希望更容易理解的解决方案是:

def prodstring,r: 如果r<1: 一无所获 retval=liststring 对于ranger-1中的i: 温度=[] 对于retval中的l: 对于字符串中的c: 附件温度+c retval=temp 返回返回 这个想法很简单。第二个参数r给出了要生成的字符串的长度。字符串中的字符为您提供了构建字符串的元素。因此,首先生成一个长度为1的字符串,该字符串以每个可能的字符开头。然后,通过将旧字符串与所有可能的字符连接起来,为每个字符串生成新字符串

例如,给定一个字符池abc,您将首先生成字符串a、b和c。然后将字符串a替换为字符串aa、ab和ac。对于b和c也是如此。将此过程重复n次,以从池abc中获取通过绘制替换生成的长度为r的所有可能字符串

我认为您最好尝试递归地实现prod函数。你可以在下面看到我丑陋的解决方案,但我建议你不要再读这篇文章了 现在试着不看我的建议就去做

下面的扰流板

def r_产品串,r: 如果r==1: 返回列表字符串 其他: 返回[c+s代表字符串中的c代表r_prodstring中的s,r-1]
你要找的是电源;奇怪的是,这个问题称之为产品。我对你的问题有点困惑:你只是想写产品,还是在问如何解决整个算法?这些问题很明显。谢谢仅供参考,问题类似于。产品是否真的返回金额?返回['aaa'、'aab'、…]似乎更合理,也就是所有可能的三胞胎列表都是用a和b@ggorlen嗨,我在问如何解决整个算法。只是这个问题给了这些功能以帮助,但我看不出与之有任何关系。@Demi Lune抱歉,我已经更正了它。非常感谢。然而,我仍然没有得到下面的递归,但我将继续努力找出答案。