500w.py
from pyCyp import * from tkinter import * from tkinter import ttk #from tkinter import messagebox import itertools urlNewqi = ‘http://kaijiang.500.com/‘ newqi = getNewqi(urlNewqi) url = ‘http://datachart.500.com/ssq/history/newinc/history.php?start=1&end=‘+str(newqi) allDatalist = urlTolist(url)#获取历史数据列表 win = Tk() win.title(‘中国福利彩票--双色球小助手‘) win.geometry(‘620x520+400+200‘) win.resizable(width=False,height=False) #最近开奖信息开始-------------------------------------------------------------------------------- v = StringVar() Label(win,textvariable=v,font=‘none,30‘,relief=GROOVE).grid(row=0,column=0,padx=10,pady=10) v.set(‘开奖信息→‘) h1 = StringVar() Label(win,textvariable=h1,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=1,padx=10,pady=10) h1.set(allDatalist[0][5:7]) h2 = StringVar() Label(win,textvariable=h2,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=2,padx=10,pady=10) h2.set(allDatalist[0][7:9]) h3 = StringVar() Label(win,textvariable=h3,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=3,padx=10,pady=10) h3.set(allDatalist[0][9:11]) h4 = StringVar() Label(win,textvariable=h4,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=4,padx=10,pady=10) h4.set(allDatalist[0][11:13]) h5 = StringVar() Label(win,textvariable=h5,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=5,padx=10,pady=10) h5.set(allDatalist[0][13:15]) h6 = StringVar() Label(win,textvariable=h6,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=0,column=6,padx=10,pady=10) h6.set(allDatalist[0][15:17]) lan = StringVar() Label(win,textvariable=lan,font=‘none,30‘,fg=‘blue‘,relief=RIDGE).grid(row=0,column=7,padx=10,pady=10) lan.set(allDatalist[0][17:19]) qi = StringVar(win,allDatalist[0][:5]) cha = ttk.Combobox(win,textvariable=qi,values=[allDatalist[0][:5],allDatalist[1][:5],allDatalist[2][:5],allDatalist[3][:5], allDatalist[4][:5],allDatalist[5][:5],allDatalist[6][:5],allDatalist[7][:5], allDatalist[8][:5],allDatalist[9][:5],allDatalist[10][:5],allDatalist[11][:5]], state=‘readonly‘,width=8).grid(row=0,column=8) #最近开奖信息结束-------------------------------------------------------------------------------- #机选结果开始------------------------------------------------------------------------------------ hj1 = StringVar() Label(win,textvariable=hj1,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=1,padx=10,pady=10) hj1.set(allDatalist[0][5:7]) hj2 = StringVar() Label(win,textvariable=hj2,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=2,padx=10,pady=10) hj2.set(allDatalist[0][7:9]) hj3 = StringVar() Label(win,textvariable=hj3,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=3,padx=10,pady=10) hj3.set(allDatalist[0][9:11]) hj4 = StringVar() Label(win,textvariable=hj4,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=4,padx=10,pady=10) hj4.set(allDatalist[0][11:13]) hj5 = StringVar() Label(win,textvariable=hj5,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=5,padx=10,pady=10) hj5.set(allDatalist[0][13:15]) hj6 = StringVar() Label(win,textvariable=hj6,font=‘none,30‘,fg=‘red‘,relief=RIDGE).grid(row=1,column=6,padx=10,pady=10) hj6.set(allDatalist[0][15:17]) lanj = StringVar() Label(win,textvariable=lanj,font=‘none,30‘,fg=‘blue‘,relief=RIDGE).grid(row=1,column=7,padx=10,pady=10) lanj.set(allDatalist[0][17:19]) #机选结果结束------------------------------------------------------------------------------------ #列表部分开始------------------------------------------------------------------------------------ group3 = LabelFrame(win,text=‘数据统计列表‘,font=(None ,10),padx=5,pady=5) group3.grid(row=3,column = 0,columnspan=10,padx=10,pady=1) tree = ttk.Treeview(group3,show=‘headings‘,columns=(‘tongji‘,‘h1‘,‘h2‘,‘h3‘,‘h4‘,‘h5‘,‘h6‘,‘lan‘)) tree.column(‘tongji‘,width=70,anchor=‘center‘) tree.heading(‘tongji‘,text=‘统计‘) tree.column(‘h1‘,width=70,anchor=‘center‘) tree.heading(‘h1‘,text=‘红球一号‘) tree.column(‘h2‘,width=70,anchor=‘center‘) tree.heading(‘h2‘,text=‘红球二号‘) tree.column(‘h3‘,width=70,anchor=‘center‘) tree.heading(‘h3‘,text=‘红球三号‘) tree.column(‘h4‘,width=70,anchor=‘center‘) tree.heading(‘h4‘,text=‘红球四号‘) tree.column(‘h5‘,width=70,anchor=‘center‘) tree.heading(‘h5‘,text=‘红球五号‘) tree.column(‘h6‘,width=70,anchor=‘center‘) tree.heading(‘h6‘,text=‘红球六号‘) tree.column(‘lan‘,width=70,anchor=‘center‘) tree.heading(‘lan‘,text=‘蓝球号码‘) #加滚动条 vbar = Scrollbar(group3, orient=VERTICAL) vbar.config(command = tree.yview) tree.configure(yscrollcommand=vbar.set) tree.grid(row=3) vbar.grid(row=3, column=1,sticky=NS) tree.grid() #列表部分开始------------------------------------------------------------------------------------ #统计分析开始-------------------------------------------------------------------------- group = LabelFrame(win,text=‘统计分析,结果将会在下面列表中显示‘,font=(None ,10),padx=5,pady=5) group.grid(row=2,column = 0,columnspan=10,padx=10,pady=3) #清除列表中的内容 def deltree(): items = tree.get_children() for item in items: tree.delete(item) #查询彩票历史数据 def cha(a): deltree() k = 0 for i in allDatalist: tree.insert(‘‘,k,values=(i[0:5],i[5:7],i[7:9],i[9:11],i[11:13],i[13:15],i[15:17],i[17:19])) k+=1 if k == a: break cha(30) #奇偶分析 def jioufenxi(): ji=[] ou=[] for i in range(1,8): jishu = jiou(allDatalist,i,1) ji.append(jishu) for i in range(1,8): oushu = jiou(allDatalist,i,0) ou.append(oushu) deltree() tree.insert(‘‘,0,values=(‘奇数‘,ji[0],ji[1],ji[2],ji[3],ji[4],ji[5],ji[6])) tree.insert(‘‘,1,values=(‘偶数‘,ou[0],ou[1],ou[2],ou[3],ou[4],ou[5],ou[6])) #大小分析 def daxiaofenxi(): da=[] xiao=[] for i in range(1,8): dashu = daxiao(allDatalist,i,1) da.append(dashu) for i in range(1,8): xiaoshu = daxiao(allDatalist,i,0) xiao.append(xiaoshu) #print(xiao) deltree() tree.insert(‘‘,0,values=(‘大于8‘,da[0],da[1],da[2],da[3],da[4],da[5],da[6])) tree.insert(‘‘,1,values=(‘小于9‘,xiao[0],xiao[1],xiao[2],xiao[3],xiao[4],xiao[5],xiao[6])) #次数分析 def cishufenxi(): deltree() ciList = [] k = 0 H = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘,‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘] for s in range(1,8): t = geRelist(allDatalist,s) ciList.append(t) for j in H: tree.insert(‘‘,k,values=(j+‘出现次数‘,sumChu(ciList[0],j),sumChu(ciList[1],j),sumChu(ciList[2],j), sumChu(ciList[3],j),sumChu(ciList[4],j),sumChu(ciList[5],j),sumChu(ciList[6],j))) k+=1 #和值分析 def hezhifenxi(): deltree() k = 0 for i in allDatalist: m = int(i[5:7])+int(i[7:9])+int(i[9:11])+int(i[11:13])+int(i[13:15])+int(i[15:17])+int(i[17:19]) tree.insert(‘‘,k,values=(‘和=‘+str(m),i[5:7],i[7:9],i[9:11],i[11:13],i[13:15],i[15:17],i[17:19])) k+=1 Button(group,text=‘最近30期‘,width = 12,command=lambda:cha(30)).grid(row=0,column=0,padx=10,pady=5) Button(group,text=‘最近50期‘,width = 12,command=lambda:cha(50)).grid(row=0,column=1,padx=10,pady=5) Button(group,text=‘最近100期‘,width = 12,command=lambda:cha(100)).grid(row=0,column=2,padx=10,pady=5) Button(group,text=‘最近500期‘,width = 12,command=lambda:cha(500)).grid(row=0,column=3,padx=10,pady=5) Button(group,text=‘所有历史数据‘,width = 14,command=lambda:cha(len(allDatalist))).grid(row=0,column=4,padx=10,pady=5) Button(group,text=‘奇偶分析‘,width = 12,command=jioufenxi).grid(row=1,column=0,padx=10,pady=5) Button(group,text=‘大小分析‘,width = 12,command=daxiaofenxi).grid(row=1,column=1,padx=10,pady=5) Button(group,text=‘次数分析‘,width = 12,command=cishufenxi).grid(row=1,column=2,padx=10,pady=5) Button(group,text=‘和值分析‘,width = 12,command=hezhifenxi).grid(row=1,column=3,padx=10,pady=5) zhi = StringVar(win,‘蓝色球‘) cihong = ttk.Combobox(group,textvariable=zhi,values=[‘红一球‘,‘红二球‘,‘红三球‘,‘红四球‘,‘红五球‘,‘红六球‘,‘蓝色球‘], state=‘readonly‘,width=10).grid(row=2,column=0) #Button(group,text=‘次期分析‘,width = 14,command=ciqifenxi).grid(row=1,column=4,padx=10,pady=5) hao = StringVar(win,‘01‘) cihao = ttk.Combobox(group,textvariable=hao,values=[‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘,‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘], state=‘readonly‘,width=10).grid(row=2,column=1) #次期分析 def ciqifenxi(): a = zhi.get() d = {‘红一球‘:0,‘红二球‘:1,‘红三球‘:2,‘红四球‘:3,‘红五球‘:4,‘红六球‘:5,‘蓝色球‘:6} b = hao.get() #print(d[a]) deltree() cilist = []#每一个球组成一个列表,一共七个元素 for s in range(1,8): t = geRelist(allDatalist,s) cilist.append(t) t = reNext(cilist[d[a]],b) k = 0 H = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘,‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘] for j in H: h = sumChu(t,j) tree.insert(‘‘,k,values=(b+‘出现后‘,‘下期‘+j+‘出现‘,str(h)+‘次‘)) k+=1 #复式选号 def fushi(): deltree() v = fushixuanhao() for i in range(len(v)): tree.insert(‘‘,i,values=(‘第‘+str(i+1)+‘组‘,v[i][0],v[i][1],v[i][2],v[i][3],v[i][4],v[i][5],v[i][6])) Button(group,text=‘复式选号‘,width = 14,command=fushi).grid(row=1,column=4,padx=10,pady=5) Button(group,text=‘点击统计分析出下一次出现数字的概率‘,width = 30,command=ciqifenxi).grid(row=2,column=3,columnspan=3,padx=10,pady=8) #统计分析结束-------------------------------------------------------------------------- def diJichaxun(): for i in allDatalist: if i[:5]==qi.get(): h1.set(i[5:7]) h2.set(i[7:9]) h3.set(i[9:11]) h4.set(i[11:13]) h5.set(i[13:15]) h6.set(i[15:17]) lan.set(i[17:19]) def jiXuan(): L = reJixuan() hj1.set(L[0]) hj2.set(L[1]) hj3.set(L[2]) hj4.set(L[3]) hj5.set(L[4]) hj6.set(L[5]) lanj.set(L[6][0]) jiXuan() #推荐号码 def tuijian(a): L = tuijianhao(a) hj1.set(L[0]) hj2.set(L[1]) hj3.set(L[2]) hj4.set(L[3]) hj5.set(L[4]) hj6.set(L[5]) lanj.set(L[6]) Button(win,text=‘点击查询‘,width = 10,command = diJichaxun).grid(row=0,column=9,padx=10,pady=10) Button(win,text=‘热号推荐‘,width = 10,command = lambda:tuijian(0)).grid(row=1,column=8,padx=10,pady=10) Button(win,text=‘顺号推荐‘,width = 10,command = lambda:tuijian(1)).grid(row=1,column=9,padx=10,pady=10) Button(win,text=‘机选号码‘,width = 13,command = jiXuan).grid(row=1,column=0,padx=10,pady=10) mainloop()
pyCyp.py
import urllib.request import re import itertools import random #获取500W彩票网站从2003至今的所有双色球数据,返回一个列表 def urlTolist(url): html = urllib.request.urlopen(url).read() html = html.decode(‘utf-8‘) s1 = r‘\d{5}</td><td class="t_cfont2">\d\d</td><td class="t_cfont2">\d\d</td><td class="t_cfont2">\d\d</td><td class="t_cfont2">\d\d</td><td class="t_cfont2">\d\d</td><td class="t_cfont2">\d\d</td><td class="t_cfont4">\d\d</td><td‘ s2 = r‘(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont2">(.*?)</td><td class="t_cfont4">(.*?)</td><td‘ pat1 = re.compile(s1) t1 = pat1.findall(html) allDatalist = [] str1 = ‘‘ for i in t1: pat2 = re.compile(s2) t2 = pat2.findall(i) s = ‘‘.join(itertools.chain(*t2)) allDatalist.append(s) return allDatalist #获取双色球最近一期的期数 def getNewqi(url): html = urllib.request.urlopen(url).read() html = html.decode(‘gbk‘) s1 = r‘<a target="_blank" href="/shtml/ssq/(.*?).shtml">‘ pat = re.compile(s1) t1 = pat.findall(html) return t1[0] #机选号码,返回一个字符串 def reJixuan(): reList=[] H = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘, ‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘] L = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘] hong = random.sample(H,6) lan = random.sample(L,1) hong.sort() reList=hong reList.append(lan) return reList #求奇偶参数一:数据列表;参数二:号码位置;参数三:1为求奇数和 0为求偶数和 def jiou(L,g,t): x = g*2+3 y = x + 2 j = 0 o = 0 for i in L: if int(i[x:y])%2!=0: j+=1 else: o+=1 if t: return j else: return o #求大小参数一:数据列表;参数二:号码位置;参数三:1为大数和 0为小数和 def daxiao(L,g,t): x = g*2+3 y = x + 2 da = 0 xiao = 0 for i in L: if int(i[x:y]) > 8: da+=1 else: xiao+=1 if t: return da else: return xiao #把各个位上的数,返回一个列表 def geRelist(L,g): reList = [] x = g*2+3 y = x + 2 for i in L: reList.append(i[x:y]) return reList #某个字符在列表中出现的次数 def sumChu(L,a): s = 0 for i in L: if i==a: s+=1 return s #根据上期出现的结果把下期出现的数放入列表 #参数L是同一个位置上的号组成的列表 a为本次出现的数 def reNext(L,a): reList = [] t = 1 for i in L: if t >= len(L): break if i==a: reList.append(L[t]) t+=1 return reList #复式选号 def fushixuanhao(): urlNewqi = ‘http://kaijiang.500.com/‘ newqi = getNewqi(urlNewqi) url = ‘http://datachart.500.com/ssq/history/newinc/history.php?start=1&end=‘+str(newqi) allDatalist=urlTolist(url) H = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘,‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘] #deltree() dou = [0,0,0,0,0,0,0]#每个位上出现最多的号 ndou = [0,0,0,0,0,0,0]#每个位下一次出现最多的号 lan = [] hong = [] #m = 0 #次数 cilist = []#每一个球组成一个列表,一共七个元素 for s in range(1,8): m = 0 m2 = 0 g = geRelist(allDatalist,s)#g为红1的列表 for i in H: t = sumChu(g,i) if t > m: m = t dou[s-1]=i n = reNext(g,dou[s-1]) for i in H: t2 = sumChu(n,i) if t2 > m2: m2 = t2 ndou[s-1]=i lan.append(dou[6]) lan.append(ndou[6]) hong = dou[:6]+ndou[:6] hong = list(set(hong)) hong.sort() ## a = [1,2,4,5,6,7,8,9,10] ## b = [11,12] v = [] t = list(itertools.combinations(hong,6)) for i in t: i = list(i) for j in lan: i.append(j) v.append(i) i=i[:6] ## for i in v: ## print(i) return v #推荐号码 def tuijianhao(a): urlNewqi = ‘http://kaijiang.500.com/‘ newqi = getNewqi(urlNewqi) url = ‘http://datachart.500.com/ssq/history/newinc/history.php?start=1&end=‘+str(newqi) allDatalist=urlTolist(url) H = [‘01‘,‘02‘,‘03‘,‘04‘,‘05‘,‘06‘,‘07‘,‘08‘,‘09‘,‘10‘,‘11‘,‘12‘,‘13‘,‘14‘,‘15‘,‘16‘,‘17‘,‘18‘,‘19‘,‘20‘,‘21‘,‘22‘,‘23‘,‘24‘,‘25‘,‘26‘,‘27‘,‘28‘,‘29‘,‘30‘,‘31‘,‘32‘,‘33‘] #deltree() dou = [0,0,0,0,0,0,0]#每个位上出现最多的号 ndou = [0,0,0,0,0,0,0]#每个位下一次出现最多的号 lan = [] hong = [] #m = 0 #次数 cilist = []#每一个球组成一个列表,一共七个元素 for s in range(1,8): m = 0 m2 = 0 g = geRelist(allDatalist,s)#g为红1的列表 for i in H: t = sumChu(g,i) if t > m: m = t dou[s-1]=i n = reNext(g,dou[s-1]) for i in H: t2 = sumChu(n,i) if t2 > m2: m2 = t2 ndou[s-1]=i if a==0: return dou else: return ndou
时间: 2024-10-24 22:05:34