大乐透python预测程序_python简易的大乐透数据获取及初步分析

1 #-*- coding: utf-8 -*-

2 """

3 @auther UKC_unknowcry4 @date 2020-4-185 @desc 简单的彩票分析及ui6 @filename Lottery_ui.py7

8 """

9

10 importos11 importsys12 importdatetime13 importtkinter as tk14 importtkinter.messagebox15 importmatplotlib16 importmatplotlib.pyplot as plt17 importconfigparser18 from tkinter importttk19 from Lottery_data importLottery20 from Lottery_data importLottery_multi21 from matplotlib.pyplot importMultipleLocator22 from matplotlib.backends.backend_tkagg importFigureCanvasTkAgg,NavigationToolbar2Tk23

24 classwindow():25 """

26 界面设计27 """

28 root=None29 menubar=None30 filemenu=None31 windowmenu=None32 statusbar=None33 tabbar=None34 tab_new=None35 tab_history=None36 canvas_number=None37 canvas_position=None38

39 data=None40 data_no=041 data_number=042 data_date_start=043 data_date_end=044 data_sale=045 data_jackpot=046 data_query_no=047 data_query_number=048 data_query_date_start=049 data_query_date_end=050 data_query_sale=051 data_query_jackpot=052 data_newno=053

54 myfont='Arial'

55

56 def __init__(self):57 """

58 切换工作目录为文件目录59 获取最新数据60 加载组件61 """

62 path=os.path.realpath(__file__)63 dirpath=os.path.dirname(path)64 os.chdir(dirpath)65 self.get_data_new()66 self.set_root()67 self.set_statusbar()68 self.update_statusbar('准备中…')69 self.set_menubar()70 self.set_notebookbar()71 self.update_statusbar()72

73 #主窗口

74 defset_root(self):75 self.root=tk.Tk()76 self.root.title('超级大乐透')77 try:78 self.root.iconbitmap('icon.ico')79 except:80 pass

81 try:82 config=configparser.ConfigParser()83 config.read("Lottery_ui.conf")84 #with open("Lottery_ui.conf", "r") as conf:

85 #alignstr=conf.read()

86 alignstr=config.get('window','geometry')87 self.root.geometry(alignstr)88 print(alignstr)89 exceptException as err:90 print(err)91 self.reset_root_geometry()92 self.root.resizable(width=True,height=True)93 self.root.protocol('WM_DELETE_WINDOW',self.quit)94

95 '''控件'''

96 #菜单栏

97 defset_menubar(self):98 self.menubar=tk.Menu(self.root)99 self.set_filemenu()100 self.set_windowmenu()101 self.root.config(menu=self.menubar)102

103 #文件项

104 defset_filemenu(self):105 self.filemenu=tk.Menu(self.menubar)106 self.save=tk.Menu(self.filemenu)107 self.save.add_command(label='按数分析',font=self.myfont,command=self.save_number)108 self.save.add_command(label='按位分析',font=self.myfont,command=self.save_position)109 self.filemenu.add_cascade(label='图片另存为',font=self.myfont,menu=self.save)110 self.filemenu.add_command(label='退出',font=self.myfont,command=self.quit)111 self.menubar.add_cascade(label='文件',font=self.myfont,menu=self.filemenu)112

113 #窗口项

114 defset_windowmenu(self):115 self.windowmenu=tk.Menu(self.menubar)116 self.windowmenu.add_command(label='重置',font=self.myfont,command=self.reset_root_geometry)117 self.menubar.add_cascade(label='窗口',font=self.myfont,menu=self.windowmenu)118

119 #状态栏

120 defset_statusbar(self):121 self.statusbar=tk.Label(self.root,text='状态',font=self.myfont,bd=1,relief=tk.SUNKEN,anchor=tk.W)122 self.statusbar.pack(side=tk.BOTTOM,fill=tk.X)123

124 #标签页

