angehl1987 发表于 4 天前

模拟双色球摇奖,看看多少次能摇中你自选的号码。

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

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 =
    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, "请继续摇...")

FishC 发表于 4 天前

问题分析与修复建议

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


[*]变量 redballzixuan_list 和 blueballzixuan_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 =
    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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 模拟双色球摇奖,看看多少次能摇中你自选的号码。