當前位置:成語大全網 - 書法字典 - 如何用python寫壹個撲克和骰子程序,模擬5個骰子的滾動,最多三次,具體要求如下:

如何用python寫壹個撲克和骰子程序,模擬5個骰子的滾動,最多三次,具體要求如下:

參考下面的代碼。

玩法可能有問題,主要是不清楚預留牌時輸入Ace和“Ace Ace”有什麽區別,是壹次性輸入Ace保留所有Ace還是只保留壹個Ace。這個不清楚。看例子,兩種用法都有,我根據輸入保留了幾個。

模擬沒問題,和圖中的結果壹模壹樣。

必須用Python 3。

進口?隨意

進口?收集

_dice_type?=?【‘王牌’,?‘國王’,?女王?傑克嗎?'10',?'9']

_手繪圖?=?收藏。ordered direct([

(‘5 kind’,‘五?的?答?善良’),

(‘4 kind’,‘四?的?答?善良’),

(‘滿’,?滿了?房子’),

(‘直’,?直男),

(‘3 kind’,‘三?的?答?善良’),

(‘2 pair’,‘二?對’),

(' 1pair ','壹?對’),

(‘半身像’,?半身像’),

])

def?_check_hand(骰子):

櫃臺?=?收藏。計數器(骰子)

如果?len(計數器)?==?1:

回歸?5分鐘

sorted5?=?counter.most_common(5)

如果?sorted5[0][1]?==?4:

回歸?4kind

如果?sorted5[0][1]?==?3:

如果?sorted5[1][1]?==?2:

回歸?'滿'

否則:

回歸?3kind

如果?sorted5[0][1]?==?2:

如果?sorted5[1][1]?==?2:

回歸?2對

否則:

回歸?' 1對'

如果?len(計數器)?==?5:

dtype?=?已排序5[0][0]

為了什麽?x?在?排序5:

如果?dtype?!=?x[0]:

破裂

dtype?+=?1

否則:

回歸?直的

回歸?半身像

def?播放():

骰子?=?[]

重試?=?0

什麽時候?真實:

保持?=?5?-?len(骰子)

如果?保持?& lt=?0:

破裂

dices.extend([random.randint(0,5)?為了什麽?x?在?範圍(保持)])

print("The?滾?就是:?{}".格式(

"?"。join([_dice_type[d]?為了什麽?d?在?已排序(骰子)])

))

print("它?是嗎?答?{}".格式(_hand_mapping[_check_hand(骰子)])

如果?重試?& gt?1:

破裂

提示?=?“哪個?骰子?做什麽?妳呢。想要嗎?去哪?保持?為了什麽?那個?{}?滾?”。格式(

“第二”?如果?重試?==?0?不然呢?“第三”

)

什麽時候?真實:

回答?=?輸入(提示)。下部()

如果?回答?==?所有':

破裂

回答?=?[x . capital()?為了什麽?x?在?answer.split()]

如果?設置(回答)。issubset(set(_dice_type)):

破裂

打印(“那個?是嗎?不是嗎?可能嗎?試試?又來了!”)

重試?+=?1

如果?回答?==?所有':

打印(“好的,?完成”)

破裂

tmp?=?骰子

骰子?=?[]

為了什麽?x?在?tmp:

如果?_dice_type[x]?在?回答:

骰子.追加(x)

answer.remove(_dice_type[x])

def?模擬(n,?debug=False):

結果?=?dict . from keys(_ hand _ mapping . keys(),?0)

為了什麽?_?在?範圍(n):

骰子?=?【random.randint(0,5)?為了什麽?x?在?範圍(5)]

如果?調試:

print("DEBUG:",?"?"。join([_dice_type[d]?為了什麽?d?在?已排序(骰子)])

結果[_check_hand(骰子)]?+=?1

為了什麽?k,?v?在?_hand_mapping.items():

cnt?=?結果[k]

打印(" {:& lt;16s}:?{:.2f}%"。格式(v,?100 *計數/n))