# python之24点牌游戏

-*- coding: UTF-8 -*-
from itertools import combinations
from itertools import permutations

str1 = "1 2 J A"
card = str1.split(" ")
re_ref = ['J', 'Q', 'K', 'A']
i_ref = [11, 12, 13, 1]

def getYS():
result = []
list1 = ['+', '-', '*', '/'] * 3
for p in combinations(list1, 3):
result.append(p)
return list(set(result))
print(len(getYS()))

def getCard(card):
result = []
for p in permutations(card, 4):
list1 = []
list1.append(p[0])
list1.append(p[1])
list1.append(p[2])
list1.append(p[3])
result.append(list1)
return result

print(len(getCard(card)))

def getExpress1(card):
result = []
for i in getYS():
tmp = card[:]
tmp.insert(1, i[0])
tmp.insert(3, i[1])
tmp.insert(5, i[2])
result.append(tmp)
return result

print(getExpress(card))

#添加括号
def getExpress2(list1):
#只有一个*或者/
if list1.count("*") + list1.count("/") == 1:
if list1[3] == "*" or list1[3] == "/":
list1.insert(0, "(")
list1.insert(4, ")")
elif list1[5] == "*" or list1[5] == "/":
list1.insert(0, "(")
list1.insert(6, ")")
#有两个*或者/
elif list1.count("*") + list1.count("/") == 2:
if (list1[1] == "*" or list1[1] == "/") and (list1[5] == "*" or list1[5] == "/"):
list1.insert(0, "(")
list1.insert(6, ")")
elif (list1[1] == "*" or list1[1] == "/") and (list1[5] == "*" or list1[5] == "/"):
list1.insert(0, "(")
list1.insert(4, ")")
return list1

#生成字符串表达式
def getExpress3(card, res_result):
result = getExpress1(card)
for i in result:
list1 = getExpress2(i)
str1 = ''
for j in list1:
str1 = str1 + str(j)
if eval(str1) == 24:
str2 = str1.replace('.', '').replace('0', '').replace('(', '').replace(')', '')
res_result.append(str2.replace('11', 'J').replace('12', 'Q').replace('13', 'K').replace('1', 'A'))

res_result = []
if "joker" in card or "JOKER" in card:
print('ERROR')
else:
for i in card:
if i in re_ref:
card[card.index(i)] = float(i_ref[re_ref.index(i)])
else:
card[card.index(i)] = float(i)
print(card)
for j in getCard(card):
getExpress3(j, res_result)
if len(res_result) == 0:
print('NONE')
else:
#print(list(set(res_result)))
print(list(set(res_result))[0])


Original: https://blog.csdn.net/qq_42158153/article/details/125325776
Author: 水月清辉
Title: python之24点牌游戏

(0)

### 大家都在看

• #### Diffusion Models：生成扩散模型

Diffusion Models：生成扩散模型 当前的内容是梳理《Transformer视觉系列遨游》系列过程中引申出来的。目前最近在AI作画这个领域 Transformer 火的…

Python 2023年9月28日
056

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。 Original: https://blo…

Python 2023年9月14日
052
• #### 如何自定义横纵坐标刻度？以及如何指定横纵坐标的格式？

可能有些同学在画图的过程中会遇到这样的问题： 需要画某个物理量随时间的变化，但是横坐标显示的却是一个个自然数？或者横坐标虽然是datatime时间格式，但是在图中的显示却不是自己想…

Python 2023年9月3日
093
• #### pandas 每一列画图_pandas中的绘图函数

Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下，它们所生成的是线形图 线形图 s = Series(data=np.random.randint…

Python 2023年8月8日
048
• #### python中dropna函数_【Python】Dataframe删除空值

使用dropna()函数就可以去掉dataframe中的空值。这里就直接用的官方文档里面的例子。 df = pd.DataFrame({“name”: [&…

Python 2023年8月7日
063
• #### 机器学习实战（3）——分类

目录 1 MNIST数据集 2 训练一个二元分类器 3 性能考核 3.1 使用交叉验证测量精度 3.2 混淆矩阵 3.3 精度和召回率 3.4 精度/召回率权衡 3.5 ROC曲线…

Python 2023年8月26日
066
• #### python超全超详细的第三方库的3种常用安装方式来看看嘛？

【前文】 python安装第三方库的三种常用方式。希望能帮到你啦！ 【一】安装第三方库的方式： 首先win键+r ： 下一步运行： 带豆瓣镜像源的安装：selenium 例如：豆瓣…

Python 2023年9月23日
045
• #### python创建线段_在绘图图中添加线段的简洁方法（使用python/jupyter笔记本）？

Plotly没有为此类图表提供内置的矢量化，因为它可以很容易地由您自己完成，请参阅我基于您提供的链接的示例：import pandas as pd import numpy as …

Python 2023年8月8日
061
• #### unittest和pytest区别

一、安装需求 二、用例编写规则 三、用例执行 四、用例前后置 五、参数化 六、断言 七、报告 八、失败重跑 unittest和pytest区别 pytest为第三方需求库，需额外安…

Python 2023年9月14日
044
• #### Python 阿里云OSS文件上传下载与文件删除及检索示例

实践环境 运行环境：Python 3.5.4CentOS Linux release 7.4.1708 (Core)/Win10 需要安装以下类库：pip3 install set…

Python 2023年6月6日
073
• #### Node.js躬行记（25）——Web自动化测试

网页在提测流转给 QA 后，如何能帮他们更有效而准确的完成测试，是我一直在思考的一个问题。 QA 他们会对网页编写测试用例，在提测之前会让我们将优先级最高的用例跑通，这在一定程度上…

Python 2023年10月13日
052
• #### Pandas学习笔记（九）—— Pandas时序数据

前导 更多文章代码详情可查看博主个人网站：https://www.iwtmbtly.com/ 导入需要使用的库和文件： >>> import pandas as …

Python 2023年8月8日
070
• #### 为什么 TCP 建立连接需要三次握手

TCP 协议是我们几乎每天都会接触到的网络协议，绝大多数网络连接的建立都是基于 TCP 协议的，学过计算机网络或者对 TCP 协议稍有了解的人都知道 —— 使用 TCP 协议建立连…

Python 2023年11月4日
063
• #### pip install 与 conda install的区别

以前一直不知道pip install 与 conda install有什么区别，每次都是先用pip装，要是不行就换conda install。但是前一段时间在配置环境的时候发现了一…

Python 2023年9月8日
065
• #### 下载Python库

一、控制台中下载 1.win+R->cmd-> pip install 库名称->回车，等待下载完成即可 如果下载失败，使用以下方法： 2.网站上下载，然后安装 …

Python 2023年9月17日
056
• #### 教师节我用Python做了个学生点名系统送给老师当礼物，这回毕业稳了

今年教师节前夕，我特意用Python做了个学生点名系统，非常好用，送给各科老师、辅导员当节日礼物，老师们都喜滋滋，说平常逃课就原谅我了，我心想，这次毕业应该不是问题了~ 本文背景 …

Python 2023年6月9日
0127