Python實現24點遊戲

2021-08-28 15:19:58 字數 4152 閱讀 3253

24點遊戲是經典的紙牌益智遊戲。

我的思路是把這4個數分成2部分,前兩個數一起,後兩個數一起,先計算除前兩個數所有可能的結果和後兩個數所有可能的結果。最後將它們的結果互相計算,結果與24比較,如果等於24則成功。

建立使用者類,整個遊戲的體系就是建立乙個使用者類來儲存使用者的資訊,如姓名,生命值,分數等,在類裡定義函式引導使用者輸入算術式進行遊戲

**如下:

from random import randint

import time

poker_dict =

cal_list =

['+'

,'-'

,'*'

,'/'

]tmp_list1 =

# 存放前兩個數所有計算結果

tmp_list2 =

# 存放後兩個數計算結果

results =

# 存放運算結果=24的所有式子

num_list =

class

user()

:def

__init__

(self, name)

: self.name = name

self.life =

3 self.score =

0 self.nums =

defuser_input

(self)

:return

input

("\n歡迎您"

+ name +

"\n請輸入包含這四個牌的運算表示式(你有60s時間輸入,否則失敗!如果表示式的結果為24,你將贏得該局!)\n"

)def

poker

(self)

:for i in

range(4

):element = randint(1,

13)print

(self.nums)

return self.nums

defjudge

(self)

:while

true

: flag =

true

start_time = time.time(

) str_inp = self.user_input(

) end_time = time.time()if

(end_time-start_time)

<60:

for i in self.nums:

ifstr

(i)not

in str_inp:

flag =

false

print

(flag)

if flag is

true:if

eval

(str_inp)

==24

:print

("恭喜贏得本局勝利!"

) self.score +=

10else

:print

("很遺憾,計算的結果不等於24。"

) self.life -=

1break

else

:print

("輸入的數必須是你的牌數!"

)else

: self.life -=

1print

("您超時了 生命值-1"

)

下面定義的函式就是計算兩個數之間所有可能的計算結果:

def

cal(num_1, num_2, temp_list,

*args)

:for j in cal_list:

if args and

eval

(str

(num_1)

+ j +

str(num_2))==

24:# 如果引數args存在說明是進行最後的運算,需要判斷是否等於24

str(num_1)

+ j +

str(num_2)

)elif

len(args)==0

:# 如果沒有傳入args引數說明只是第一次運算,將結果存入相應的字典就可以

temp_list[

str(num_1)

+ j +

str(num_2)]=

(eval

(str

(num_1)

+ j +

str(num_2)))

ifeval

(str

(num_1)

+ j +

str(num_2))!=

eval

(str

(num_2)

+ j +

str(num_1)):

temp_list[

str(num_2)

+ j +

str(num_1)]=

(eval

(str

(num_2)

+ j +

str(num_1)

))

判斷是否等於24:

def

is24()

: i =

0while i <3:

if i ==0:

# 將前兩個數的所有計算結果以及表示式存入字典

cal(num_list[i]

, num_list[i +1]

, tmp_list1) tmp_list1

else

:# 將後兩個數的所有計算結果以及表示式存入字典

cal(num_list[i]

, num_list[i +1]

, tmp_list2) tmp_list2

i +=

2for i in tmp_list1:

for j in tmp_list2:

# 對這兩個字典進行迴圈,計算這兩個之間所有的結果 如果等於24將其表示式存入results列表

cal(i, j, results,

1)

在main方法裡對使用者例項化並呼叫方法開始遊戲:

if __name__ ==

'__main__'

: name =

input

("請輸入你的名字:"

) user = user(name)

poke = user.poker(

)print

("你抽到的四張牌是:"

)for i in poke:

print

(poker_dict.get(i)

, end=

" "

)while user.life >0:

user.judge(

)print

(num_list)

is24()if

len(results)==0

:print

("這四個數無法組成等於24的算術式"

)else

:print

("您的三次機會用完,下面是所有答案"

)for i in results:

print

(i)

1.使用者勝利:

2.輸入結果不等於24:

3.三次輸入錯誤程式列出所有可能性:

4.超時輸入:

Javascript實現24點遊戲

你有 4 張寫有 1 到 9 數字的牌。你需要判斷是否能通過 的運算得到 241.除法運算子 表示實數除法,而不是整數除法。例如 4 1 2 3 12 2.每個運算子對兩個數進行運算。特別是我們不能用 作為一元運算子。例如,1,1,1,1 作為輸入時,表示式 1 1 1 1 是不允許的 3.你不能將...

Python 「24點遊戲的簡單實現「

問題描述 從撲克中每次取出4張牌。使用加減乘除,第乙個能得出24者為贏。其中,j代表11,q代表12,k代表13,a代表1 按照要求程式設計解決24點遊戲。思路 1 隨機產生四個數 1 13 將其排列組合結果去重新增到乙個列表中 2 列舉計算並去重 3 顯示 author yyx date 2018...

24點遊戲的java實現

1 計算方式的改變 引入分數計算概念 求24點涉及到除法,所以必須轉變直接計算的思路。經過一段時間的摸索,本人發現可以採用分數計算。任何兩個數的計算都可以轉換成對應的分數計算形式。例如 3 8 可以轉換成 3 1 8 1 1.1 待計算數字的初始化 於是待計算的4個值必須先轉換成分數 private...