1 #!/usr/bin/env python
2 #-*- coding: utf-8 -*-
3 #@File : DoubleColorBall.py
4 #@Author: xuemin.feng
5 #@Date : 2019/7/15
6
7 """
8 已知以下几期双色球号码(最后一个数字为蓝球),9 2019080 03 06 08 20 24 32 0710 2019079 01 03 06 09 19 31 1611 2019078 01 17 27 29 31 33 1212 2019077 09 11 13 18 21 22 1513 2019076 12 15 19 20 29 32 1414 2019075 05 08 20 22 31 33 0315 2019074 12 21 27 29 31 33 0416 2019073 01 02 06 12 16 18 0817 2019072 02 09 13 15 22 30 1518 2019071 01 08 19 24 29 30 0419
20 要求:21 一、运行后展示:22 1.查询双色球号码:23 2.查询出现号码次数24 3.输入新号码25 q.退出26
27 如果输入1:28 1.201908029 2.201907930 3.·····(效果同上)31 q.退出32 输入号码后展示对应的结果;如果号码不存在或者非数字提示请重新输入33
34 如果输入235 结果展示 红球中各个号码出现的次数、蓝球中各个号码出现的次数;36
37 如果输入3(附加题,选做)38 新增的号码支持前面功能 1、2;退出后新增的号码不会保存;如果输入非数字或红球大于33 蓝球大于16 提示请重新输入39 如果输入q 退出40
41 思路:42 1、拆成dict{"2019071":"01 08 19 24 29 30 04",,,,,,,},根据key取value43 2、红球、篮球分别放list里,遍历记录次数44 """
45
46
47 #将原始字符串变换为list,再转换成dict,方便按期数取值
48 defballs2dict():49 s1 = "2019080 03 06 08 20 24 32 07"
50 s2 = "2019079 01 03 06 09 19 31 16"
51 s3 = "2019078 01 17 27 29 31 33 12"
52 s4 = "2019077 09 11 13 18 21 22 15"
53 s5 = "2019076 12 15 19 20 29 32 14"
54 s6 = "2019075 05 08 20 22 31 33 03"
55 s7 = "2019074 12 21 27 29 31 33 04"
56 s8 = "2019073 01 02 06 12 16 18 08"
57 s9 = "2019072 02 09 13 15 22 30 15"
58 s10 = "2019071 01 08 19 24 29 30 04"
59 #先转换成list
60 balllist =[s1, s2, s3, s4, s5, s6, s7, s8, s9, s10]61
62 #根据题意,转换成dict,方便根据期数取值
63 balldict =[]64 for i inrange (len (balllist)):65 dic = {balllist[i][:7]: balllist[i][8:]}66 balldict.append (dic)67
68 returnballdict69
70 #取出key生成列表,按期数倒序
71 defgetKeys():72 balldict =balls2dict ()73 keys =[]74 for i inrange (len (balldict)):75 keys.append (balldict[i].keys ())76 keys.sort (reverse=True)77 returnkeys78
79 #根据输入数字,输出期数
80 deffromNum2Key():81 num_date =[]82 keys =getKeys ()83 for i inrange (len (keys)):84 num_date.append (str (i + 1) + "." + str (keys[i]).replace ("['", "").replace ("']", ""))85 printnum_date[i]86
87 #将红篮球拆分,分别计算重复次数
88 defgetValues():89 balldict =balls2dict ()90 values =[]91 redballs =[]92 blueballs =[]93
94 #将每组红蓝球放一个集合
95 for i inrange (len (balldict)):96 values.append (str (balldict[i].values ()).replace ("['", "").replace ("']", "").split (" "))97 #return values
98
99 #将所有红球放一个大集合,准备计算次数
100 for i in range (10):101 for j in range (6):102 redballs.append (values[i][j])103 printredballs104
105 #红球出现的次数(网上查的set去重方法,简单的一笔,sorted排序)
106 redballs_set =sorted (set (redballs))107
108 for redball inredballs_set:109 print ("红球 %s 出现过 %s 次" %(redball, redballs.count (redball)))110
111 #篮球出现的次数
112 for i in range (10):113 for j in range (7, 8):114 blueballs.append (values[i][j])115 #print blueballs
116 blueballs_set =sorted (set (blueballs))117 for blueball inblueballs_set:118 print ("蓝球 %s 出现过 %s 次" %(blueball, blueballs.count (blueball)))119
120 defentranceEx():121 whileTrue:122 one = raw_input ("1.查询双色球号码:" + "\n" + "2.查询出现号码次数" + "\n" + "3.输入新号码" + "\n" + "q.退出" + "\n" + "输入以上序号进入:")123 if one == 'q':124 exit ()125 elif int (one) == 1:126 fromNum2Key ()127 two = input ("#输入序号查看开奖结果:")128 balldict =balls2dict ()129 two_value = str (balldict[two - 1].values ()).replace ("['", "").replace ("']", "")130 print two_value + "\n" + "---------------------" + "\n"
131 elif int (one) == 2:132 #print "TODO-查询出现号码次数"
133 getValues ()134 print "---------------------" + "\n"
135
136 elif int (one) == 3:137 print "TODO-输入新号码"
138 print "---------------------" + "\n"
139
140 else:141 print "#输入有误"
142
143 if __name__ == '__main__':144 #print balls2dict()
145 #print fromNum2Key()
146 printgetValues()147 #print entranceEx ()