常见游戏规则:
从扑克中每次取出 4 张牌。使用加减乘除,第一个能得出 24 者为赢。(其中,J 代表 > 11,Q 代表 12,K 代表 13,A 代表 1),按照要求编程解决 24 点游戏。
随机产生四个数字用 python 中的函数进行全排列
随机数的生成:
对于 python 随机数的生成,通过导入包来实现,即 import random
本程序中因为要生成 4 个(1——13)的整形数字,采用 randint
对四个随机数的全排列:
对于 python 可以通过 python 的包 itertools 所以不用自己写递归函数实现
1 2 3 4
| ``` 通俗地讲,就是返回可迭代对象的所有数学全排列方式。 ```listCardSet = list(set(itertools.permutations(listCardNum, 4)))#全排列4个数 return listCardSet
|
例如:8,13,3,5 产生的全排列
(8, 13, 3, 5), (13, 5, 8, 3), (5, 3, 8, 13), (13, 3, 8, 5), (3, 5, 8, 13), (3, 13, 5, 8),
(3, 5, 13, 8), (5, 3, 13, 8), (8, 13, 5, 3), (8, 5, 13, 3), (8, 3, 5, 13), (5, 8, 3, 13),
(13, 8, 3, 5), (13, 3, 5, 8), (8, 3, 13, 5), (5, 8, 13, 3), (3, 8, 13, 5), (5, 13, 3, 8),
(13, 8, 5, 3), (5, 13, 8, 3), (8, 5, 3, 13), (3, 13, 8, 5), (3, 8, 5, 13), (13, 5, 3, 8)
显示:
__name__ 1 2
| print("************************欢迎进入24点游戏************************") print("该系统会随机产生四张牌,并帮助您算出可以实现24点的所有算法")
|
代码分析:
I. 需要的包:
II. 随机产生数字和全排列:
card_rand():1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| for i in range(4): list_random.append(random.randint(1, 13)) #list.append(obj) list_quanpai = list(set(itertools.permutations(list_random, 4)))#全排列4个数 return list_quanpai listCard = card_rand() # 排列组合结果 #print(listCard)#输出所有排列
```III. 计算函数:
```def card_calculate(): for i in range(len(listCard)): list1_Card = listCard[i] cardOne = list1_Card[0] cardTwo = list1_Card[1] cardThree = list1_Card[2] cardFour = list1_Card[3] # 得到四张牌的点数 flag = False # 标志位 try: for o1 in listOperator: resultOne = 0 # 前两个数的运算结果 if o1 == "+": resultOne = cardOne+cardTwo elif o1 == "-": resultOne = cardOne-cardTwo elif o1 == "*": resultOne = cardOne*cardTwo elif o1 == "/": resultOne = cardOne/cardTwo for o2 in listOperator: resultTwo = 0 # 前三个数的运算结果 if o2 == "+": resultTwo = resultOne + cardThree elif o2 == "-": resultTwo = resultOne - cardThree elif o2 == "*": resultTwo = resultOne * cardThree elif o2 == "/": resultTwo = resultOne / cardThree for o3 in listOperator: resultThree = 0 # 四个数的运算结果 resultFinal = 0 # 最后两个数的运算结果 if o3 == "+": resultThree = resultTwo + cardFour resultFinal = cardThree + cardFour elif o3 == "-": resultThree = resultTwo - cardFour resultFinal = cardThree - cardFour elif o3 == "*": resultThree = resultTwo * cardFour resultFinal = cardThree * cardFour elif o3 == "/": resultThree = resultTwo / cardFour resultFinal = cardThree / cardFour
|
源码:https://download.csdn.net/download/qq_41233643/11112033