用Python實現撲克24點小遊戲 ,從此我就沒輸過

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

PS注意:在這裡還是提醒下,很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源圈裡面有最新學習資料,如果你想學或者正在學python,可以關注我,後臺私信我 ‘p’ 免費獲取!還有老司機解答哦

一、設計思路:

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

表達式樹:

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

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

具體步驟:

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

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

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

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

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

用Python實現撲克24點小遊戲 ,從此我就沒輸過

模型

用Python實現撲克24點小遊戲 ,從此我就沒輸過

模型

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

3、計算表達式樹的值

也運用了遞歸

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

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

還是運用了遞歸

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

5、輸出結果

用Python實現撲克24點小遊戲 ,從此我就沒輸過

代碼

這樣整個程序就全部完成了,在這裡還是提醒下,很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源圈裡面有最新學習資料,如果你想學或者正在學python,可以關注我,後臺私信我 ‘p’ 免費獲取!還有老司機解答哦

本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。


分享到:


相關文章: