纸牌24点,Python 程序实现

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

最近刚刚接触 python,又恰巧和室友玩纸牌,想到小时候玩的24点游戏,所以当做练习,写了一段代码。
参考了一位叫GreatAnt网友的程序,但是他实现的只是一种计算结果的输出,为了看到所以计算可能的输出,我编写了下面一段代码,欢迎广大网友来此留言交流。

#!/usr/bin/env python
#encoding:utf8

import itertools
import random

cardNum = []    # 存放随机牌组
listSet = []    # 存放随机牌组对
cardGroup = ()  # 调用牌组
symbols = ["+","-","*","/"]
cardOne = 0 ; cardTwo = 0 ; cardThr = 0 ;cardFor = 0    # 存放卡牌信息
resultOne = 0 ; resultTwo = 0 ; resultThr = 0   # 存放运算计算结果
cardValue = []  # 保存结果打印信息
cardResult = []

# 发牌器
def cardFun():
    for i in range(4):
        cardNum.append(int(random.random() * 100 % 13) + 1)
    listSet = list(set(itertools.permutations(cardNum, 4)))
    return listSet         # 存放A(4,4)种排列方式的列表

# 计算方法
cardList = cardFun()
def cardCompute():
    for i in range(len(cardList)):
        cardGroup = cardList[i]
        cardOne = cardGroup[0]
        cardTwo = cardGroup[1]
        cardThr = cardGroup[2]
        cardFor = cardGroup[3]
        flag = False
        # 下面的循环运算体系会有数学上逻辑上的报错,所以用try检测
        try:
            for s1 in symbols:
                resultOne = 0
                if s1 == "+":
                    resultOne = cardOne + cardTwo
                elif s1 == "-":
                    resultOne = cardOne - cardTwo
                elif s1 == "*":
                    resultOne = cardOne * cardTwo
                elif s1 == "/":
                    resultOne = cardOne / cardTwo
                for s2 in symbols:
                    resultTwo = 0
                    if s2 == "+":
                        resultTwo = resultOne + cardThr
                    elif s2 == "-":
                        resultTwo = resultOne - cardThr
                    elif s2 == "*":
                        resultTwo = resultOne * cardThr
                    elif s2 == "/":
                        resultTwo = resultOne / cardThr
                    for s3 in symbols:
                        resultThr =0 ; resultelse = 0
                        if s3 == "+":
                            resultThr = resultTwo + cardFor
                            resultelse = cardThr + cardFor
                        elif s3 == "-":
                            resultThr = resultTwo - cardFor
                            resultelse = cardThr - cardFor
                        elif s3 == "*":
                            resultThr = resultTwo * cardFor
                            resultelse = cardThr * cardFor
                        elif s3 == "/":
                            resultThr = resultTwo / cardFor
                            resultelse = cardThr / cardFor

                        # 判断最终结果是否为24
                        if resultThr == 24:
                            cardValue.append("((%s %s %s) %s %s ) %s %s = 24" % (cardOne,s1,cardTwo,s2,cardThr,s3,cardFor))
                            flag = True
                        # 括号与括号的运算
                        elif resultThr != 24 and 24 % resultOne == 0:
                            for s4 in symbols:
                                resultThr = 0
                                if s4 == "+":
                                    resultThr = resultOne + resultelse
                                elif s4 == "-":
                                    resultThr = resultOne - resultelse
                                elif s4 == "*":
                                    resultThr = resultOne * resultelse
                                elif s4 == "/":
                                    resultThr = resultOne / resultelse
                                if resultThr == 24:
                                    cardValue.append("(%s %s %s) %s (%s %s %s) = 24" % (cardOne,s1,cardTwo,s4,cardThr,s3,cardFor))
                                    flag = True
                                if flag:
                                    break
                    # 如果得到结果,就退出3次运算的循环
                        if flag:
                            break
                    if flag:
                        break
                if flag:
                    break
        except ZeroDivisionError:
            pass

    cardResult = set(cardValue)
    return cardResult

# 执行主体
if __name__ == "__main__":
    Compute = cardCompute()
    print("你手上的卡牌为:%s %s %s %s" % (cardList[0][0],cardList[0][1],cardList[0][2],cardList[0][3]))
    print("这组卡牌共有 %s 种算法" % (len(Compute)))
    print("---" * 10)
    for i in Compute:
        print(i)

此程序的实现没什么算法上的设计,就是用穷举法简单粗暴的来解决,因为是初学,所以主要是练习数据类型的应用,欢迎指错。

Python基础《扑克牌游戏 【代码】Python基础《扑克牌游戏 阅读详情

相关推荐

生成24全部算法python

24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。 1.程序风格良好(使用自定义注释模板) 2.列出...

qq_42002366的博客 2363