125 defset_notebookbar(self):126 self.tab=ttk.Notebook(self.root)127 self.set_tab_new()128 self.set_tab_history()129 self.set_tab_number()130 self.set_tab_position()131 self.tab.pack(expand=True,fill='both')132 self.tab.select(self.tab_new)133

134 #标签页-最新数据

135 defset_tab_new(self):136 self.tab_new=tk.Frame(self.tab,bg='blue')137 self.tab.add(self.tab_new,text='现在')138 self.fill_tab_new()139

140 #标签页-历史数据查询

141 defset_tab_history(self):142 self.tab_history=tk.Frame(self.tab,bg='red')143 self.tab.add(self.tab_history,text='历史')144 self.fill_tab_history()145

146 #标签页-按数分析

147 defset_tab_number(self):148 self.tab_number=tk.Frame(self.tab)149 self.tab.add(self.tab_number,text='按数分析')150 self.fill_tab_number()151

152 #标签页-按位分析

153 defset_tab_position(self):154 self.tab_position=tk.Frame(self.tab)155 self.tab.add(self.tab_position,text='按位分析')156 self.fill_tab_position()157

158 #小部件

159 #填充最新页

160 deffill_tab_new(self):161 self.tab_new_no=tk.Label(self.tab_new,text='第'+str(self.data_no)+'期',bg='orange',font=(self.myfont, 14))162 self.tab_new_no.pack(side='top',fill='x')163 if type(self.data_number)==tuple:164 self.tab_new_number=tk.Label(self.tab_new,text='开奖号码'+'{0}-{1}-{2}-{3}-{4}-{5}-{6}'.format(self.data_tmp_number[0], \165 self.data_tmp_number[1],self.data_tmp_number[2],self.data_tmp_number[3],self.data_tmp_number[4], \166 self.data_tmp_number[5],self.data_tmp_number[6]),bg='pink',font=(self.myfont, 14))167 else:168 tkinter.messagebox.showerror('error','数据错误')169 self.tab_new_number=tk.Label(self.tab_new,text='开奖号码'+str(self.data_number),bg='pink',font=(self.myfont, 14))170 self.tab_new_number.pack(side='top',fill='x')171 self.tab_new_date_start=tk.Label(self.tab_new,text='开奖日期'+str(self.data_date_start),bg='pink',font=(self.myfont, 14))172 self.tab_new_date_start.pack(side='top',fill='x')173 self.tab_new_date_end=tk.Label(self.tab_new,text='兑奖截止'+str(self.data_date_end),bg='pink',font=(self.myfont, 14))174 self.tab_new_date_end.pack(side='top',fill='x')175 self.tab_new_sale=tk.Label(self.tab_new,text='销售金额'+str(self.data_sale)+'亿',bg='pink',font=(self.myfont, 14))176 self.tab_new_sale.pack(side='top',fill='x')177 self.tab_new_jackpot=tk.Label(self.tab_new,text='奖池滚存'+str(self.data_jackpot)+'亿',bg='pink',font=(self.myfont, 14))178 self.tab_new_jackpot.pack(side='top',fill='x')179

180 #填充历史页

