找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 7624|回复: 2

[代码与实例] 大乐透模拟中奖器

4

主题

10

帖子

10

积分

贫民

积分
10
QQ
Blue天空 发表于 2017-4-30 10:46:40 | 显示全部楼层 |阅读模式
本帖最后由 Blue天空 于 2017-4-30 10:48 编辑

最近在学习Python,本想复习一下所学到的东西,无意间看到大乐透中奖信息,就打算自己做一个,模拟一下大乐透的中奖几率。

下面是大乐透模拟中奖的代码,同学们可以自己试试。
已知问题:
1.手动输入竞猜的数字没有做范围判断和类型判断,
2.五等奖中奖判断只做了一种,
3.只做了中奖输出,导致三四等奖的输出较混乱,

有兴趣的同学可以根据以上三个问题完善一下该代码。


小白一个,刚把函数和类学完,有什么更好的方法也请大家指点一下!谢谢!!!!

  1. from random import randint

  2. caipiao = []
  3. i = 1

  4. #   随机生成不重复的大乐透数字
  5. while i <= 1000:
  6.     a = randint(1,35)
  7.     b = randint(1,35)
  8.     while True:
  9.         if b == a:
  10.             b = randint(1,35)
  11.         else:
  12.             break

  13.     c = randint(1,35)
  14.     while True:
  15.         if c == a:
  16.             c = randint(1,35)
  17.         elif c == b:
  18.             c = randint(1,35)
  19.         else:
  20.             break

  21.     d = randint(1,35)
  22.     while True:
  23.         if d == a:
  24.             d = randint(1,35)
  25.         elif d == b:
  26.             d = randint(1,35)
  27.         elif d == c:
  28.             d = randint(1,35)
  29.         else:
  30.             break

  31.     e = randint(1,35)
  32.     while True:
  33.         if e == a:
  34.             e = randint(1,35)
  35.         elif e == b:
  36.             e = randint(1,35)
  37.         elif e == c:
  38.             e = randint(1,35)
  39.         elif e == d:
  40.             e = randint(1,35)
  41.         else:
  42.             break

  43.     f = randint(1,16)

  44.     g = randint(1,16)
  45.     while True:
  46.         if g == f:
  47.             g = randint(1,16)
  48.         else:
  49.             break
  50. #   用字符串输出大乐透号码
  51.     caipiao_d = []
  52.     caipiao_d.append(str(a))
  53.     caipiao_d.append(str(b))
  54.     caipiao_d.append(str(c))
  55.     caipiao_d.append(str(d))
  56.     caipiao_d.append(str(e))
  57.     caipiao_d.append(str(f))
  58.     caipiao_d.append(str(g))

  59.     caipiao.append(caipiao_d)

  60.     i += 1

  61. #   手动输入要竞猜的数字
  62. aa = str(input('请输入第1位数(1-35):'))
  63. bb = str(input('请输入第2位数(1-35):'))
  64. cc = str(input('请输入第3位数(1-35):'))
  65. dd = str(input('请输入第4位数(1-35):'))
  66. ee = str(input('请输入第5位数(1-35):'))
  67. ff = str(input('请输入第6位数(1-16):'))
  68. gg = str(input('请输入第7位数(1-16):'))
  69. my_cai = [aa,bb,cc,dd,ee,ff]


  70. #   判断是否中奖
  71. for caips in caipiao:
  72.     my_c_z = []
  73.     for caip in caips[:5]:
  74.         if caip in my_cai[:5]:
  75.             my_c_z.append(caip)

  76.     for caip in caips[-2:]:
  77.         if caip in my_cai[-2:]:
  78.             my_c_z.append(caip)
  79.     aa = len(my_c_z)
  80. #   判断中奖的等级
  81.     if aa == 3:
  82.         print(caips)
  83.         print('五等奖')
  84.         print(my_c_z)
  85.         print('您的中奖号码为:')
  86.         print(my_cai)
  87.         print('\n\n')
  88.     elif aa == 4:
  89.         print(caips)
  90.         print('四等奖')
  91.         print(my_c_z)
  92.         print('您的中奖号码为:')
  93.         print(my_cai)
  94.         print('\n\n')
  95.     elif aa == 5:
  96.         print(caips)
  97.         print('三等奖')
  98.         print(my_c_z)
  99.         print('您的中奖号码为:')
  100.         print(my_cai)
  101.         print('\n\n')
  102.     elif aa == 6:
  103.         print(caips)
  104.         print('二等奖')
  105.         print(my_c_z)
  106.         print('您的中奖号码为:')
  107.         print(my_cai)
  108.         print('\n\n')
  109.     elif aa == 7:
  110.         print(caips)
  111.         print('一等奖')
  112.         print(my_c_z)
  113.         print('您的中奖号码为:')
  114.         print(my_cai)
  115.         print('\n\n')
复制代码


回复

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
GIL 发表于 2017-5-5 17:02:13 | 显示全部楼层
import random


def check_common_num(num_list):
    if len(set(num_list)) == len(num_list):
        return True
    return False


def get_common_num(count=6):
    num_list = []
    for _ in xrange(count):
        num_list.append(random.randint(1, 35))
    return num_list


def get_special_num():
    return random.randint(1, 16)


if __name__ == "__main__":
    while True:
        num_list = get_common_num()
        if check_common_num(num_list):
            break
    num_list.append(get_special_num())
    print num_list

生成不重复的list没这么复杂。。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
jia6520408 发表于 2017-11-9 13:48:16 | 显示全部楼层

老哥稳,
回复 支持 反对

使用道具 举报

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

本版积分规则

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