irpas技术客

python之24点牌游戏_水月清辉

大大的周 7994

# -*- 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])


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #python之24点牌游戏 #python实现24点牌游戏