Python彩票前言

参考下面的代码。

玩法可能有问题,主要是不清楚预留牌时输入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))