181 deffill_tab_history(self):182 self.tab_history_query=tk.Frame(self.tab_history,bg='blue')183 self.tab_history_query.pack(side='top',fill='x')184 self.tab_history_label=tk.Label(self.tab_history_query,text='输入期号',bd=1,font=self.myfont)185 self.tab_history_label.pack(side='left')186 self.tab_history_btn=tk.Button(self.tab_history_query,text='搜索',bd=1,font=self.myfont,command=lambda:self.tab_history_search(self.tab_history_entry.get()))187 self.tab_history_btn.pack(side='right')188 self.tab_history_entry=tk.Entry(self.tab_history_query,bd=3,font=self.myfont)189 self.tab_history_entry.pack(side='left',fill='x')190 self.tab_history_frame=tk.Frame(self.tab_history,bg='pink')191 self.tab_history_frame.pack(side='top',fill='x')192 self.tab_history_no=tk.Label(self.tab_history_frame,text='第'+str(self.data_query_no)+'期',bg='orange',font=(self.myfont, 14))193 self.tab_history_no.pack(side='top',fill='x')194 self.tab_history_number=tk.Label(self.tab_history_frame,text='开奖号码'+str(self.data_query_number),bg='pink',font=(self.myfont, 14))195 self.tab_history_number.pack(side='top',fill='x')196 self.tab_history_date_start=tk.Label(self.tab_history_frame,text='开奖日期'+str(self.data_query_date_start),bg='pink',font=(self.myfont, 14))197 self.tab_history_date_start.pack(side='top',fill='x')198 self.tab_history_date_end=tk.Label(self.tab_history_frame,text='兑奖截止'+str(self.data_query_date_end),bg='pink',font=(self.myfont, 14))199 self.tab_history_date_end.pack(side='top',fill='x')200 self.tab_history_sale=tk.Label(self.tab_history_frame,text='销售金额'+str(self.data_query_sale)+'亿',bg='pink',font=(self.myfont, 14))201 self.tab_history_sale.pack(side='top',fill='x')202 self.tab_history_jackpot=tk.Label(self.tab_history_frame,text='奖池滚存'+str(self.data_query_jackpot)+'亿',bg='pink',font=(self.myfont, 14))203 self.tab_history_jackpot.pack(side='top',fill='x')204

205 #填充按数分析

206 deffill_tab_number(self):207 self.tab_number_query=tk.Frame(self.tab_number,bg='blue')208 self.tab_number_query.pack(side='top',fill='x')209 self.tab_number_label=tk.Label(self.tab_number_query,text='最近',bd=1,font=self.myfont)210 self.tab_number_label.pack(side='left')211 self.tab_number_btn=tk.Button(self.tab_number_query,text='生成',bd=1,font=self.myfont,command=self.tab_number_search)212 self.tab_number_btn.pack(side='right')213 self.tab_number_entry=tk.Entry(self.tab_number_query,bd=3,font=self.myfont)214 self.tab_number_entry.pack(side='left',fill='x')215 self.tab_number_label2=tk.Label(self.tab_number_query,text='期',bd=1,font=self.myfont)216 self.tab_number_label2.pack(side='left')217 self.tab_number_frame=tk.Frame(self.tab_number,bg='pink')218 self.tab_number_frame.pack(side='top',fill='both')219

220 #填充按位分析

221 deffill_tab_position(self):222 self.tab_position_query=tk.Frame(self.tab_position,bg='blue')223 self.tab_position_query.pack(side='top',fill='x')224 self.tab_position_label=tk.Label(self.tab_position_query,text='最近',bd=1,font=self.myfont)225 self.tab_position_label.pack(side='left')226 self.tab_position_btn=tk.Button(self.tab_position_query,text='生成',bd=1,font=self.myfont,command=self.tab_position_search)227 self.tab_position_btn.pack(side='right')228 self.tab_position_entry=tk.Entry(self.tab_position_query,bd=3,font=self.myfont)229 self.tab_position_entry.pack(side='left',fill='x')230 self.tab_position_label=tk.Label(self.tab_position_query,text='期',bd=1,font=self.myfont)231 self.tab_position_label.pack(side='left')232 self.tab_position_frame=tk.Frame(self.tab_position,bg='pink')233 self.tab_position_frame.pack(side='top',fill='both')234

235 '''事件'''

236

237 #重置窗口大小和位置

238 defreset_root_geometry(self):239 width=380

240 height=300

241 screenwidth=self.root.winfo_screenwidth()242 screenheight=self.root.winfo_screenheight()243 alignstr='{}x{}+{}+{}'.format(width,height,int((screenwidth-width)/2),int((screenheight-height)/2))244 self.root.geometry(alignstr)245 config=configparser.ConfigParser()246 config['window']={'geometry':'{}'.format(self.root.geometry())}247 with open("Lottery_ui.conf", "w") as conf:248 config.write(conf)249

250 #查询某期,并重新填充历史页

251 deftab_history_search(self,no):252 self.update_statusbar('查询中…')253 ifself.get_data_single(no):254 self.tab_history_no['text']='第'+'{:0^4}'.format(self.data_tmp_no)+'期'

255 self.tab_history_number['text']='开奖号码'+'{0}-{1}-{2}-{3}-{4}-{5}-{6}'.format(self.data_tmp_number[0],self.data_tmp_number[1], \256 self.data_tmp_number[2],self.data_tmp_number[3],self.data_tmp_number[4],self.data_tmp_number[5],self.data_tmp_number[6])257 self.tab_history_date_start['text']='开奖日期'+'{}'.format(self.data_tmp_date_start)258 self.tab_history_date_end['text']='兑奖截止'+'{}'.format(self.data_tmp_date_end)259 self.tab_history_sale['text']='销售金额'+'{}'.format(self.data_tmp_sale)+'亿'

260 self.tab_history_jackpot['text']='奖池滚存'+'{}'.format(self.data_tmp_jackpot)+'亿'

261 self.update_statusbar()262 else:263 tkinter.messagebox.showerror('error','数据错误')264 self.update_statusbar('就绪')265

266 #生成按数分析的图形

267 deftab_number_search(self):268 self.update_statusbar('生成中…')269 self.tab_number_frame.destroy()270 self.tab_number_frame=tk.Frame(self.tab_number,bg='pink')271 self.tab_number_frame.pack(side='top',fill='both')272 no_number=str(self.tab_number_entry.get())273 ifno_number.isdigit():274 nums=self.get_number_rate(int(no_number))275 self.draw_number_rate(nums)276 self.update_statusbar()277 else:278 tkinter.messagebox.showerror('error','输入数字')279 self.update_statusbar('就绪')280

281 #生成按位分析的图形

282 deftab_position_search(self):283 self.update_statusbar('生成中…')284 self.tab_position_frame.destroy()285 self.tab_position_frame=tk.Frame(self.tab_position,bg='pink')286 self.tab_position_frame.pack(side='top',fill='both')287 pos=str(self.tab_position_entry.get())288 ifpos.isdigit():289 nums=self.get_number_line(no_number=int(pos))290 self.draw_number_line(nums)291 self.update_statusbar()292 else:293 tkinter.messagebox.showerror('error','输入正确的期号')294 self.update_statusbar('就绪')295

296 #保存按数分析的图形

297 defsave_number(self):298 fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("PNG", ".png")])299 if fname !=None and fname!='':300 filename, _ =os.path.splitext(fname)301 self.canvas_number.print_png('{}.png'.format(str(filename)))302

303 #保存按位分析的图形

304 defsave_position(self):305 fname = tkinter.filedialog.asksaveasfilename(title=u'保存文件', filetypes=[("PNG", ".png")])306 if fname !=None and fname!='':307 filename, _ =os.path.splitext(fname)308 self.canvas_position.print_png('{}.png'.format(str(filename)))309

310 #退出

311 defquit(self):312 quit=tkinter.messagebox.askokcancel('tip','sure to exit?')313 if quit ==True:314 self.update_statusbar('退出…')315 config=configparser.ConfigParser()316 config['window']={'geometry':'{}'.format(self.root.geometry())}317 with open("Lottery_ui.conf", "w") as conf:318 #conf.write(self.root.geometry())

319 config.write(conf)320 self.root.destroy()321 sys.exit(0)322

323 '''操作'''

324 #更新状态栏

325 def update_statusbar(self,text='就绪'):326 self.statusbar['text']=str(text)327 self.statusbar.update()328 print(self.statusbar['text'])329

330 #数据

331 #获取最新数据

332 defget_data_new(self):333 """

334 :return: bool335 """

