目录
Python实例题
题目
Python双色球系统
实现思路
- 随机选号:随机生成符合双色球规则的号码,红球是从 1 - 33 中选 6 个不重复的号码,蓝球是从 1 - 16 中选 1 个号码。
- 记录历史开奖号码:将每期的开奖号码存储在一个列表中,方便后续查询和分析。
- 查询历史开奖信息:用户可以输入期数,查看该期的具体开奖号码。
- 号码预测(简单示例):统计历史号码中每个红球和蓝球的出现次数,根据出现频率预测下期可能出现的号码。
代码实现
import random
# 存储历史开奖号码
lottery_history = []
def generate_random_numbers():
"""
生成随机的双色球号码
:return: 包含红球和蓝球的号码列表
"""
red_balls = random.sample(range(1, 34), 6)
red_balls.sort()
blue_ball = random.randint(1, 16)
return red_balls, blue_ball
def record_lottery_result(red_balls, blue_ball):
"""
记录当期的开奖号码
:param red_balls: 红球号码列表
:param blue_ball: 蓝球号码
"""
lottery_history.append((red_balls, blue_ball))
print(f"已记录本期开奖号码:红球 {red_balls},蓝球 {blue_ball}")
def query_lottery_history(index):
"""
查询指定期数的开奖号码
:param index: 期数索引
:return: 该期的开奖号码
"""
if 0 <= index < len(lottery_history):
red_balls, blue_ball = lottery_history[index]
print(f"第 {index + 1} 期开奖号码:红球 {red_balls},蓝球 {blue_ball}")
return red_balls, blue_ball
else:
print("输入的期数无效,请重新输入。")
return None
def predict_numbers():
"""
简单预测下期可能的号码
:return: 预测的红球和蓝球号码列表
"""
red_ball_count = {i: 0 for i in range(1, 34)}
blue_ball_count = {i: 0 for i in range(1, 17)}
for red_balls, blue_ball in lottery_history:
for red_ball in red_balls:
red_ball_count[red_ball] += 1
blue_ball_count[blue_ball] += 1
sorted_red_balls = sorted(red_ball_count.items(), key=lambda x: x[1], reverse=True)
sorted_blue_balls = sorted(blue_ball_count.items(), key=lambda x: x[1], reverse=True)
predicted_red_balls = [ball[0] for ball in sorted_red_balls[:6]]
predicted_blue_ball = sorted_blue_balls[0][0]
return predicted_red_balls, predicted_blue_ball
def main():
while True:
print("\n双色球系统菜单:")
print("1. 生成随机号码")
print("2. 记录开奖号码")
print("3. 查询历史开奖信息")
print("4. 预测下期号码")
print("5. 退出系统")
choice = input("请输入你的选择(1 - 5):")
if choice == '1':
red_balls, blue_ball = generate_random_numbers()
print(f"随机生成的号码:红球 {red_balls},蓝球 {blue_ball}")
elif choice == '2':
red_balls, blue_ball = generate_random_numbers()
record_lottery_result(red_balls, blue_ball)
elif choice == '3':
index = int(input("请输入要查询的期数(从 1 开始):")) - 1
query_lottery_history(index)
elif choice == '4':
if lottery_history:
predicted_red_balls, predicted_blue_ball = predict_numbers()
print(f"预测下期号码:红球 {predicted_red_balls},蓝球 {predicted_blue_ball}")
else:
print("暂无历史开奖信息,无法进行预测。")
elif choice == '5':
print("退出双色球系统。")
break
else:
print("输入无效,请重新输入。")
if __name__ == "__main__":
main()
代码解释
-
generate_random_numbers
函数:- 使用
random.sample
从 1 - 33 中随机选取 6 个不重复的红球号码,并对其进行排序。 - 使用
random.randint
从 1 - 16 中随机选取 1 个蓝球号码。 - 返回包含红球和蓝球的号码列表。
- 使用
-
record_lottery_result
函数:- 将当期的开奖号码(红球和蓝球)添加到
lottery_history
列表中。 - 打印记录信息。
- 将当期的开奖号码(红球和蓝球)添加到
-
query_lottery_history
函数:- 根据用户输入的期数索引,从
lottery_history
列表中获取相应的开奖号码。 - 如果索引有效,打印该期的开奖号码;否则,提示输入无效。
- 根据用户输入的期数索引,从
-
predict_numbers
函数:- 统计历史号码中每个红球和蓝球的出现次数。
- 根据出现次数对红球和蓝球进行排序。
- 选取出现次数最多的 6 个红球和 1 个蓝球作为预测号码。
-
main
函数:- 显示系统菜单,让用户选择操作。
- 根据用户的选择调用相应的函数。
- 当用户选择退出时,结束程序。
运行思路
- 运行脚本:在终端中运行
python double_color_ball_system.py
。 - 选择操作:根据菜单提示输入相应的数字,选择生成随机号码、记录开奖号码、查询历史开奖信息、预测下期号码或退出系统。
- 输入信息:如果选择查询历史开奖信息,需要输入要查询的期数;如果选择预测下期号码,系统会根据历史开奖信息进行简单预测。
注意事项
- 号码预测的局限性:双色球号码的产生是随机的,这里的预测只是基于历史数据的简单统计,不能保证预测结果的准确性。
- 数据存储:代码中使用列表存储历史开奖号码,程序退出后数据会丢失。如果需要长期保存数据,可以考虑使用文件或数据库进行存储。