Python实现扑克24点 ,从此我就没输过。

24点游戏玩法为:从一副扑克中抽取4张牌,对4张牌使用加减乘除中的任何方法,使计算结果为24。 我们用Python来完成24点游戏的程序设计!!从此站在赌神巅峰 我在拉斯维加斯等你


小编Python学习交流群  786735421,水群勿扰 !!!水群勿扰!!!内有Python零基础视频教学  爬虫项目视频 Django/Flask 视频 等各种Python技术 欢迎大家加入小编交流群 一起学习进步~

一、设计思路:

由于设计到了表达式,很自然的想到了是否可以使用表达式树来设计程序。本程序的确使用了表达式树,也是程序最关键的环节。简要概括为:先列出所有表达式的可能性,然后运用表达式树计算表达式的值。程序中大量的运用了递归,各个递归式不是很复杂,大家耐心看看,应该是能看懂的

表达式树:

表达式树的所有叶子节点均为操作数(operand),其他节点为运算符(operator)。由于本例中都是二元运算,所以表达式树是二叉树。下图就是一个表达式树

具体步骤:

1、遍历所有表达式的可能情况

遍历分为两部分,一部分遍历出操作数的所有可能,然后是运算符的所有可能。全排列的计算采用了递归的思想

2、根据传入的表达式的值,构造表达式树

由于表达式树的特点,所有操作数均为叶子节点,操作符为非叶子节点,而一个表达式(例如( ( ( 6 + 4 ) - 2 ) * 3 ) = 24) 只有3个运算符,即一颗表达式树只有3个非叶子节点。所以树的形状只有两种可能,就直接写死了

3、计算表达式树的值

也运用了递归

4、输出所有可能的表达式

还是运用了递归

5、输出结果

这样整个程序就全部完成了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我要 掬一弯明月 照亮我前行的道路 我要 擎一颗明亮的星辰 指引我未来的征程 我要 喝一杯浊酒 行走在诗的海洋 我...
    小匣子精选阅读 238评论 1 4
  • 从领导的视角看自己 宁向东的清华管理学课,与其说是教你如何成为一个好领导,如何管理好你的团队,倒不...
    小米雨路阅读 94评论 0 0
  • 水中花 小时候经常做一个梦,被一个巨人追着跑。藏在哪里都被一双大眼睛所看到,然后不停的躲藏。不停的被追逐,躲着躲...
    孤风炫尘阅读 268评论 0 0