经典24点游戏,在thonny算法如下:
from itertools import permutations
a = int(input(“请输入第1个数字:”))
b = int(input(“请输入第2个数字:”))
c = int(input(“请输入第3个数字:”))
d = int(input(“请输入第4个数字:”))
print(“本代码仅为学习之用,勿做其他商业用途,”)
my_list = [a, b, c, d]
对4个整数随机排列的列表
result = [c for c in permutations(my_list, 4)]
symbols = ["+", “-”, “", “/”]
list2 = [ ] # 算出24的排列组合的列表
flag = False
for one, two, three, four in result:
for s1 in symbols:
for s2 in symbols:
for s3 in symbols:
if s1 + s2 + s3 == “+++” or s1 + s2 + s3 == "**”:
express = ["{0}{1}{2}{3}{4}{5}{6}".format(one, s1, two, s2, three, s3, four)] # 全加或者乘时,括号已经没有意义。
else:
express = ["(({0}{1}{2}){3}{4}){5}{6}".format(one, s1, two, s2, three, s3, four),
“({0}{1}{2}){3}({4}{5}{6})”.format(one, s1, two, s2, three, s3, four),
“(({0}{1}({2}{3}{4})){5}{6})”.format(one, s1, two, s2, three, s3, four),
“{0}{1}(({2}{3}{4}){5}{6})”.format(one, s1, two, s2, three, s3, four),
“{0}{1}({2}{3}({4}{5}{6}))”.format(one, s1, two, s2, three, s3, four)]
for e in express:
try:
if eval(e) == 24:
list2.append(e)
flag = True
except ZeroDivisionError:
pass
list3 = set(list2) # 去除重复项
m=0
for c in list3:
m=m+1
print(“第”,m,“方法:”,c)
if not flag:
print(“NO!”)
Python 3.7.7 (bundled)
%Run ‘24点游戏3.py’
请输入第1个数字:3
请输入第2个数字:4
请输入第3个数字:4
请输入第4个数字:8
第 1 方法: 8*(4*(3/4))
第 2 方法: ((4-(4-8))3)
第 3 方法: 3(8+(4-4))
第 4 方法: ((8-4)+4)3
第 5 方法: 4/((4/3)/8)
第 6 方法: 3((8+4)-4)
第 7 方法: (4+8)+(43)
第 8 方法: 8((3-4)+4)
第 9 方法: (34)+(8+4)
第 10 方法: 3((8/4)4)
第 11 方法: ((43)/4)8
第 12 方法: 4+((8-3)4)
第 13 方法: 4-(4-(83))
第 14 方法: 3(4+(8-4))
第 15 方法: ((38)/4)4
第 16 方法: ((4+(83))-4)
第 17 方法: 3/(4/(84))
第 18 方法: 3*(4*(8/4))
第 19 方法: (83)(4/4)
第 20 方法: 3*(8/(4/4))
第 21 方法: ((3-4)+4)8
第 22 方法: (8/4)(34)
第 23 方法: (4-4)+(83)
第 24 方法: (8/4)(43)
第 25 方法: 3/((4/8)/4)
第 26 方法: ((38)-4)+4
第 27 方法: 3((8-4)+4)
第 28 方法: (4/4)(38)
第 29 方法: ((4+3)-4)8
第 30 方法: 4+((43)+8)
第 31 方法: ((8/4)3)4
第 32 方法: ((4/(4/8))3)
第 33 方法: ((4(8/4))3)
第 34 方法: 4((3/4)8)
第 35 方法: ((3(84))/4)
第 36 方法: ((8(3/4))4)
第 37 方法: 4((83)/4)
第 38 方法: ((3(4/4))8)
第 39 方法: (43)+(4+8)
第 40 方法: 3*((44)-8)
第 41 方法: 8/(4/(34))
第 42 方法: 4*((38)/4)
第 43 方法: 8((3+4)-4)
第 44 方法: ((4/(4/3))8)
第 45 方法: ((34)+4)+8
第 46 方法: 8/((4/4)/3)
第 47 方法: ((8/4)4)3
第 48 方法: ((4(83))/4)
第 49 方法: 3*(8-(4-4))
第 50 方法: 3*(8*(4/4))
第 51 方法: 3*((4+8)-4)
第 52 方法: (38)+(4-4)
第 53 方法: (3/4)(84)
第 54 方法: 4(3*(8/4))
第 55 方法: ((3/(4/4))8)
第 56 方法: (3/4)(48)
第 57 方法: ((4+8)-4)3
第 58 方法: 3((84)/4)
第 59 方法: ((4+(43))+8)
第 60 方法: ((43)+4)+8
第 61 方法: 8*(3/(4/4))
第 62 方法: (8+4)+(34)
第 63 方法: 4-((3-8)4)
第 64 方法: ((83)-4)+4
第 65 方法: 4(8/(4/3))
第 66 方法: ((3/(4/8))4)
第 67 方法: ((3-(4-4))8)
第 68 方法: 8/(4/(43))
第 69 方法: 8(3*(4/4))
第 70 方法: ((4+(8-4))3)
第 71 方法: ((3/4)8)4
第 72 方法: 4+((38)-4)
第 73 方法: ((4+(34))+8)
第 74 方法: (83)/(4/4)
第 75 方法: (84)(3/4)
第 76 方法: (48)/(4/3)
第 77 方法: 8((3/4)4)
第 78 方法: ((48)3)/4
第 79 方法: 8(4/(4/3))
第 80 方法: (38)/(4/4)
第 81 方法: 8+(4+(34))
第 82 方法: ((8+(34))+4)
第 83 方法: 8((4+3)-4)
第 84 方法: 4+(4*(8-3))
第 85 方法: ((34)8)/4
第 86 方法: 8(4-(4-3))
第 87 方法: 8(3-(4-4))
第 88 方法: 8+((43)+4)
第 89 方法: ((4-4)+8)3
第 90 方法: (83)+(4-4)
第 91 方法: (38)(4/4)
第 92 方法: 4/((4/8)/3)
第 93 方法: 8((34)/4)
第 94 方法: ((34)/4)8
第 95 方法: 4+(8+(34))
第 96 方法: ((3/4)4)8
第 97 方法: ((4-4)+3)8
第 98 方法: (43)(8/4)
第 99 方法: (4+8)+(34)
第 100 方法: 4+(8+(43))
第 101 方法: (84)/(4/3)
第 102 方法: ((8-3)4)+4
第 103 方法: 4+((83)-4)
第 104 方法: ((4*(38))/4)
第 105 方法: 8+((34)+4)
第 106 方法: 3/((4/4)/8)
第 107 方法: 8*(3+(4-4))
第 108 方法: ((3*8)+4)-4
第 109 方法: ((8-(4-4))3)
第 110 方法: ((8/(4/3))4)
第 111 方法: ((43)8)/4
第 112 方法: (4/4)(83)
第 113 方法: ((4/4)*8)*3
第 114 方法: ((34)+8)+4
第 115 方法: 3((4/4)8)
第 116 方法: (4-4)+(38)
第 117 方法: (83)-(4-4)
第 118 方法: ((3+4)-4)8
第 119 方法: ((4(8-3))+4)
第 120 方法: ((84)3)/4
第 121 方法: 3((48)/4)
第 122 方法: ((4/4)3)8
第 123 方法: 8(4+(3-4))
第 124 方法: ((8(34))/4)
第 125 方法: 8*((4*3)/4)
第 126 方法: 8+(4+(43))
第 127 方法: (34)(8/4)
第 128 方法: ((3(8/4))4)
第 129 方法: 3(4-(4-8))
第 130 方法: ((43)+8)+4
第 131 方法: 8((4/4)3)
第 132 方法: 3((4-4)+8)
第 133 方法: 4-(4*(3-8))
第 134 方法: ((48)/4)3
第 135 方法: ((8/(4/4))3)
第 136 方法: (38)-(4-4)
第 137 方法: 4-(4-(38))
第 138 方法: 4((8/4)3)
第 139 方法: ((8+(43))+4)
第 140 方法: 8*((4-4)+3)
第 141 方法: ((4-(4-3))8)
第 142 方法: 4/(4/(38))
第 143 方法: 4+((34)+8)
第 144 方法: 4(3/(4/8))
第 145 方法: (43)+(8+4)
第 146 方法: ((44)-8)3
第 147 方法: 3(4/(4/8))
第 148 方法: ((3+(4-4))8)
第 149 方法: 4/(4/(83))
第 150 方法: 4*(8*(3/4))
第 151 方法: ((83)/4)4
第 152 方法: 8/((4/3)/4)
第 153 方法: ((83)4)/4
第 154 方法: ((4+(3-4))8)
第 155 方法: (8+4)+(43)
第 156 方法: (43)/(4/8)
第 157 方法: ((8+(4-4))3)
第 158 方法: (34)/(4/8)
第 159 方法: (48)(3/4)
第 160 方法: ((83)+4)-4
第 161 方法: ((4+(38))-4)
第 162 方法: ((8+4)-4)3
第 163 方法: ((4(3/4))8)
第 164 方法: (34)+(4+8)
第 165 方法: ((3(48))/4)
第 166 方法: ((38)4)/4
第 167 方法: 3/(4/(48))
第 168 方法: ((8*(4/4))3)
第 169 方法: ((84)/4)3
第 170 方法: ((8(4*3))/4)