24点游戏是一种数学益智游戏,它的目标是通过使用加法、减法、乘法和除法这四种基本算术运算,使得四个数字的结果等于24。这个游戏不仅能锻炼玩家的数学计算能力,还能提高逻辑思维和快速反应能力。
游戏规则非常简单:
- 游戏通常使用一副扑克牌中的1到10的数字牌,去掉大小王和J、Q、K,因为这些牌没有具体的数值。
- 每次从牌堆中抽取四张牌,或者由玩家随机选择四张数字牌。
- 玩家需要使用这四张牌上的数字,通过加、减、乘、除的组合,得出结果为24的算式。
- 每个数字必须且只能使用一次。
- 运算的顺序没有限制,可以使用括号来改变运算顺序。
- 完成算式后,可以使用计算器验证结果是否正确。
24点游戏有多种解法,一个数字组合可能有多种不同的算式可以得到24。例如,使用数字2、3、4、5,可以得到以下算式之一:
- (5 - 2) * (3 + 4) = 24
- (5 - 3) * (4 + 2) = 24
- 4 * (5 - 2) + 3 = 24
- 等等。
这个游戏适合各个年龄段的人玩,可以单独挑战,也可以和朋友或家人一起竞赛,看谁能更快地找到正确的解法。24点游戏不仅是一种娱乐方式,还是一种很好的数学教育工具。
程序很多,但是都不如自己写一个:
import random
def random_solve_24():
while True:
nums = [random.randint(1, 14) for _ in range(4)]
print(f'请用下面的数据完成24点:{nums}')
solutions = generate_solutions_improved(nums)
a=input('输入任意键回车后查看答案')
print(f'解法为{solutions}')
a=input('输入任意键回车后查看下一题(退出输入Y)')
print('==============================================================================================')
if a=='Y':
break
def generate_solutions_improved(nums, target=24, epsilon=1e-6):
def solve(nums, history):
if len(nums) == 1:
if abs(nums[0] - target) < epsilon:
solutions.add(history[0])
return
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
new_nums = [nums[k] for k in range(len(nums)) if k != i and k != j]
new_history = [history[k] for k in range(len(nums)) if k != i and k != j]
for a, b, op, in [(nums[i], nums[j], '+'), (nums[i], nums[j], '-'), (nums[j], nums[i], '-'),
(nums[i], nums[j], '*'), (nums[i], nums[j], '/'), (nums[j], nums[i], '/')]:
if op == '/' and abs(b) < epsilon:
continue # Avoid division by zero
result = eval(f"a{op}b")
expression = f"({history[i]}{op}{history[j]})"
solve(new_nums + [result], new_history + [expression])
solutions = set()
solve(nums, list(map(str, nums)))
return solutions
random_solve_24()
运行就可以了。
打包程序
主要依靠pyinstaller库实现,安装:
pip install pyinstaller
然后win+r,输入cmd打开终端
输入自己的代码文件所在的路径:
cd /d "E:\Xiao work\其他\脚本系列"
在对应的这个文件夹里面去直接输入cmd打开也行。
然后输入打包的文件名称,我的文件名叫 24点游戏.py
pyinstaller --onefile 24点游戏.py
等待就行,后面就可以在这个目录下的dist文件夹里面找到这个程序了。
然后双击运行就行了:(这个文件可以)
效果如下:
效果还不错。可以思考,然后看答案。