Pygame桌面游戏开发:卡牌游戏开发-(10).卡牌合成系统开发.docxPygame桌面游戏开发:卡牌游戏开发-(11).卡牌收集与库存管理.docxPygame桌面游戏开发:卡牌游戏开发-(

Pygame桌面游戏开发:卡牌游戏开发_(10).卡牌合成系统开发.docx Pygame桌面游戏开发:卡牌游戏开发_(11).卡牌收集与库存管理.docx Pygame桌面游戏开发:卡牌游戏开发_(12).游戏AI与对手实现.docx Pygame桌面游戏开发:卡牌游戏开发_(13).网络对战功能开发.docx Pygame桌面游戏开发:卡牌游戏开发_(14).游戏音效与背景音乐.docx Pygame桌面游戏开发:卡牌游戏开发_(15).游戏测试与调试技巧.docx Pygame桌面游戏开发:卡牌游戏开发_(16).游戏发布与分发指南.docx Pygame桌面游戏开发:卡牌游戏开发_(17).高级优化技巧与性能提升.docx Pygame桌面游戏开发:卡牌游戏开发_(1).Pygame基础知识.docx Pygame桌面游戏开发:卡牌游戏开发_(2).卡牌游戏设计理论.docx Pygame桌面游戏开发:卡牌游戏开发_(3).Pygame环境搭建与配置.docx Pygame桌面游戏开发:卡牌游戏开发_(4).卡牌游戏界面设计.docx Pygame桌面游戏开发:卡牌游戏开发_(

24游戏python

24游戏python版 问题描述与规则 24游戏是经典的纸牌益智游戏。常见游戏规则:从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏游戏要求 基本要求 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式。 提高要求 用户初始生命值为一给定值(比如3),初始...

qq_39233029的博客 2635

24(随机发牌)python实现

24游戏,可以随机产生四个数字,python描述 :24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏

Python蓝桥杯ALGO-995 24

题目描述 问题描述   24游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:   ((A*K)-J)Q等价于((113)-11)*12=24   加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24的,所以这里只要求求出不超过24的最大值。 输入格式   输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整

qq_38959366的博客 3219

24游戏 python_Python破解24游戏,从此打扑克就没输过

文源网络,仅供学习之用,如有侵权请联系删除。24游戏对于任意给定的四张扑克牌,计算是否有赢得24游戏的方法(即使用加、减、乘、除四则运算凑成24的方法);如果有的话,列出所有可能的方法。在大小王以外的52张牌中,任意抽取其中4张牌。如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算成24,则为胜利;每张牌都必须使用,且只能使用一次。第一种解法依据游戏规则,我们可以想到如下解决思...

weixin_39802784的博客 321

python简单游戏程序设计_经典趣味24游戏程序设计(python)

简要概括为:先列出所有表达式的可能性,然后运用表达式树计算表达式的值。由于表达式树的特,所有操作数均为叶子节,操作符为非叶子节,而一个表达式(例如( ( ( 6 + 4 ) - 2 ) * 3 ) = 24) 只有3个运算符,即一颗表达式树只有3个非叶子节24游戏是儿时玩的主要益智类游戏之一,玩法为:从一副扑克中抽取4张牌,对4张牌使用加减乘除中的任何方法,使计算结果为24。例如,2,3,4,6,通过( ( ( 4 + 6 ) - 2 ) * 3 ) = 24,最快算出24者剩。

weixin_44296345的博客 612

如何在30天内使用python制作一个卡牌游戏

在30天内使用Python制作一个卡牌游戏是一个可行的目标,尤其是如果你已经有一定的编程基础。以下是一个分步指南,帮助你规划和管理这个项目。

东方佑 2987

纸牌游戏

内容:24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。 1.程序风格良好(使用自定义注释模板) 2.列出表达式无重复。 算法分析: (1)24游戏,一共使用52张牌,4种花色,因此使用13张不同数字和字母的扑

m0_51566360的博客 585

Python:“24游戏的简单实现“

问题描述:从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 思路:1、随机产生四个数(1-13)将其排列组合结果去重添加到一个列表中 2、枚举计算并去重 3、显示 # _author:“YYX” # date: 2018/10/5 import itertools import random lis...

qq_37966857的博客 2654

24游戏python

24游戏python) 一、题目要求 1.问题描述: 24游戏是经典的纸牌益智游戏。常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 2.基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序...

Elf.筱焱的博客 1万+

24纸牌游戏

24纸牌游戏 第3章 24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。 1.程序风格良好(使用自定义注释模板) 2.列出表达式无重复。 算法设计思路:对牌的顺序、括号位置、可能的运算符穷举,直到找到解法 知识

ha______haha的博客 596

python编写24游戏

1.题目要求 24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。 1.程序风格良好(使用自定义注释模板) 2.列出表达式无重复。 提高要求:用户初始生命值为一给定值(比如3),初始分数为0。随机生成4个代表扑克牌

qq_54275829的博客 2298

Python实现24游戏

问题描述 24游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏

qq_46647978的博客 4424

Python 实例|24 纸牌游戏算法

对于任意给定的四张扑克牌,计算是否有赢得24游戏的方法(即使用加、减、乘、除四则运算凑成24的方法);如果有的话,列出所有可能的方法。 【24游戏规则】 在大小王以外的52张牌中,任意抽取其中4张牌。如果通过加、减、乘、除四则运算(可加括号)的方法,将抽到的4张牌算成24,则为胜利;每张牌都必须使用,且只能使用一次。 第一种解法 依据游戏规则,我们可以想到如下解决思路:使用枚举的方法,.

长行 4822

纸牌游戏24

python练习之二十四 游戏规则 二十四是一种益智游戏,它能在游戏中锻炼人们的心算,它往往要求人们将三个数字进行加减乘除四则混合运算(允许使用括号)求得二十四。 #纸牌游戏 24 import itertools #函数1 参数:一个数字列表,从中顺序取出数字,将四则混合运算符按照顺序来添加到三个数字中间并进行运算 def fun1(li,target=24):

yanshushuang的博客 947

24游戏 python_24游戏(自动生成随机数)

如果有错,请大神指正啊,撒花撒花~~24游戏是经典的纸牌益智游戏。常见游戏规则:从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24游戏。随机产生四个数字用python中的函数进行全排列随机数的生成:对于python随机数的生成,通过导入包来实现,即import random本程序中因为要生成4个(1——1...

weixin_39927799的博客 802
下一篇: 纸牌24点,Python 程序实现
nimo97
博客等级 码龄9年 6粉丝 16原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值