You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发6位彩票程序:号码生成、校验、比对兑奖实现咨询

彩票程序后续功能实现方案

前置修正

你之前写的两部分代码有两个小问题需要先调整,不然没法跑通后续逻辑:

  • 随机号码生成函数原来直接打印结果,没有返回值,没法拿到中奖号码做比对,需要把打印逻辑改成返回生成的号码列表
  • 随机数生成的区间写的range(1,59)存在边界错误,Python的range是左闭右开结构,这个写法最大只能生成58,要改成range(1,60)才能覆盖1-59的所有整数

修正后的随机号码生成函数:

import random

def create_winning_numbers():
    return random.sample(range(1, 60), 6)

核心逻辑实现

号码匹配

不需要写多层循环挨个比对,直接把两个号码列表转成集合,求交集的长度就是匹配正确的号码个数,写法简单运行效率也高。

奖金判定

直接按匹配到的号码个数做分支判断,对应给定的奖励规则输出结果就行。

完整可运行代码

import random

def create_winning_numbers():
    return random.sample(range(1, 60), 6)

# 生成中奖号码
winning_numbers = create_winning_numbers()
user_numbers = []

# 用户输入与合法性校验
for i in range(1,7):
    input_valid = False
    while not input_valid:
        number = input(f"请输入第{i}个1-59之间的选号: ")
        if not number.isnumeric():
            print("输入不合法,请输入整数")
            continue
        number = int(number)
        if not 1 <= number <= 59:
            print("输入不合法,请输入1到59之间的数字")
            continue
        if number in user_numbers:
            print("该号码已经选过,请重新输入")
            continue
        user_numbers.append(number)
        input_valid = True

# 号码匹配
match_count = len(set(winning_numbers) & set(user_numbers))

# 结果输出
print(f"\n本期中奖号码:{sorted(winning_numbers)}")
print(f"你的选号:{sorted(user_numbers)}")
print(f"匹配号码个数:{match_count}")

# 奖金判定
if match_count == 6:
    print("恭喜获得JackPot头奖!")
elif match_count == 5:
    print("恭喜获得1000英镑奖励")
elif match_count == 4:
    print("恭喜获得100英镑奖励")
elif match_count == 3:
    print("恭喜获得25英镑奖励")
else:
    print("抱歉,下周再试")

代码里加了sorted()对号码排序,输出的时候更符合日常看彩票号码的习惯,不想要可以直接删掉。

内容的提问来源于stack exchange,提问作者IndinanKing1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:42:21