4

Python生成随机幸运号码

 8 months ago
source link: https://blog.51cto.com/u_16379005/8925415
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python生成随机幸运号码

精选 原创

wx65602fa627551 2023-12-21 16:51:01 博主文章分类:Python整活了 ©著作权

文章标签 Python 随机数 幸运号码 文章分类 软件测试 阅读数234

今天,有同学邀请我一起去买颜色艳丽的票。可是我完全不知道该如何操作和选择号码。于是乎我产生了一个大胆的想法:为何不尝试使用Python来生成随机的幸运号码呢?

在未来的颜色艳丽的票购买中,我将不再迷茫和紧张。只需轻轻一点,就可以生成两注充满幸运的随机号码。那么,接下来就让我来为大家介绍如何使用Python来生成超级彩票和彩色球票的随机号码吧!

二、分步实现

选号规则分析

超级彩票:前区1-35选5,后区1-12选2

彩色球票:红球1-33选6,篮球1-16选1

利用Python自带的random库就可以实现我们的随机选号

随机号码生成

创建一个方法,区分类型和数量,利用循环和random生成随机号码

这里先生成超级彩票的前区号码,需要注意颜色艳丽的票号码都有前导0,比如01 04 06

import random


def generate_winning_ticket(ticket_type, ticket_num):
    for n in range(ticket_num):  # 遍历数量
        # 超级彩票
        if ticket_type == 0:
            # ------------前区------------
            # 范围列表
            sample_list = []
            for i in range(35):
                sample_list.append(i + 1)
            # 抽取随机列表
            ran_list = random.sample(sample_list, 5)
            # 随机列表排序
            ran_list.sort()
            # 拼接前区号码
            front_section = []
            for j in ran_list:
                if len(str(j)) < 2:
                    front_section.append(f"0{str(j)}")
                else:
                    front_section.append(str(j))
            print(front_section)
        # 彩色球票
        elif ticket_type == 1:
            pass
        # 其他
        else:
            print("无效的类型(超级彩票--0;彩色球票--1)")


if __name__ == "__main__":
    generate_winning_ticket(0, 3)

运行效果:

Python生成随机幸运号码_Python

复制并修改以上代码的取值范围和取值数量即可生成后区号码

同理,可生成彩色球票的号码

为了美观一些,使用转义码来控制打印的颜色和样式

import random


def generate_winning_ticket(ticket_type, ticket_num):
    for n in range(ticket_num):  # 遍历数量
        # 超级彩票
        if ticket_type == 0:
            # ------------前区------------
            # 范围列表
            sample_list = []
            for i in range(35):
                sample_list.append(i + 1)
            # 抽取随机列表
            ran_list = random.sample(sample_list, 5)
            # 随机列表排序
            ran_list.sort()
            # 拼接前区号码
            front_section = []
            for j in ran_list:
                if len(str(j)) < 2:
                    front_section.append(f"0{str(j)}")
                else:
                    front_section.append(str(j))
            # ------------后区------------
            # 范围列表
            sample_list = []
            for i in range(12):
                sample_list.append(i + 1)
            # 抽取随机列表
            ran_list = random.sample(sample_list, 2)
            # 随机列表排序
            ran_list.sort()
            # 拼接前区号码
            back_section = []
            for j in ran_list:
                if len(str(j)) < 2:
                    back_section.append(f"0{str(j)}")
                else:
                    back_section.append(str(j))
            # 美化控制台打印
            print(f"\033[1;31m{' '.join(front_section)}\033[0m", end="")  # 前区号码,红色加粗
            print(f"\033[1;38m{' + '}\033[0m", end="")  # ”+“,加粗
            print(f"\033[1;34m{' '.join(back_section)}\033[0m")  # 后区号码,蓝色加粗
        # 彩色球票
        elif ticket_type == 1:
            # ------------前区------------
            # 范围列表
            sample_list = []
            for i in range(33):
                sample_list.append(i + 1)
            # 抽取随机列表
            ran_list = random.sample(sample_list, 6)
            # 随机列表排序
            ran_list.sort()
            # 拼接前区号码
            front_section = []
            for j in ran_list:
                if len(str(j)) < 2:
                    front_section.append(f"0{str(j)}")
                else:
                    front_section.append(str(j))
            # ------------后区------------
            # 范围列表
            sample_list = []
            for i in range(16):
                sample_list.append(i + 1)
            # 抽取随机列表
            ran_list = random.sample(sample_list, 1)
            # 随机列表排序
            ran_list.sort()
            # 拼接前区号码
            back_section = []
            for j in ran_list:
                if len(str(j)) < 2:
                    back_section.append(f"0{str(j)}")
                else:
                    back_section.append(str(j))
            # 美化控制台打印
            print(f"\033[1;31m{' '.join(front_section)}\033[0m", end="")  # 前区号码,红色加粗
            print(f"\033[1;38m{' + '}\033[0m", end="")  # ”+“,加粗
            print(f"\033[1;34m{' '.join(back_section)}\033[0m")  # 后区号码,蓝色加粗
        # 其他
        else:
            print("无效的类型(超级彩票--0;彩色球票--1)")


