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

如何用Python实现可判断中奖结果及次数的抽奖程序

实现思路与修正代码

现有代码问题

  • 生成的随机数范围是range(1,90),只能取到1~89,遗漏了90
  • 直接打印生成的随机数行,没有存储整个网格的数据,后续无法做存在性校验
  • 循环逻辑冗余,可直接用更简洁的方式生成5x5网格

核心实现逻辑

  1. 先校验获取用户输入的1~90范围内的整数
  2. 生成5x5网格时把数据存入二维列表,方便后续遍历校验
  3. 遍历整个二维列表,统计用户输入数字的出现次数
  4. 打印网格和最终中奖结果

修正后可运行代码

import random

# 1. 获取用户合法输入
while True:
    try:
        user_num = int(input("请输入1~90之间的数字:"))
        if 1 <= user_num <= 90:
            break
        print("输入超出范围,请重新输入")
    except ValueError:
        print("输入不是有效数字,请重新输入")

# 2. 生成5x5不重复随机数网格(如果允许重复可调整为逐行生成)
all_nums = random.sample(range(1, 91), k=25)
grid = [all_nums[i*5 : (i+1)*5] for i in range(5)]

# 3. 统计数字出现次数
count = 0
for row in grid:
    if user_num in row:
        count += row.count(user_num)

# 4. 打印网格和结果
print("\n生成的5x5网格如下:")
for row in grid:
    print(row)

if count > 0:
    print(f"\n恭喜中奖!你选择的数字{user_num}共出现了{count}次")
else:
    print(f"\n很遗憾,你选择的数字{user_num}未在网格中出现,未中奖")

逻辑说明

  • 如果你允许网格中出现重复数字,把生成网格的代码替换为逐行生成即可:
grid = []
for _ in range(5):
    grid.append(random.sample(range(1,91), k=5))
  • 统计逻辑也可以简化为单行写法:count = sum(row.count(user_num) for row in grid)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:54:05