鱼C论坛

 找回密码
 立即注册
查看: 55|回复: 1

[作品展示] 模拟双色球摇奖,看看多少次能摇中你自选的号码。

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
突发奇想,就像看看自己买的双色球有没有中奖的命。拿去玩玩吧。
import random

def shuangseqiu():
    # 从数字1-33中随机抽取6个号码,作为红球并将其按从小到大排序
    redball_list = random.sample(range(1, 34), 6)
    redball_list.sort()
    # 从数字1-16中随机抽取1个号码,并将其作为蓝球
    blueball = random.sample(range(1, 17), 1)
    blueball_list =list(blueball)
    # 将红球列表和蓝球返回
    return redball_list, blueball_list

def zixuannumber():
    redballzixuan_list = []
    for i in range(6):
        redballzixuan_list.append(int(input(f"请输入第{i+1}个红球号码:")))
    blueballzixuan = int(input("请输入蓝球号码:"))
    blueballzixuan_list = [blueballzixuan]
    return redballzixuan_list, blueballzixuan_list

# 主程序
print("欢迎来到双色球游戏!")
print("请输入1开始自选双色球号码,2开始随机号码:")
choice = int(input())
if choice == 1:
    print("自选号码:红球6个,篮球1个, 红球范围1-33,蓝球范围1-16,红球需按顺序填写")
    zixuan_number = zixuannumber()
elif choice == 2:
    print("系统为你随机选择号码:红球6个,篮球1个")
    zixuan_number = shuangseqiu()
else:
    print("输入错误,程序自动退出")
    exit()
print("本次你选择的双色球号码为:", zixuan_number)

# 使用循环来模拟自选的1注双色球号码,将在多少次中中奖
count = 0
while True:
    count += 1
    shuangseqiu_number = shuangseqiu()
    if shuangseqiu_number == zixuan_number:
        print("你投注的双色球号码为:", zixuan_number)
        print(f"在摇奖{count}次后中奖!中奖号码为:", shuangseqiu_number)
        break
#    else:
#        print(f"在摇奖{count}次后未中奖,本次双色号码为:", shuangseqiu_number, "请继续摇...")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
问题分析与修复建议

你提供的双色球模拟程序整体思路是正确的,但在函数 zixuannumber() 中存在两个关键的语法错误,导致程序无法运行:

  • 变量 redballzixuan_listblueballzixuan_list 没有初始化;
  • 用户输入的红球号码没有排序,可能导致与系统生成的号码不一致。


修复后的完整代码如下:
import random

def shuangseqiu():
    redball_list = random.sample(range(1, 34), 6)
    redball_list.sort()
    blueball = random.sample(range(1, 17), 1)
    blueball_list = list(blueball)
    return redball_list, blueball_list

def zixuannumber():
    redballzixuan_list = []
    for i in range(6):
        redballzixuan_list.append(int(input(f"请输入第{i+1}个红球号码:")))
    redballzixuan_list.sort()
    blueballzixuan = int(input("请输入蓝球号码:"))
    blueballzixuan_list = [blueballzixuan]
    return redballzixuan_list, blueballzixuan_list

print("欢迎来到双色球游戏!")
print("请输入1开始自选双色球号码,2开始随机号码:")
choice = int(input())
if choice == 1:
    print("自选号码:红球6个,篮球1个, 红球范围1-33,蓝球范围1-16,红球需按顺序填写")
    zixuan_number = zixuannumber()
elif choice == 2:
    print("系统为你随机选择号码:红球6个,篮球1个")
    zixuan_number = shuangseqiu()
else:
    print("输入错误,程序自动退出")
    exit()

print("本次你选择的双色球号码为:", zixuan_number)

count = 0
while True:
    count += 1
    shuangseqiu_number = shuangseqiu()
    if shuangseqiu_number == zixuan_number:
        print("你投注的双色球号码为:", zixuan_number)
        print(f"在摇奖{count}次后中奖!中奖号码为:", shuangseqiu_number)
        break

温馨提示:
  • 这个程序可能运行非常久,因为中奖概率极低(约为1/1770万);
  • 你可以设置一个最大循环次数,比如1000000次,避免程序无限运行;
  • 也可以加入每隔一定次数打印一次进度,方便观察。


如果你需要我帮你加上这些功能,也可以告诉我哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-3 04:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表