一、需求介绍
该需求主要是分析彩票的历史数据,彩票的名称为:
1、极速飞艇
链接:https://www.dsn665.com/view/jisuft/pk10kai_history.html
2、极速赛车
链接:https://www.dsn665.com/view/jisusaiche/pk10kai.html
客户的需求是根据彩票的前两期的情况,如果存在某个斜着的两个数字相等,那么就买第三期的同一个位置处的彩票,
对于1、,如果相等的数字是:1-5,那就买6-10,如果相等的数字是:6-10,那就买1-5;
对于2、,如果相等的数字是:1-5,那就买1-5,如果相等的数字是:6-10,,那就买6-10。
2、请求头
然后我们在程序中进行代码书写获取数据:
然后进行一定的预处理:
2、开始一天的数据的分析
这里我们直接展示代码:
def reverse_list(lst): """ 准换列表的先后顺序 :param lst: 原始列表 :return: 新的列表 """ return [ele for ele in reversed(lst)] low_list = ["01", "02", "03", "04", "05"] # 设置比较小的数字的列表 high_list = ["06", "07", "08", "09", "10"] # 设置比较大的数字的列表 N = 0 # 设置一个数字N来记录一共有多少期可以购买 n = 0 # 设置一个数字n来记录命中了多少期彩票 record_number = 1 # 设置记录数据的一个判断值 list_data_number = [] # 设置一个空的列表来存储一天之中的连续挂掉的期数 dict_time_record = {} # 设置一个空的字典来存储连挂掉的期数满足所列条件的时间节点 for k in range(1152): # 循环遍历所有的数据点 if k < 1150: new_result1 = reverse_list(new_response["result"]["data"])[k] # 第一期数据 new_result2 = reverse_list(new_response["result"]["data"])[k + 1] # 第二期数据 new_result3 = reverse_list(new_response["result"]["data"])[k + 2] # 第三期数据 data1 = new_result1['preDrawCode'].split(',') # 第一期数据 data2 = new_result2['preDrawCode'].split(',') # 第二期数据 data3 = new_result3['preDrawCode'].split(',') # 第三期数据 for m in range(10): # 通过循环来判断是否满足购买的条件,并且实现一定的功能 if m == 0: if data2[0] == data1[1]: # 如果相等就要结束循环 N += 1 # 可以购买的期数应该要自加一 if (data2[0] in low_list and data3[0] in low_list) or (data2[0] in high_list and data3[0] in high_list): n += 1 # 命中的期数应该要自加一 # 如果命中了的话,本轮结束,开启下一轮 list_data_number.append(record_number) if f"{record_number}" in dict_time_record.keys(): # 如果已经有了这个键,那么值添加时间点 dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:]) else: # 如果没有这个键,那么添加一个键值对,值为一个列表,而且初始化为当前的时间 dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]] record_number = 1 # 初始化下一轮的开始 else: record_number += 1 # 如果没有命中的话,次数就应该要自加一 break # 如果满足相等的条件<i>本文来源gaodai$ma#com搞$$代**码网</i>就要结束循环 elif m == 9: # 与上面差不多的算法 if data2[9] == data1[8]: # 如果相等 N += 1 if (data2[9] in low_list and data3[9] in low_list) or (data2[9] in high_list and data3[9] in high_list): n += 1 list_data_number.append(record_number) if f"{record_number}" in dict_time_record.keys(): dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:]) else: dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]] record_number = 1 else: record_number += 1 break else: # 与上面差不多的算法 if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]: # 如果相等 N += 1 if (data2[m] in low_list and data3[m] in low_list) or (data2[m] in high_list and data3[m] in high_list): n += 1 list_data_number.append(record_number) if f"{record_number}" in dict_time_record.keys(): dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:]) else: dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]] record_number = 1 else: record_number += 1 break print(f"日期:{new_response['result']['data'][0]['preDrawTime'][:10]},总的梯子数为{N}个,一共有{n}次命中,一共有{N - n}次挂了") # 打印时间,以及,可以购买的期数,命中的期数,没有命中的期数 list_data_number.sort() # 按照大小顺序来进行排序 dict_record = {} # 设置空字典进行记录 for i in list_data_number: if f"{i}" in dict_record.keys(): # 判断是否已经有了这个数字? dict_record[f"{i}"] += 1 # 如果有的话,那么就会自加一 else: # 如果没有的话,那么就会创建并且赋值等于 1 dict_record[f"{i}"] = 1 # 创建一个新的字典元素,然后进行赋值为 1 for j in dict_record.keys(): if (int(j) >= 6) and (int(j) < 15): # 实际的结果表明,我们需要的是大于等于6期的数据,而没有出现大于15的数据,因此有这样的一个关系式 print(f"买{j}次才中奖的次数为{dict_record[j]}") # 打印相关信息 print(dict_time_record[j]) str0 = "" for letter in dict_time_record[j]: str0 += letter str0 += ", " print(str0) # 打印相关信息