336 flag=self.get_data_newno()337 ifflag:338 flag=self.get_data_single(no=self.data_newno)339 ifflag:340 self.data_no=self.data_tmp_no341 self.data_number=self.data_tmp_number342 self.data_date_start=self.data_tmp_date_start343 self.data_date_end=self.data_tmp_date_end344 self.data_sale=self.data_tmp_sale345 self.data_jackpot=self.data_tmp_jackpot346 returnTrue347 else:348 returnFalse349 else:350 returnFalse351

352 #获取指定某期数据

353 defget_data_single(self,no):354 """

355 :param no: 期号356 :return: bool357 """

358 flag,lot=Lottery().data_single(no)359 if flag==False:360 returnFalse361 self.data_tmp_no=lot[0]362 self.data_tmp_number=lot[1]363 self.data_tmp_date_start=lot[2]364 self.data_tmp_date_end=lot[3]365 self.data_tmp_sale=lot[4]366 self.data_tmp_jackpot=lot[5]367 if self.data_tmp_number!=None:368 returnTrue369 else:370 returnFalse371

372 #获取最新期号

373 defget_data_newno(self):374 """

375 :return: bool376 """

377 flag,newno=Lottery().get_newno()378 if flag==False:379 returnFalse380 else:381 self.data_newno=int(newno)382 returnTrue383

384 #获取多期数据

385 defget_data_multi(self,number):386 """

387 :param number: 期数量388 :return: 开奖号码389 """

390 lotm=Lottery_multi(number,max_workers=7)391 lotm.data_multi()392 datas=lotm.get_list()393 numbers=[]394 for data indatas:395 numbers.append(data[1])396 for number innumbers:397 print(number)398 returnnumbers399

400 #按频次分析号码

401 defget_number_rate(self, no_number):402 """

403 :param no_number: 期数量404 :return: 按顺序的号码频次405 """

406 nums=[]407 for _ in range(35):408 nums.append(0)409 numbers=self.get_data_multi(no_number)410 for number innumbers:411 for i innumber:412 nums[int(i)-1]=nums[int(i)-1]+1

413 print(nums)414 returnnums415

416 #按各个位置的号码分析

417 defget_number_line(self,no_number):418 """

419 :param no_number: 期数量420 :return: 各个位置的号码变化421 """

422 nums=[[],[],[],[],[],[],[]]423 numbers=self.get_data_multi(no_number)424 for i inrange(len(numbers)):425 for j in range(7):426 nums[j].append(int(numbers[i][j]))427 print(nums)428 returnnums429

430 #图形

431 #生成频次图

432 defdraw_number_rate(self,nums):433 """

434 :param nums: 数据列表435 """

436 self.figure_number=plt.figure()437 plt.barh(range(35),nums,height=0.8,color='steelblue',alpha=0.8)438 plt.yticks(range(35),list(range(1,36)))439 for x,y inenumerate(nums):440 plt.text(y,x,'{}'.format(y))441 #plt.show()

442 self.canvas_number=FigureCanvasTkAgg(self.figure_number,self.tab_number_frame)443 self.canvas_number.draw()444 self.canvas_number.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=1)445

446 #生成折线图

447 defdraw_number_line(self,nums):448 """

449 :param nums: 数据列表450 """

451 self.figure_position=plt.figure()452 plt.plot(nums[0],label='1')453 plt.plot(nums[1],label='2')454 plt.plot(nums[2],label='3')455 plt.plot(nums[3],label='4')456 plt.plot(nums[4],label='5')457 plt.plot(nums[5],label='6')458 plt.plot(nums[6],label='7')459 plt.legend(loc='best')460 ax=plt.gca()461 ax.xaxis.set_major_locator(MultipleLocator(1))462 ax.yaxis.set_major_locator(MultipleLocator(1))463 self.canvas_position=FigureCanvasTkAgg(self.figure_position,self.tab_position_frame)464 self.canvas_position.draw()465 self.canvas_position.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=1)466

467

468 '''外部调用'''

469 #运行

470 defrun(self):471 self.root.mainloop()472

