python写一个程序解决 52张扑克中张扑克中((除去大小王 除去大小王),任抽4 张扑克,,可运用加减乘除,每个数只能用一次,,如何让最终的数为24
时间: 2024-03-26 22:39:33 浏览: 33
下面是一个使用 Python 语言编写的程序,可以解决题目中的问题:
```python
import itertools
def calculate(a, b, c, d):
for ops in itertools.product('+-*/', repeat=3):
exp = '{}{}{}{}{}{}{}'.format(a, ops[0], b, ops[1], c, ops[2], d)
try:
if abs(eval(exp) - 24) < 1e-6:
return exp
except ZeroDivisionError:
pass
return None
def find_solution(cards):
for a, b, c, d in itertools.permutations(cards):
exp = calculate(a, b, c, d)
if exp is not None:
return exp
return None
cards = [1, 2, 3, 4] # 替换为抽到的扑克牌的数字
solution = find_solution(cards)
if solution is not None:
print('找到解法:', solution)
else:
print('无解')
```
这个程序的思路与前面所述的方法类似,不同之处在于它使用了 itertools 模块来生成所有可能的排列和运算符组合。具体地,程序先将 4 张扑克牌的数字存储在一个列表中,然后使用 itertools.permutations 函数生成所有可能的数字排列,对于每个排列,再使用 calculate 函数来计算所有可能的表达式,并检查它们是否等于 24。如果找到了一个解法,程序就返回该表达式。如果所有排列和表达式都计算完毕,仍然没有找到解法,那么程序就返回无解。