if __name__ == "__main__":
    # 两注超级彩票
    generate_winning_ticket(0, 2)
    # 两注彩色球票
    generate_winning_ticket(1, 2)

运行效果:

Python生成随机幸运号码_Python_02

程序代码优化

为使代码方便阅读和维护,优化如下:

1.模块化,将公共的部分提取出来

2.添加并优化为更详细的注释

3.使用列表推导式,简化代码

import random


def generate_lucky_num(lucky_range: int, lucky_num: int):
    """
    生成随机幸运号码
    :param lucky_range: 幸运数字范围
    :param lucky_num: 幸运数字数量
    :return:
    """
    ran_list = random.sample([i + 1 for i in range(lucky_range)], lucky_num)  # 在1-lucky_range范围内随机生成lucky_num个数字
    ran_list.sort()  # 从小到大排序
    lucky_num_list = [str(i).zfill(2) for i in ran_list]  # 转换为字符串并添加前导0
    return lucky_num_list


def generate_winning_ticket(ticket_type: int, ticket_num: int):
    """
    生成彩票号码
    :param ticket_type: 类型(超级彩票--0;彩色球票--1)
    :param ticket_num: 数量
    :return:
    """
    tickets = []  # 定义号码列表
    for n in range(ticket_num):  # 遍历数量
        # 超级彩票
        if ticket_type == 0:
            front_section = generate_lucky_num(35, 5)  # 前区号码
            back_section = generate_lucky_num(12, 2)  # 后区号码
        # 彩色球票
        elif ticket_type == 1:
            front_section = generate_lucky_num(33, 6)  # 前区号码
            back_section = generate_lucky_num(16, 1)  # 后区号码
        # 其他
        else:
            return "无效的类型(超级彩票--0;彩色球票--1)"
        tickets.append(" ".join(front_section + ["+"] + back_section))  # 拼接号码
    return tickets


if __name__ == "__main__":
    # 三注超级彩票
    print(generate_winning_ticket(0, 3))
    # 两注彩色球票
    print(generate_winning_ticket(1, 2))

运行效果:

Python生成随机幸运号码_幸运号码_03

1.只用到Python自带的random库,不涉及第三方库

2.使用random.sample函数实现从指定数字序列中随机抽样

3.输出号码为添加前导0的字符串,使得号码更加规整

4.优化了代码,使得逻辑清晰,简单明了

5.实际使用时在PyCharm中手动运行,可用性不高

6.彩票开奖结果是完全随机的,没有任何规律可言,任何预测彩票开奖结果的言论和行为都是不科学的,应该保持理性,不要过度投注,以免影响生活和家庭

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK