1.�dz���Դ��
2.过年扎金花赢得盆满钵满,非常这款脚本分享给你。金花
3.网站怎样做好SEO诊断和优化?
4.golangç¼ç¨è¯è¨ï¼
5.用python开发一个炸金花小游戏,源码注意别玩上瘾了~~
�dz���Դ��
现在许多小伙伴疑惑,非常学了Python能做些什么,金花学习Python有何用?是源码jvm内存模型源码否知道系统学习路径?
分享几款利用Python制作的小游戏,非常适合Python开发者。非常Python程序员往往充满童心,金花现在就推荐一个私藏的源码GitHub项目——Python小游戏,只需一行命令即可进入,非常体验儿时简单快乐。金花
这些游戏均由Python编写,源码学习Python一段时间的非常同学可以借此练习,向朋友展示成果。金花它们是源码很好的参考案例。
安装与使用相当简单,仅需一行代码。
该项目所有游戏基于Python内置模块Turtle开发,无需复杂依赖,安装无难度。
安装完毕后,使用python -m freegames list可查看所有游戏。
让我们以贪吃蛇为例,启动游戏,使用键盘上下左右键进行控制。
吃豆人游戏同样经典,通过特定代码启动,体验与原版相似的玩法。
Flappy游戏与风靡一时的Flappy bird极为相似,只需更改游戏名即可。传奇源码手机版
Python炸金花小游戏,通过Python实现类似炸金花的扑克牌游戏,了解游戏规则。
Memory游戏挑战记忆力,操作简单,宫格中隐藏数字,匹配相同数字。
迷宫游戏考验寻路能力,找到走出迷宫的路径。
Tic Tac Toe游戏,只需单击屏幕放置X或O,连成一线即为胜利。
奥特曼打怪兽游戏,利用Python海龟画图实现。
所有游戏源码均可查看,学习逻辑并进行修改,增添更多功能与玩法。
以上Python小游戏已准备,需要者可获取项目源代码。
过年扎金花赢得盆满钵满,这款脚本分享给你。
大年三十,我坐庄,大年初一背井离乡。扑克牌,居家旅行、桌面交友的必备。Python实现炸金花扑克牌小游戏,规则如下:炸金花又称三张牌,api管理php源码全国广泛流传的民间多人纸牌游戏,使用除去大小王的张扑克牌,玩家抽取3张,比较大小。牌型从小到大排序:同花顺、豹子、顺子、金花、对子、单张。以下概率来自百度百科。游戏流程:1、准备扑克牌,生成一副满足要求的扑克牌。每个单张赋点数。2、玩家入场,邀请5位玩家。3、发牌,随机抽取3张给每位玩家。4、判断牌型及算分,转换点数,判断牌型并计算得分。牌型包括单张、对子、金花、顺子、mysql生成接口源码豹子、同花顺。5、决出胜负,找出得分最高者。游戏结束,可以开始下一场愉快的游戏。统计及源码:进行了万场游戏,并对各类牌型进行频率统计,结果与排列组合的计算一致。各类牌型的局面和结果也提供了示例。完整代码如下:
网站怎样做好SEO诊断和优化?
seo诊断主要从以下几个方面进行:
对一个已经建立好的网站进行seo之前应该要进行分析诊断
1、确定了网站目标关键词后,分析关键词的竞争程度、百度指数、覆盖的长尾关键词。此步分析对后期的分析网站seo针对关键词优化空间提升有帮助
2、分析网站服务器ip独立与否、速度和安全、是否被降权(site:、收录)、友情链接质量、外链数量、网站更新频率、网站收录情况(注意这里不是指收录数量而是指收录百分比,如果网站只有个页面收录了个以上,说明收录百分比很不错,比如seo点com这个网站,后期可以继续增加高质量内容)
3、小游戏换皮源码分析网站结构(例如div+css或者是table)、静态与否、url是否统一、是否绝对路径、网站地图、网站目录深度、网站导航
4、网站meta标签(标题、关键词、描述)、关键词布局、关键词密度、alt、h1-h6标签
5、网页容量大小、flash检查、大小优化、冗余代码优化、css单独放置、网页信噪比
6、是否有重定向、页面、robots文件
7、网站目录页、网站最终页标题设置以及关键词和长尾关键词、相关关键词的设置
8、网站内部链接、锚文本的设置、引用评论等互动细节
9、一定要去掉网站死链接、分析网站的单向导出链接数量
、分析网页之间的相似度
、分析文章或产品页是否有相关内容板块、网站首页是否有更新文章板块
、检查js代码和iframe等不受搜索引擎欢迎的代码,检查网站是否添加网站统计
、了解网站是否有过黑帽、外链群发、购买外链、降权的历史
、网站内容的丰富程度、内容与关键词的相关性、外链的形式(网站首页网址外链、关键词外链、网站内页外链)以及外链地点
子闻SEO分享优化方法
1、前提--根据seo诊断方案确定该网站服务器首先考虑是否需要更换、是否要域名重定向、网站静态生成有否必要。
2、第一阶段--根据seo诊断方案进行网站内部各项优化细节的更改,注意不要一次性大规模更改网站标题,小心被百度封杀。
3、第二阶段:做适量的外链更新网站修改后的快照。
4、第三阶段:网站更新、长尾关键词、相关关键词、网站内链、网址提交、网站地图提交、更新的文章页面地址提交以及外链发布同步进行。
5、第四阶段:友情链接交换
6、第五阶段:高质量外链的发布、注意数量以及相关性、外链的稳定程度。
golangç¼ç¨è¯è¨ï¼
为ä»ä¹è¦å¦ä¹ Golangï¼
Goè¯è¨å ¶å®æ¯Golanguageçç®ç§°ï¼Goï¼å称Golangï¼æ¯GoogleçRobertGriesemerï¼RobPikeåKenThompsonå¼åçä¸ç§éæ强类åãç¼è¯å¹¶ååè¯è¨ãGoè¯è¨è¯æ³ä¸Cç¸è¿ï¼ä½åè½ä¸æï¼å åå®å ¨ï¼GCï¼åå¾åæ¶ï¼ï¼ç»æå½¢æåCSP-style并å计ç®ã该è¯è¨çå祥ç©ä¸ºéè±é¼ ï¼gordonï¼ï¼
éè±é¼ ï¼gordonï¼
Goè¯è¨ç¹è²ââç®æ´ãå¿«éãå®å ¨ã并è¡ãæ趣ãå¼æºãå å管çãæ°ç»å®å ¨ãç¼è¯è¿ é
Goè¯è¨ç¨éï¼Goè¯è¨è¢«è®¾è®¡æä¸é¨åºç¨äºæè½½Webæå¡å¨ï¼åå¨é群æ类似ç¨éçå·¨åä¸å¤®æå¡å¨çç³»ç»ç¼ç¨è¯è¨ã对äºé«æ§è½åå¸å¼ç³»ç»é¢åèè¨ï¼Goè¯è¨æ çæ¯å¤§å¤æ°å ¶å®è¯è¨æçæ´é«çå¼åæçãå®æä¾äºæµ·é并è¡çæ¯æï¼è¿å¯¹äºæ¸¸ææå¡ç«¯çå¼åèè¨æ¯å好ä¸è¿äºã
C/C++çé®é¢ï¼å¼åæçä½ï¼å¯¹å¼åè è¦æ±é«ï¼libcåªååå ¼å®¹ï¼è¿ç»´é¾åº¦å大ã
Lua/Pythonçé®é¢ï¼å¨æè¯è¨ï¼ç¼ºå°ç¼è¯è¿ç¨ï¼ä½çº§é误é¢åºï¼ç¼ºå°ææçæ§è½åæåè°è¯å·¥å ·ã
é¾ä¹æè²å¨çº¿æä¸å¦ç¡åæ°åºåé¾ææ¯å·¥ä½ç«æ¯ä¸å½æè²é¨å¦æ ¡è§å建设åå±ä¸å¿å¼å±çâæºæ §å¦ä¹ å·¥åº-å¦ç¡åæ°å·¥ä½ç«âå¯ä¸è·åçâåºåé¾ææ¯ä¸ä¸âè¯ç¹å·¥ä½ç«ãä¸ä¸ç«ç«è¶³ä¸ºå¦çæä¾å¤æ ·åæé¿è·¯å¾ï¼æ¨è¿ä¸ä¸å¦ä½ç 究ç产å¦ç ç»åå¹å »æ¨¡å¼æ¹é©ï¼æ建åºç¨åãå¤åå人æå¹å »ä½ç³»ã
golangæ¯ä»ä¹ææ
Goè¯è¨(å称Golang)æ¯GoogleçRobertGriesemerï¼RobPikeåKenThompsonå¼åçä¸ç§éæ强类åãç¼è¯åè¯è¨ãGoè¯è¨è¯æ³ä¸Cç¸è¿ï¼ä½åè½ä¸æï¼å åå®å ¨ï¼GC(åå¾åæ¶)ï¼ç»æå½¢æåCSP-style并å计ç®ãæ©å±èµæ
Goè¯è¨ä¸»è¦ç¨ä½æå¡å¨ç«¯å¼åï¼å ¶å®ä½æ¯ç¨æ¥å¼åâ大å软件âçï¼éåäºå¾å¤ç¨åºåä¸èµ·å¼å大å软件ï¼å¹¶ä¸å¼åå¨æé¿ï¼æ¯æäºè®¡ç®çç½ç»æå¡ãGoè¯è¨è½å¤è®©ç¨åºåå¿«éå¼åï¼å¹¶ä¸å¨è½¯ä»¶ä¸æç'å¢é¿è¿ç¨ä¸ï¼å®è½è®©ç¨åºåæ´å®¹æå°è¿è¡ç»´æ¤åä¿®æ¹ãå®èåäºä¼ ç»ç¼è¯åè¯è¨çé«ææ§åèæ¬è¯è¨çæç¨æ§åå¯äºè¡¨è¾¾æ§ã
Goè¯è¨ä½ä¸ºæå¡å¨ç¼ç¨è¯è¨ï¼å¾éåå¤çæ¥å¿ãæ°æ®æå ãèææºå¤çãæ件系ç»ãåå¸å¼ç³»ç»ãæ°æ®åºä»£çç;ç½ç»ç¼ç¨æ¹é¢ï¼Goè¯è¨å¹¿æ³åºç¨äºWebåºç¨ãAPIåºç¨ãä¸è½½åºç¨ç;é¤æ¤ä¹å¤ï¼Goè¯è¨è¿å¯ç¨äºå åæ°æ®åºåäºå¹³å°é¢åï¼ç®åå½å¤å¾å¤äºå¹³å°é½æ¯éç¨Goå¼åã
goè¯è¨çå ¨ç§°Goå ¨ç§°Golangã
Goè¯è¨ç±Googleå ¬å¸å¼åï¼å¹¶äºå¹´å¼æºï¼ç¸æ¯Java/Python/Cçè¯è¨ï¼Goå°¤å ¶æ é¿å¹¶åç¼ç¨ï¼æ§è½å ªæ¯Cè¯è¨ï¼å¼åæçè©æ¯Pythonï¼è¢«èªä¸ºâä¸çºªçCè¯è¨âã
Goè¯è¨å¨äºè®¡ç®ã大æ°æ®ãå¾®æå¡ãé«å¹¶åé¢ååºç¨åºç¨é常广æ³ãBAT大åæ£å¨æGoä½ä¸ºæ°é¡¹ç®å¼åçé¦éè¯è¨ã
å·ä¸ªgoæ¯ä»ä¹å·ä¸ªgoæ¯ä»ä¹
å¼éè麻goçä½ç¨å°±æ¯å¨ä¼åå¨æå ï¼å®é 享åçä¼æ éé¢ãè麻goå ¶å®å°±æ¯ç»æ们å 享ååºå®¶çä¼æ ï¼äº«åçé¢åº¦è¾¾å°æè è¶ è¿äºä¼åè´¹ç¨ï¼æ们åæ¯ä»ä¼åè´¹ç¨ï¼å¦æ享åå°çä¼æ è¾¾ä¸å°æ ï¼å°±ä¸ç¨æ¯ä»è´¹ç¨ã
2.æ们æå¼æ¯ä»å®ç¹å»âæçâæé®ã
3.ç¶åå¨çé¢ç¹å»æå¼è麻信ç¨ã
4.ç¶åå¯ä»¥çå°ä¸é¢ççé¢éé¢æä¸ä¸ªè½»ä¼åï¼ç¹å»è¿å ¥ï¼åç»å¯è½é½ä¼æ¾ç¤ºçæ¯è麻goäºã
5.è¿å ¥å°çé¢ï¼å°±å¯ä»¥çå°ç¸å ³çä¸äºå家çä¼æ å¸äºï¼æ们ç¹å»èªå·±éè¦çè¿å ¥ã
6.å°±å¯ä»¥çå°ä¸é¢æ¾ç¤ºçæä¸ä¸ªä¼æ å¸è¯¦æ ï¼æ们æå¼å¯ä»¥çä¸ä¸è¿ä¸ªæ¯ä¸æ¯æ们éè¦çã
7.ç¶åä¸é¢é½ä¼æè¿ä¸ªä¼æ å¸ä½¿ç¨çè¦æ±ï¼è¾¾å°äºæ个é¢åº¦ï¼å°±æ¯ä»ä¼åè´¹ç¨ï¼æ²¡æè¾¾å°ï¼éå享åçä¼æ å°±å¯ä»¥äºã
8.å¦æ确认è¿ä¸ªèªå·±æ¯æéè¦çï¼æ们就ç¹å»ä¸é¢çåæåè®®ï¼ç¶ååç»å°åºå°±å¯ä»¥ä½¿ç¨ä¼æ äºã
ä½ ä¸ºä»ä¹æ¾å¼golang?å 为å å管çç²ç³ãç»å¸¸çå°fmt.xxx导è´å åå ç¨å¤ªå¤ï¼åå°å¯¼è´å åå ç¨å¤ªå¤çæ±æ¨ã
goè¯è¨éååæå¡å¨ç»ä»¶ï¼é£ç§åä¸å¡æ°æ®æ å ³çæå¡å¨ãæ¯å¦æ°æ®åºæå¡å¨ãwebæå¡å¨ãæ¥å¿æç´¢å¼æçãå¦æç¨æ¥åä¸ä¸ªcrm管çç³»ç»ï¼é常累ï¼å 为缺ä¹å¥½å¤é«çº§ç¹æ§ååºå¤§ç第ä¸æ¹åºï¼èä¸è¯æ³æ¯è¾åä¸ï¼æ»ä½æè§å°±è·åå½ä»¤è¡å·®ä¸å¤ã
Goè¯è¨æ¯è°·æåå¸çç¼ç¨è¯è¨ï¼è¿ä¸ªè¯è¨åæçç®çï¼å°±æ¯ä¸ºäºå¨è¿è¡é度æ¥è¿C/C++è¯è¨çåºç¡ä¸ï¼æ³¨ææ¯æ¥è¿ï¼ï¼éä½å¼åè çé¨æ§ï¼åå°å¼åé¾åº¦ã
Goè¯è¨ï¼å¨åè½ä¸æ²¡æè¶ è¿C/C++ï¼éç¨è 为没æC/C++ç»éªçå¼åè ï¼å¼ååºæ¥è¿Cæççç¨åºã对äºå·²ç»çç»ææ¡C/C++çå¼åè æ¥è¯´ï¼Goè¯è¨æ²¡æä¼å¿ï¼è¿è¦éå¦è¯æ³ï¼éåºå¼åç¯å¢ï¼ææ¾æ¯ä¸ç¬¦åæççã
æ»ç»
å ¶å®è¯è¨è¿ä¸è¥¿ï¼é½æå ¶ä¼å¿åå£å¿ãèä¸æäºä¸è¥¿å¹¶ä¸æ¯çº¯ææ¯çãæ¯å¦javaçä¼å¿å¨äºæ¸ æ°çè¯æ表达ãå代ç çä¸éä¸é«ï¼ä½æ¯ä¸éä¹ä¸ä½ï¼éåå·¥ä¸å¼åã
ègoå¢ï¼ä¸å¾ä¸è¯´goå¨å¾®æå¡è¿åæå 天ä¼å¿ãæ¯ç«javaä¸è¦å®ç°goçå¾å¤åè½ï¼éè¦å¼å ¥ç¬¬ä¸æ¹åºãå¾ç¬¨éãègoåçæ¯æï¼è¿ä¸ªå¾®æå¡å°±å¾è½»å·§ãä½æ¯goçè¯æ³å¤ªæ´»ï¼å·¥ä¸ç¨æ¯ä¸ä¸ªæºå¤§çå¼ç«¯ã
Golangçç好ç¨åï¼å¥½ç¨ï¼ä¼ç¹å¦ä¸ï¼
并åç®åãæçé«
å½æ°å¯ä»¥è¿åå¤ä¸ªåæ°
åå¾åæ¶ï¼ç¸æ¯c/c++ãä¸è¿javaãc#é½æè¿ä¸ªä¼å¿ï¼
ç®åæä¸æï¼è¯è¨ç¹æ§å°ï¼ä¹ç®ç¼ºç¹ï¼
é å¥å·¥å ·å®åï¼pprof太好ç¨äºï¼
ç®ä»
Goï¼å称Golangï¼æ¯Googleå¼åçä¸ç§éæ强类åãç¼è¯åã并ååï¼å¹¶å ·æåå¾åæ¶åè½çç¼ç¨è¯è¨ã
ç½ä¼¯ç¹Â·æ ¼çå²è«ï¼RobertGriesemerï¼ï¼ç½å·派å ï¼RobPikeï¼åè¯Â·æ±¤æ®éï¼KenThompsonï¼äºå¹´9æå¼å§è®¾è®¡Goï¼ç¨åIanLanceTaylorãRussCoxå å ¥é¡¹ç®ãGoæ¯åºäºInfernoæä½ç³»ç»æå¼åçãGoäºå¹´ææ£å¼å®£å¸æ¨åºï¼æ为å¼æ¾æºä»£ç 项ç®ã
并å¨LinuxåMacOSXå¹³å°ä¸è¿è¡äºå®ç°ï¼åæ¥è¿½å äºWindowsç³»ç»ä¸çå®ç°ãå¨å¹´ï¼Go被软件è¯ä»·å ¬å¸TIOBEé为âTIOBEå¹´æä½³è¯è¨âãç®åï¼Goæ¯åå¹´åå¸ä¸ä¸ªäºçº§çæ¬ï¼å³ä»a.xå级å°a.yï¼ã
用python开发一个炸金花小游戏,注意别玩上瘾了~~
众所周知?扑克牌可谓是居家旅行、桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则。炸(诈)金花又叫三张牌,是在全国广泛流传的一种民间多人纸牌游戏。游戏使用一副除去大小王的扑克牌,共 4 个花色 张牌,各个玩家从中抽取 3 张牌,比较大小。各种牌型的大小顺序如下(按照全排列组合中出现的概率越小,牌型分数奖励越大):1、同花顺:三张同样花色且点数连续的牌,如红心2、红心3、红心4;2、豹子:三张点数一样的牌,如 AAA、;3、顺子:三张点数连续的牌,如红心2、黑桃3、方块4;4、金花:三张同样花色的牌,如红心2、红心5、红心8;5、对子:两张点数一样的牌,如红心2、黑桃2;6、单张:2~ < J < Q < K < A。以下概率截自百度百科: 注:本文所述游戏规则与实际有所不同,主要基于对不同牌型的比较进行设计
一、游戏流程实现
1、准备扑克牌 开始游戏前,需要先生成一副满足要求的扑克牌,牌友们都知道,扑克牌有以下四种花色,每种花色有 A、2~、J、Q、K 等 张牌。
suit = ["黑桃", "红心", "方块", "梅花"]num = [str(i) for i in range(2, )] + ["J", "Q", "K", "A"]为了便于后续算分,先给每一个单张赋予相应的点数。
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount += 1扑克牌点数预览如下:
score_map = { '黑桃2': 2, '黑桃3': 3, '黑桃4': 4, '黑桃5': 5, '黑桃6': 6, '黑桃7': 7, '黑桃8': 8, '黑桃9': 9, '黑桃': , '黑桃J': , '黑桃Q': , '黑桃K': , '黑桃A': , '红心2': 2, ... }
2、玩家入场 以 p1、p2 等名称对玩家进行区分,我们先邀请 5 个玩家入场。
players = [f"p{ i}" for i in range(1, 6)]3、发牌 将玩家和扑克牌列表作为参数,传入发牌器。发牌器在扑克牌中进行不放回抽取,为每个玩家随机抽取 3 张牌,并记下玩家名称及其对应牌组。
def get_pk_lst(pls, pks):result = []for p in pls:pk = sample(pks, 3)for _pk in pk:pks.remove(_pk)result.append({ "name": p, "poker": pk})return resultpokers = list(score_map.keys())# 去掉大小王的一幅扑克poker_grp = get_pk_lst(players, pokers)# 发牌发牌预览如下:
result = [{ 'name': 'p1', 'poker': ['方块5', '梅花3', '方块A']}, { 'name': 'p2', 'poker': ['黑桃4', '方块8', '黑桃J']}, { 'name': 'p3', 'poker': ['红心', '红心K', '方块7']}, { 'name': 'p4', 'poker': ['方块4', '梅花6', '方块J']}, { 'name': 'p5', 'poker': ['红心5', '梅花', '黑桃A']}]
4、判断牌型及算分 在算分之前先按之前的映射字典,将 pk_lst 里的 3 张扑克牌转换成对应的点数。
n_lst = list(map(lambda x: score_map[x], pk_lst))# 点数映射接下来截取花色部分的文本,利用集合去重后判断是否为三张同花。
same_suit = len(set([pk[:2] for pk in pk_lst])) == 1# 是否同花色再对点数部分进行排序,与依靠点数的最值生成的顺序列表进行比较,判断是否为连续的点数。要注意的是,A 与 QKA 一样被视作顺子。
continuity = sorted(n_lst) == [i for i in range(min(n_lst), max(n_lst) + 1)] or set(n_lst) == { , 2, 3}# 是否连续别忘了考虑对子和豹子的检查方式。
check = len(set(n_lst)) # 重复情况
那么正式开始判断牌型和算分吧!首先是单张,非同花、非顺子、三张点数不一。得分以 3 个单张点数相加。
if not same_suit and not continuity and check == 3:return sum(n_lst), "单张"其次是对子,非同花,有且仅有两张点数一致。得分中对于构成对子的部分给予 2 倍奖励。
if not same_suit and check == 2:w = [i for i in n_lst if n_lst.count(i) == 2][0]single = [i for i in n_lst if i != w][0]return w*2*2 + single, "对子"金花,即同花而非顺子,给予 9 倍奖励。
if same_suit and not continuity:return sum(n_lst)*9, "金花"顺子,即点数连续而非同花,给予 倍奖励。
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=豹子,即三张点数一致,这不得刷个 嘛。
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=同花顺,同花色且点数连续,绝了,赌神一个技能 伤害。
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=5、决出胜负 一组玩家、抽牌、算分、牌型记录如下:
pk_grp = [{ 'name': 'p1', 'poker': ['方块5', '梅花3', '方块A'], 'score': , 'type': '单张'}, { 'name': 'p2', 'poker': ['黑桃4', '方块8', '黑桃J'], 'score': , 'type': '单张'}, { 'name': 'p3', 'poker': ['红心', '红心K', '方块7'], 'score': , 'type': '单张'}, { 'name': 'p4', 'poker': ['方块4', '梅花6', '方块J'], 'score': , 'type': '单张'}, { 'name': 'p5', 'poker': ['红心5', '梅花', '黑桃A'], 'score': , 'type': '单张'}]
利用 max 函数找出来谁是最棒的,公布名字!
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=赢家是------ p3
好啦,又可以开始下一场愉快的游戏了~
二、统计及源码
1、牌型统计 进行了 万场游戏并对各类牌型进行频率统计,可见与前述排列组合的计算所得概率基本一致。
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=2、牌局案例 各类牌型的局面和结果如下:
score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount +=3、完整代码
# 炸金花from random import samplefrom collections import Counterdef get_pk_lst(pls, pks):# 发牌result = []for p in pls:pk = sample(pks, 3)for _pk in pk:pks.remove(_pk)result.append({ "name": p, "poker": pk})return resultdef calculate(_score_map, pk_lst):# 返回得分和牌型n_lst = list(map(lambda x: _score_map[x], pk_lst))# 点数映射same_suit = len(set([pk[:2] for pk in pk_lst])) == 1# 是否同花色continuity = sorted(n_lst) == [i for i in range(min(n_lst), max(n_lst) + 1)] or set(n_lst) == { , 2, 3}# 是否连续check = len(set(n_lst))# 重复情况if not same_suit and not continuity and check == 3:return sum(n_lst), "单张"if not same_suit and check == 2:w = [i for i in n_lst if n_lst.count(i) == 2][0]single = [i for i in n_lst if i != w][0]return w*2*2 + single, "对子"if same_suit and not continuity:return sum(n_lst)*9, "金花"if continuity and not same_suit:return sum(n_lst)*, "顺子"if check == 1:return sum(n_lst)*, "豹子"if continuity and same_suit:return sum(n_lst)*, "同花顺"def compare(_score_map, pk_grp):# 比大小for p in pk_grp:p["score"], p["type"] = calculate(_score_map, p["poker"])print("开牌结果------")for p in pk_grp:print(p)print("赢家是------")score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount += print(best)return pk_grpdef show(_score_map, _players): # 开局pokers = list(_score_map.keys())poker_grp = get_pk_lst(_players, pokers)return compare(_score_map, poker_grp)def start_game(_score_map, _players, freq=1): # 游戏和统计type_lst = []for i in range(freq):grp = show(_score_map, _players)type_lst = type_lst + [t["type"] for t in grp]c = Counter(type_lst)print(c)total = sum(c.values())for item in c.items():print(f"{ item[0]}频率:{ item[1]/total:.2%}")if __name__ == '__main__':# 准备扑克牌suit = ["黑桃", "红心", "方块", "梅花"]num = [str(i) for i in range(2, )] + ["J", "Q", "K", "A"]score_map = { }# 单张点数映射表for s in suit:count = 2for n in num:score_map[f"{ s}{ n}"] = countcount += 1# 5个玩家入场players = [f"p{ i}" for i in range(1, 6)]# 开始游戏start_game(score_map, players, freq=)以上就是本次分享的所有内容,想要了解更多欢迎前往公众号:Python 编程学习圈,每日干货分享
原文:/post/