日历

2019年十一月
« 10月    
 123
45678910
11121314151617
18192021222324
252627282930  

最近评论

    linux企业应用

    python写的一个大乐透蓝区杀号算法,能准就好了

    随便写了一个大乐透蓝区杀号的代码,不准。就当写代码的练习了。

    import urllib.request
    import csv
    import numpy as np
    import pandas as pd

    #将最新一期大乐透的数据下载下来,根据上一起大乐透蓝区的号,计算下一期蓝区可选的号。 #大乐透历史数据是txt格式的,先保存到txt文本中,然后再保存到csv文件中,如果能直接将下载的数据保存到csv文件就更好了。

    print(“downloading with requests”)

    #大乐透历史数据连接如下:

    url = ‘http://e.17500.cn/getData/dlt3.TXT’
    txtfile = urllib.request.urlopen(url)
    data = txtfile.read()
    filepath = ‘d:\dlt3.txt’
    with open(filepath,’wb’) as f:
    f.write(data)

    #将大乐透历史数据写入到csv中

    csvfile = ‘d:\dlt3.csv’
    data_txt = np.loadtxt(filepath,dtype=str,usecols=None)

    #DataFrame会给数据加上行号,

    data_txtDF = pd.DataFrame(data_txt,index=None, columns=None)
    data_txtDF.to_csv(csvfile,sep=’,’,columns=None,header=False)

    def lan_jisuan(row,mo,hongQuZuiDuo):
    #先将CSV文件中的字符数值转换为整型数值
    rowValue = []
    for i in row:
    rowValue.append(int(i))
    #蓝区的号码
    lan_qu = [1,2,3,4,5,6,7,8,9,10,11,12]
    #蓝区杀号:根据上期蓝区2个号计算
    #1、两个号的和+3,如果大于12,则取模10
    #2、两个号的差
    #3、两个号相乘,如果大于12,则取模10
    #4、根据红区5个号,最小值+1,如果大于12,则取模
    he = int(rowValue[5]) + rowValue[6] + 3
    if he > 12:
    he = he % mo
    if he == 0:
    he = mo
    if he in lan_qu:
    lan_qu.remove(he)

    if rowValue[5] > rowValue[6]:
        cha = rowValue[5] - rowValue[6]
    else:
        cha = rowValue[6] - rowValue[5]
    if cha in lan_qu:
        lan_qu.remove(cha)
    
    chengji = rowValue[6] * rowValue[5]
    if chengji > 12:
        chengji = chengji % mo
    if chengji == 0:
        chengji = mo
    if chengji in lan_qu:
        lan_qu.remove(chengji)
    
    zuixiaoshu = min(rowValue[0:5]) + 1
    if zuixiaoshu > 12:
        zuixiaoshu = zuixiaoshu % mo
    if zuixiaoshu == 0:
        zuixiaoshu = mo
    if zuixiaoshu in lan_qu:
        lan_qu.remove(zuixiaoshu)
    
    if hongQuZuiDuo in lan_qu:
        lan_qu.remove(hongQuZuiDuo)
    
    print(lan_qu)
    print('\n')

    with open(csvfile) as csvfile:
    mLines = csvfile.readlines()
    targetLine = mLines[-1]
    shangYiQi=targetLine.split(‘,’)

    hongqu = []
    for row in range(-10,0):
        targetLine = mLines[row]
        a=targetLine.split(',')[3:8]
        for value in a:
            hongqu.append(int(value))
    #print("五分区,最近十期出的多的去掉,出的最多的数是: ")
    hongQuZuiDuo = max(hongqu,key=hongqu.count)
    
    #设置模的值为10,这个mo的取值,根据个人经验来。
    mo = 10
    print("当模 = 10,蓝区可选号码为:")
    lan_jisuan(shangYiQi[3:10],mo,hongQuZuiDuo)

    评论已关闭。