Python實現撲克24點的小操作!從此我玩24點就沒輸過

Python實現撲克24點的小操作!從此我玩24點就沒輸過

24點遊戲玩法為:從一副撲克中抽取4張牌,對4張牌使用加減乘除中的任何方法,使計算結果為24。 我們用Python來完成24點遊戲的程序設計!!從此站在賭神巔峰 我在拉斯維加斯等你

小編Python學習交流群私信小編“資料”內有Python零基礎視頻教學 爬蟲項目視頻 Django/Flask 視頻 等各種Python技術 歡迎大家加入小編交流群 一起學習進步~

Python實現撲克24點的小操作!從此我玩24點就沒輸過

一、設計思路:

由於設計到了表達式,很自然的想到了是否可以使用表達式樹來設計程序。本程序的確使用了表達式樹,也是程序最關鍵的環節。簡要概括為:先列出所有表達式的可能性,然後運用表達式樹計算表達式的值。程序中大量的運用了遞歸,各個遞歸式不是很複雜,大家耐心看看,應該是能看懂的

表達式樹:

表達式樹的所有葉子節點均為操作數(operand),其他節點為運算符(operator)。由於本例中都是二元運算,所以表達式樹是二叉樹。下圖就是一個表達式樹

Python實現撲克24點的小操作!從此我玩24點就沒輸過

具體步驟:

1、遍歷所有表達式的可能情況

遍歷分為兩部分,一部分遍歷出操作數的所有可能,然後是運算符的所有可能。全排列的計算採用了遞歸的思想

Python實現撲克24點的小操作!從此我玩24點就沒輸過

2、根據傳入的表達式的值,構造表達式樹

由於表達式樹的特點,所有操作數均為葉子節點,操作符為非葉子節點,而一個表達式(例如( ( ( 6 + 4 ) - 2 ) * 3 ) = 24) 只有3個運算符,即一顆表達式樹只有3個非葉子節點。所以樹的形狀只有兩種可能,就直接寫死了

Python實現撲克24點的小操作!從此我玩24點就沒輸過

Python實現撲克24點的小操作!從此我玩24點就沒輸過

Python實現撲克24點的小操作!從此我玩24點就沒輸過

Python實現撲克24點的小操作!從此我玩24點就沒輸過

Python實現撲克24點的小操作!從此我玩24點就沒輸過

3、計算表達式樹的值

也運用了遞歸

Python實現撲克24點的小操作!從此我玩24點就沒輸過

4、輸出所有可能的表達式

還是運用了遞歸


Python實現撲克24點的小操作!從此我玩24點就沒輸過

5、輸出結果

Python實現撲克24點的小操作!從此我玩24點就沒輸過

這樣整個程序就全部完成了

Python實現撲克24點的小操作!從此我玩24點就沒輸過


分享到:


相關文章: