python雙色球號碼最大連開統計
阿新 • • 發佈:2017-08-15
not lis 數字 字典 出現 pen split() nodes adl
q1:雙色球紅球33個裏面任意選1個共33個,看哪個號最近連開的最久統計出來
雙色球往期記錄ssq.txt
=====================
2017093 7 7 9 15 22 27 12
2017092 7 7 19 29 32 33 9
2017091 5 5 10 23 28 29 3
2017090 1 7 10 16 22 33 9
2017089 11 12 13 16 23 25 12
2017088 5 5 18 22 23 29 6
2017087 7 7 13 14 19 28 6
=====================
2017093代表期數,後面代表數字
-------------------------------------------------
1、先每行讀取每期記錄並判斷是否有重復數字,如果有就將對應的 日期、重復數據存放在dic字典裏面
dic ={}#用於存放雙色求每期出現重復號碼 with open(‘C:\\ssq.txt‘) as file: data = file.readlines() #print("*"*30) for nodes in data: node =nodes.split() print("node ===="+str(node)) for i in node: if node.count(i)>1: lst=[] if i not in lst: lst.append(i) dic[node[0]] = lst else: pass else: pass print("dic ======="+str(dic))
2、然後拿出dic所有的value值,存放在一個列表中,然後列表遍歷,找出有相同數字的號碼
lst =[]#用於存放重復的號碼for key in dic: if dic[key]!=[]: lst.append(dic[key]) else: pass print("%%%lst%%=="+str(lst))
3、跟據往期出現相同數據的號碼找出對應的key存放新列表中
for i in range(0,len(lst)-1): for j in range(i+1,len(lst)): cc =list((set(lst[i]).union(set(lst[j])))^(set(lst[i])^set(lst[j])))#判斷往期重號是否有相同的數字 if len(cc)>0: list11= [] print("cc&&&&&&&&"+str(cc)) #flg=True #while flg: #找出重復數字對於的日期 for k,v in dic.items(): #print("KKK=="+str(k)) #print("vvv=="+str(v)) print("KKKKKKKKKKKKKKKKK") print(type(k)) if v == cc: print("&&KK&&"+str(k)+ " "+str(v)) list11.append(k) print("list11==="+str(list11))
4、在新列表排序,相鄰元素求差,並取出最小的差,將vlaue和最小差存放列表中
dic_mix =[] list11.sort()#日期排序 print("list11=XXXXX=="+str(list11)) lkks=[]#用於存放list11.sort日期差 for i in range(0,len(list11)-1): for j in range(i+1,i+2): dd = abs(int(list11[i])-int(list11[j])) if dd not in lkks:#如果最小其數差不在列表中則添加 lkks.append(dd) kk =min(lkks)#找出最新的日期差 dic_mix.append((cc,kk)) else: pass print("dic_mix =="+str(dic_mix))
輸出
dic ======={‘2017093‘: [‘7‘], ‘2017089‘: [‘12‘], ‘2017091‘: [‘5‘], ‘2017087‘: [‘7‘], ‘2017088‘: [‘5‘], ‘2017092‘: [‘7‘]} lst=======[[‘7‘], [‘12‘], [‘5‘], [‘7‘], [‘5‘], [‘7‘]] dic_mix ==[([‘7‘], 1), ([‘5‘], 3), ([‘7‘], 1), ([‘7‘], 1)]
python雙色球號碼最大連開統計