Python实现24点游戏

本文介绍了24点游戏的基本规则和玩法,强调其对数学思维的锻炼,并提供了一个用Python编写的解决方案,以及如何使用PyInstaller进行程序打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

24点游戏是一种数学益智游戏,它的目标是通过使用加法、减法、乘法和除法这四种基本算术运算,使得四个数字的结果等于24。这个游戏不仅能锻炼玩家的数学计算能力,还能提高逻辑思维和快速反应能力。

游戏规则非常简单:

  1. 游戏通常使用一副扑克牌中的1到10的数字牌,去掉大小王和J、Q、K,因为这些牌没有具体的数值。
  2. 每次从牌堆中抽取四张牌,或者由玩家随机选择四张数字牌。
  3. 玩家需要使用这四张牌上的数字,通过加、减、乘、除的组合,得出结果为24的算式。
  4. 每个数字必须且只能使用一次。
  5. 运算的顺序没有限制,可以使用括号来改变运算顺序。
  6. 完成算式后,可以使用计算器验证结果是否正确。

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文件夹里面找到这个程序了。

然后双击运行就行了:(这个文件可以)

效果如下:

效果还不错。可以思考,然后看答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值