Python之random和string库学习

news2024/11/28 20:42:45

一、random库

random是python中用来生存随机数的库。具体用法如下:

1、生成一个0到1随机浮点数

random.random()

2、生成一个a到b的随机浮点数

random.uniform(1,2)

3、生成一个a到b之间的整数

random.randint(a,b)

4、随机从序列元素中取出一个值,这个序列可以是字符串、列表或元组。

random.choice()

5、随机从序列中取出k个值,并以列表形式返回,这个序列可以是字符串、列表或元组;

random.sample(序列, k)

6、洗牌,随机打乱列表中的元素;

random.shuffle()

7、设置随机数种子,当设定好种子之后(其中x可以是任意数字),每次调用生成的随机数将会是同一个;

random.seed(x)

二、string库

1、返回大小写字母组合而成的字符串;

print(string.ascii_letters)

2、返回小写字母组合而成的字符串;

print(string.ascii_lowercase)

3、返回大写字母组合而成的字符串;

print(string.ascii_uppercase)

4、返回0-9数字组合而成的字符串;

print(string.digits)

5、返回所有特殊字符组合而成的字符串;

print(string.punctuation)

三、双库组合实例

1、random库批量生成手机号码

import random

def create_phone(num):
    # 用于存放生成的数据
    t_set = set()
    # 用于存放号段
    yidonglist = [134, 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187]
    liantonglist = [130, 131, 132, 155, 156, 166, 185, 186, 145, 176]
    dianxinlist = [133, 153, 177, 173, 180, 181, 189, 199]
    
    t_list = input("请输入要生成的运营商名称(移动、联通、电信):")
    if t_list == "移动":
        t_list = yidonglist
    elif t_list == "联通":
        t_list = liantonglist
    elif t_list == "电信":
        t_list = dianxinlist
    else:
        print("请输入有效的运营商名称!!!")
        exit()

    while True:
        top_three = random.choice(t_list)
        last_eight = random.sample([str(i) for i in range(10)], 8)
        concat_last_eight = "".join(last_eight)
        t_set.add(f"{top_three}{concat_last_eight}")
        if len(t_set) >= num:
            break
    return t_set

def start():
    num = int(input("请输入你想要生成多少个电话号码:"))
    t_set = create_phone(num)
    
    save_to_file = input("是否要将生成的号码保存到文件中?(输入 '是' 或 '否'):")
    if save_to_file.lower() == '是':
        filenames = input("请输入文件名称:")
        with open(filenames, 'w') as file:
            for nums in t_set:
                file.write(nums + '\n')
        print(f"号码已保存到文件 {filenames} 中。")
    elif save_to_file.lower() == '否':
        print("生成的号码如下:")
        for nums in t_set:
            print(nums)
    else:
        print("无效的输入。请输入 '是' 或 '否'。")

start()

2、random+string库生成随机不重复车牌号

import random

def generate_license_plate(province, num_plates):
    plates = []

    for _ in range(num_plates):
        if province == "沪":  # 上海车牌
            plate_number = f"{province}{random.choice(['A', 'B', 'C', 'D', 'E'])}{random.randint(0, 9)}{random.choice(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'])}{random.randint(1000, 9999)}"
        elif province == "京":  # 北京车牌
            plate_number = f"{province}{random.choice(['A', 'B', 'C', 'E', 'F'])}{random.randint(0, 9)}{random.choice(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'])}{random.randint(10000, 99999)}"
        elif province == "粤":  # 广东车牌
            plate_number = f"{province}{random.choice(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'])}{random.choice(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'])}{random.randint(1000, 9999)}"
        # 可以继续添加其他省份的车牌生成规则

        plates.append(plate_number)

    return plates

def main():
    province = input("请输入省份简称(例如,沪、京、粤等): ")
    num_plates = int(input("请输入要生成的车牌数量: "))

    if province:
        write_to_file = input("是否要将生成的车牌号码写入文件?(输入 '是' 或 '否'):")
        license_plates = generate_license_plate(province, num_plates)
        if write_to_file.lower() == '是':
            filenames = input("请输入文件名称:")
            with open(filenames, 'w',encoding='utf-8') as file:
                for plate in license_plates:
                    file.write(plate + '\n')
            print(f"生成的{province}省车牌号码已保存到文件 {filenames} 中。")
        elif write_to_file.lower() == '否':
            print(f"{province}省生成的车牌号码如下:")
            for plate in license_plates:
                print(plate)
        else:
            print("无效的输入。请输入 '是' 或 '否'。")
    else:
        print("请输入有效的省份简称。")

if __name__ == "__main__":
    main()
import string
import random

def create_license(num):
    t_set = set()
    while True:
        t_list = [f"鄂{i}" for i in string.ascii_uppercase.split("T")[0] if i not in ["I","O"]]
        top_two = random.choice(t_list)
        the_third = random.choice(string.ascii_uppercase)
        last_four = random.sample([str(i) for i in range(10)],4)
        concat_last_four = "".join(last_four)
        t_set.add(f"{top_two}·{the_third}{concat_last_four}")
        if len(t_set) >= num:
            break
    return t_set