473 if __name__ == "__main__":474 w=window()475 w.run()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 大乐透是一种中国彩票,经常吸引着很多人的关注和参与。为了提高中奖的机会,一些人开始使用Python编程语言来开发预测大乐透号码的程序大乐透预测程序主要通过分析历史数据和统计学方法来预测下一期的中奖号码。首先,程序会收集大乐透的历史开奖数据,包括中奖号码、奖金等级以及开奖日期。然后,程序使用Python中的数据处理和分析库,对这些数据进行清洗和整理。 接下来,程序会运用数据分析方法,例如频率分析和概率模型,来寻找大乐透中的规律和趋势。例如,程序可以统计每个号码出现的频率,找出出现最多次数的号码,并根据这些数据进行预测程序还可以分析每个号码在不同奖金等级中的中奖情况,进一步优化预测结果。 在预测过程中,程序还会考虑一些常见的号码组合模式,如连号、重号等。通过分析历史数据中这些模式的出现频率,程序能够判断它们在下一期中的可能性。 预测结果会以推荐号码的形式呈现给用户。用户可以根据这些推荐号码来选择购买彩票,增加中奖的概率。然而,需要明确的是,大乐透预测程序并不能完全准确地预测中奖号码,它只是通过分析历史数据来提供一些可能的参考。 总的来说,大乐透python预测程序通过利用Python编程语言以及数据分析方法,对历史数据进行分析预测,帮助用户在购买彩票时做出更明智的选择,提高中奖的机会。 ### 回答2: 大乐透预测程序是使用Python编写的一种工具,旨在帮助用户预测大乐透彩票的开奖号码。这个程序的设计基于大乐透彩票的规则和历史数据分析。 首先,该程序会收集大乐透历史开奖数据。然后,它会对这些历史数据进行分析和处理,以发现可能的模式和规律。程序会使用数学和统计的方法,如概率分析、趋势分析等,来研究历史开奖号码的分布情况。 接下来,该程序会根据分析结果生成预测号码。它会通过对历史数据分析,查找重复出现的组合、高频出现的数字等。然后,基于这些发现的模式,程序会生成一组有可能出现在下一期开奖号码中的数字。 需要明确的是,大乐透预测程序只是一种辅助工具,并不能保证100%准确地预测中奖号码。彩票的开奖结果是随机的,受到众多因素的影响。预测程序只能通过分析历史数据,找出一些有可能发生的模式,但不能保证这些模式一定会出现在未来的开奖号码中。 因此,使用大乐透预测程序的用户应该理性对待预测结果,不要将其作为购买彩票的唯一依据。同时,购买彩票应该注意风险,不能过度依赖于预测程序。与此同时,了解并遵守当地彩票相关规定,以合理的方式享受购彩乐趣。 ### 回答3: 大乐透是一种中国彩票游戏,参与者需要从1至35的红色球和1至12的蓝色球中选择号码,然后等待开奖结果。为了提高中奖几率,可以利用Python编写一个预测程序。 首先,我们需要收集大乐透历史开奖数据。可以通过网上彩票数据网站或者官方提供的开奖结果进行收集。将数据保存在合适的数据结构中,如列表或数组。 然后,可以使用Python的统计分析模块,如NumPy或Pandas,对历史数据进行分析。可以计算每个号码出现的频率,以及红球和蓝球的组合模式。 接下来,可以根据历史数据中出现频率较高的号码进行预测。可以根据红球和蓝球的频率,选择最有可能出现的号码进行投注。还可以根据历史数据中的模式,如连号或分布规律,进行预测。 在编写预测程序时,可以使用随机数生成器模块来模拟彩票机选号码的功能。通过随机选择历史数据中出现频率较高的号码,可以使得预测结果更加有趣和具有参考价值。 最后,需要注意的是,彩票是一种随机游戏,没有绝对的预测方法。即使利用Python编写了预测程序,也不能保证100%的中奖几率。因此,在参与彩票游戏时,还是要以娱乐为主,理性购买,并注意不要过度投注。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值