当前位置: 首页 > article >正文

Python之random和string库学习

一、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.kler.cn/a/160630.html

相关文章:

  • 华为云前台用户可挂载数据盘和系统盘是怎么做到的?
  • 408模拟卷较难题(无分类)
  • vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await
  • docker配置代理解决不能拉镜像问题
  • jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试
  • 鸿蒙next版开发:ArkTS组件点击事件详解
  • XIAO ESP32S3之AI教程
  • 外包干了一个月,技术明显进步。。。。。
  • 如何5分钟用ChatGPT分析大厂的最新动向?判断最新发展趋势
  • Nginx配置反向代理与负载均衡
  • elasticsearch 是如何实现 master 选举的?
  • UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Nginx的反向代理与负载均衡
  • 人工智能学习8(集成学习之xgboost)
  • 配置和管理VLAN
  • 探究Spring Boot 中实现跨域的几种方式
  • 基因名潘多拉
  • 编程应用实例,养生馆会员管理系统软件统计查询教程
  • 制作飞腾(arm)芯片架构的nexus镜像
  • 朝花夕拾华山平台流水账
  • 智慧景区(园区)数字孪生可视化GIS解决方案
  • Linux自启服务提示:systemd[1]: *.service: main process exited, code=exited, status=1问题
  • 创建Vue2项目,引入chart.js,并生成柱形图
  • gradle 启动报错,CreateProcess error=206, 文件名或扩展名太长
  • html css样式选择器介绍