如何解决有没有办法排列和/或重复数学运算 (* / - +)? Python
我想知道是否有一种方法可以排列数学运算,因为您无法将它们放在列表中(据我所知)。我想解决这个问题
NUMBERMANIA:使用数字 [1,2,9,59,974] 和基本算术运算(+、-、*、/)计算数字 1042。每个号码只能使用一次。
使用代码,我的想法是遍历所有可能的数字排列,这可以通过 itertools
实现,然后将它们放入执行此操作的函数中。
[数字1] [数学运算] [数字2] [数学运算] ... [数学运算] [数字6] 例如 1 * 2 / 9 + 2 / 59 * 974
但数字不必按此顺序排列,数学运算也不必按该顺序或出现的特定频率。
有没有办法用数学运算来做这样的事情?
解决方法
operator 有这样的算术函数可供使用:
<VirtualHost domain2.app.com:443>
ProxyPass / https://ip-or-domain.com:444/
</VirtualHost>
这意味着您可以创建它们的列表:
import operator as op
op.add(1,2) # returns 3
然后,可以通过以下方式进行排列:How to generate all permutations of a list?
然后迭代排列,依次应用它们。
,一种干净的方法可能是将操作字符映射到二进制 lambda 函数:
operations = {
'+': lambda a,b: a + b,'*': lambda a,b: a * b,...
}
用法:
print(operations['+'](2,59))
print(operations['*'](2,2))
输出:
61
2
对于更端到端的解决方案,您可以考虑一个函数,该函数接受操作数和相应的二元运算符的任意列表,并将操作放在它们之间,然后评估结果。
def substituteAndEval(operands,operations):
return eval(" {} ".join(str(x) for x in operands).format(*operations))
用法:
numbers = [1,2,9,59,974]
operations = ('+','-','*','/','+')
print(substituteAndEval(numbers[:5],operations))
输出:
2.694915254237288
剩下的工作就是生成和传递随机操作数和操作。
请注意,Python 3+ eval()
从整数除法返回浮点数。您可以用 /
替换除法符号//
以强制除法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。