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))