gpt4 book ai didi

python - 如何对 python 说 (a+b) = (b+a) 和 (a*b) = (b*a)

转载 作者:行者123 更新时间:2023-12-04 15:31:51 30 4
gpt4 key购买 nike

我有一个列表中数字之间所有可能的操作组合:

list = ['2','7','8']

7+8*2
8+7*2
2*8+7
2+8*7
2-8*7
8-2/7
etc

我想知道是否可以说像 ('7*2+8' and '8+7*2' and '2*7+8') 或 (7*8*2 and 2*) 这样的操作8*7和7*2*8)等都是一样的。我想知道如果是相同的操作,如何只进行一次操作。

这是我创建这些不同操作的代码:

Op = ['+','-','*','/']
array = []
for i in Op:
array.append(string1 + i + string2)
return array

最佳答案

如果我很了解你,我想我有一个想法给你。

首先,您需要创建所有可能的数字和表达式排列。你可以这样做:

import itertools
num_list = ['2','7','8']
op = ['+','-','*','/'] * 2 # *2 for the case of same operator twice

num_perm = list(itertools.permutations(num_list))
op_perm = list(itertools.permutations(op, 2)) # We want perm of two operators.

现在,您需要将所有排列合并到一个数学表达式中,这是一个很好的方法:

list_of_experssions = list()
for num in num_perm :
for op in op_perm:
list_of_experssions.append(num[0] + op[0] + num[1] + op[1] +num[2])

最后一步是检查两个表达式的结果是否相等(使用 eval 函数)但表达式本身不同:

for exp1 in list_of_experssions:
for exp2 in list_of_experssions:
if eval(exp1) == eval(exp2) and exp1 != exp2:
print(exp1, exp2)

在您的案例中,我们得到了 336 个数学表达式和 2560 对等式。

关于python - 如何对 python 说 (a+b) = (b+a) 和 (a*b) = (b*a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61129467/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com