def start():
    num = int(input("请输入你想要生成多少个车牌:"))
    t_set = create_license(num)
    save_to_file = input("是否要将生成的号码保存到文件中?(输入 '是' 或 '否'):")
    if save_to_file.lower() == '是':
        filenames = input("请输入文件名称:")
        with open(filenames, 'w',encoding='utf-8') as file:
            for nums in t_set:
                file.write(nums + '\n')
        print(f"生成的湖北省车牌号码已保存到文件 {filenames} 中。")
    elif save_to_file.lower() == '否':
        print("生成的湖北省车牌号码如下:")
        for nums in t_set:
            print(nums)
    else:
        print("无效的输入。请输入 '是' 或 '否'。")
start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1300171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的学校在线学习系统

开发环境 IDEA JDK1.8 MySQL8.0Node 系统简介 本系统拥有管理员,教师,学生三种身份登录,管理员登录可以查看所有信息,教师登录可以发布作业,查看试卷,回答问题等,学校登录可以查看作业&…

低代码还是好用的,我持有这个观念

低代码开发是近年来迅速崛起的软件开发方法,让编写应用程序变得更快、更简单。 有人说它是美味的膳食,让开发过程高效而满足,但也有人质疑它是垃圾食品,缺乏定制性与深度。 你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0…

minio的k8s的单机部署

minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…

基于Java swing的医院信息管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

c++-定长内存池

文章目录 前言一、定长内存池 前言 一、定长内存池 我们知道申请内存使用的是malloc,malloc其实就是一个通用的申请函数,什么场景下都可以用,但是什么场景下都可以用就意味着什么场景下都不会有很高的性能,下面我们来设计一个定…

Windows安装Maven

一、Maven 是什么? Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。 在有多个开发团…

Flutter笔记:滑块及其实现分析1

Flutter笔记 滑块分析1 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134900784 本文从设计角度&#…

一个通用游戏后台的设计模式实践总结

搞业务开发的时候,发现有一些代码的开发会让人感觉非常简便舒服,有一些代码的开发却有时候会让人感觉心智负担比较大。 逐步总结的过程中,发现让开发人员写起来感觉舒服的代码,大概率是因为当前模块与其他模块代码耦合度低,开发人员无需花费过多的精力去关注其他模块的实现…

基于java swing 药品销售管理系统

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

Integer和int相比较

Integer和int相比较 一、 Integer类 在Java中,”万物皆对象“,但是八种基本数据类型是个例外,出于性能等方面的考虑,八种基本数据类型没有类和对象的概念,相应的变量值直接在栈内存中存放。但这带来了一些问题&#…

根据对数器找规律、根据数据量猜题目解法

题目一 小虎去买苹果,商店只提供两种类型的塑料袋,每种类型都有任意数量。1)能装下6个苹果的袋子2)能装下8个苹果的袋子小虎可以自由使用两种袋子来装苹果,但是小虎有强迫症,他要求自己使用的袋子数量必须…

NAND闪存市场2023年Q3增长2.9%,Q4有望激增20%

TrendForce报告显示,NAND闪存市场在2023年第三季度出现了关键转折,主要由三星的战略性减产决定驱动。最初,市场对终端用户需求的不确定性以及对平淡旺季的担忧导致买家采取保守的方法,库存低、采购慢。然而,随着三星等…

Go压测工具

前言 在做Go的性能分析调研的时候也使用到了一些压测方面的工具,go本身也给我们提供了BenchMark性能测试用例,可以很好的去测试我们的单个程序性能,比如测试某个函数,另外还有第三方包go-wrk也可以帮助我们做http接口的性能压测&…

「Verilog学习笔记」多bit MUX同步器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 输入数据暂存在data_reg中,使能信号data_en用打两拍的方式跨时钟域传输到时钟域B,最后data_out根据使能信号更新数据。data_en信号在A时钟域用一个D…

【QED】高昂的猫 Ⅰ

目录 题目背景题目描述输入格式输出格式 测试样例样例说明数据范围 思路核心代码 题目背景 这是小橘。因为它总是看起来很高傲,所以人送外号“高昂的猫”。 题目描述 "锕狗"的房间里放着 n n n ( 1 ≤ n ≤ 1 0 9 ) (1 \leq n \leq 10^9) (1≤n≤109)个…

忘记PDF密码了,怎么办?

PDF文件有两种密码,一个打开密码、一个限制编辑密码,因为PDF文件设置了密码,那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密? PDF和office一样,可以对文件进行加密,但是没有提供恢复密码的功…

C++设计模式——Adapter(适配器)模式

一、Adapter模式是个啥? 适配器模式在软件开发的江湖里,可以说用途是非常广的。下面几个经典的场景来说明适配器模式的使用。 场景一 场景二 假如你正在开发一款股票市场监测程序, 它会从不同来源下载 XML 格式的股票数据, 然后…

USB host是如何区分reset、disconnect以及suspend?

如题。 reset和disconnect 在OTG2.0中,当其配置程host模式,当host发送reset时D/D-线都为低电平,这是USB协议侧的复位(与上电复位不同,协议上的复位是为了对连接的dev进行枚举,例如对端点0进行set address…

分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测

分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测 目录 分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类…

完整方案开放下载!详解中国移动《通信网络中量子计算应用研究报告》

8月30日,中国移动在第四届科技周暨战略性新兴产业共创发展大会上重磅发布了《通信网络中量子计算应用研究报告》。 玻色量子作为中国移动在光量子计算领域的唯一一家合作企业兼战投企业,在量子计算应用于通信行业达成了深入合作,并在5G天线多…