常见游戏规则:
从扑克中每次取出 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. 需要的包:

itertools
1
import random

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

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

周周 微信支付

微信支付

周周 支付宝

支付宝