设为首页 加入收藏

TOP

扑克玩法:9点半--数据分析(二)
2023-07-25 21:27:09 】 浏览:79
Tags:9点半
e(self.abTimes): t = Thread(target=self._thTakeCards, args=()) threads.append(t) t.start() for _ in threads: _.join() # 如果执行了join代码,则主线程会等待所有的子线程全部执行完毕后才会执行后面的代码。 return self.abResult def _DataPersistence(self): data = {self.abPersons: self.abPersons, self.abTimes: self.abTimes, 'Datas': self.abResult} with open(f'data-{self.abPersons}-{self.abTimes}.pik', 'wb') as f: pickle.dump(data, f) def _GetDataFromFile(self): with open(f'data-{self.abPersons}-{self.abTimes}.pik', 'rb') as f: return pickle.load(f)['Datas'] @ftDecTimeIt(1) def mtCreatResult(self): hpn._TakeCards() hpn._DataPersistence() return self.abResult def _IsPair(self, pmCards: tuple): # pmCards:('Kr', '6b') if pmCards[0][0] != pmCards[1][0]: return 0 return 2 if pmCards[0][1] == pmCards[1][1] else 1 def _Point(self, pmCards: tuple): # pmCards:('Kr', '6b') --> 6.5 if self._IsPair(pmCards): return -1 if pmCards[0][0] in ('J', 'Q', 'K'): point1 = 0.5 elif pmCards[0][0] == 'A': point1 = 1 else: point1 = int(pmCards[0][0]) if pmCards[1][0] in ('J', 'Q', 'K'): point2 = 0.5 elif pmCards[1][0] == 'A': point2 = 1 else: point2 = int(pmCards[1][0]) point_temp = point1 + point2 return point_temp if point_temp < 10 else point_temp - 10 def _CombinationFormat(self, pmCards: tuple): # pmCards:('Kr', '6b') --> K6 dct = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '0': 10, 'J': 11, 'Q': 12, 'K': 13, 'A': 14} one = pmCards[0][0] two = pmCards[1][0] return one + two if dct[one] > dct[two] else two + one def _AvgPoint(self, pmCards: list): # pmCards:[('Kr', '6b'), ('6r', '5r'), ('2b', '9r'), ('7b', '5r'), ('7r', '4b')] --> 2.3 points = [self._Point(card) for card in pmCards if self._Point(card) != -1] avg_point = sum(points) / len(points) return float(str(avg_point)[:5]) def _MaxPoint(self, pmCards: list): # pmCards:[('Kr', '6b'), ('6r', '5r'), ('2b', '9r'), ('7b', '5r'), ('7r', '4b')] --> 6.5 points = [self._Point(card) for card in pmCards if self._Point(card) != -1] return max(points) def _MinPoint(self, pmCards: list): # pmCards:[('Kr', '6b'), ('6r', '5r'), ('2b', '9r'), ('7b', '5r'), ('7r', '4b')] --> 1 points = [self._Point(card) for card in pmCards if self._Point(card) != -1] return min(points) def mtAnalysisResult(self): datas = self._GetDataFromFile() datas_len = len(datas) datas_num = datas_len * self.abPersons result = {'总数据量': datas_num, '回合数': datas_len} pair_num = 0 # 对子数量 pair_false_num = 0 # 假对子数量 min_points = [] # 每一回合中最小的点数 max_points = [] # 每一回合中最大的点数,不包括对子 avg_points = [] # 每一回合中平均的点数,不统计对子 round_pairs_num = [] # 每一回合中出现对子的数量,包括真对子和假对子 points = [] # 每一回合,每一个人摸到的所有的点数集合 pairs = [] # 所有的对子 combinations = [] # 所有的组合情况 # 按回合分析 for index in trange(datas_len): # [('Kr', '6b'), ('6r', '5r'), ('2b', '9r'), ('7b', '5r'), ('7r', '4b')] min_points.append(self._MinPoint(datas[index])) max_points.append(self._MaxPoint(datas[index])) avg_points.append(self._AvgPoint(datas[index])) round_pairs_num.append(sum(1 for _ in datas[index] if self._IsPair(_))) # 分析所有 for _ in datas[index]: if self._IsPair(_): if _[1][1] == 'r': pairs.append(_[1] + _[0]) else: pairs.append(_[0] + _[1]) pair_num += 1 if self._IsPair(_) == 1: pair_false_num += 1 points.append(self._Point(_)) combinations.append(self._CombinationFormat(_)) # 按回合显示 print('每回合中最小点数') novel.mtShowWordsFrequency(min
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇记录一次python爬虫模拟登录吧 下一篇Python 内置界面开发框架 Tkinter..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目